|
|
|
@ -10,6 +10,7 @@ import imagehash
|
|
|
|
|
import requests
|
|
|
|
|
from PIL import Image
|
|
|
|
|
from django.db import models
|
|
|
|
|
from django.db.models import Q
|
|
|
|
|
from telegram import Update, Bot, InputMediaPhoto
|
|
|
|
|
from telegram.ext import Dispatcher, CallbackContext, MessageHandler, Filters, CommandHandler
|
|
|
|
|
from jsonrpc import Dispatcher as RPCDispatcher
|
|
|
|
@ -103,7 +104,9 @@ class ChannelHelperBotModuleConfig(TelegramBotModuleConfig):
|
|
|
|
|
duplicate = self.queued_items.filter(image_hash=i.image_hash, type='photo').first()
|
|
|
|
|
if duplicate:
|
|
|
|
|
try:
|
|
|
|
|
update.message.reply_photo(json.loads(duplicate.args)[0], f'Duplicate from {duplicate.datetime}', quote=True)
|
|
|
|
|
m = update.message.reply_photo(json.loads(duplicate.args)[0], f'Duplicate from {duplicate.datetime}', quote=True)
|
|
|
|
|
duplicate.message_ids_extra += f'|{m.message_id}'
|
|
|
|
|
duplicate.save()
|
|
|
|
|
except:
|
|
|
|
|
traceback.print_exc()
|
|
|
|
|
update.message.reply_text('Could not send duplicate original', quote=True)
|
|
|
|
@ -151,7 +154,8 @@ class ChannelHelperBotModuleConfig(TelegramBotModuleConfig):
|
|
|
|
|
return
|
|
|
|
|
reply_to_id = update.effective_message.reply_to_message.message_id
|
|
|
|
|
try:
|
|
|
|
|
msg = QueuedItem.objects.get(message_id=reply_to_id, config=self)
|
|
|
|
|
msg = QueuedItem.objects.get(Q(message_id=reply_to_id) | Q(message_ids_extra__contains=f'{reply_to_id}'),
|
|
|
|
|
config=self)
|
|
|
|
|
msg.delete()
|
|
|
|
|
update.effective_message.reply_text('Deleted')
|
|
|
|
|
except QueuedItem.DoesNotExist:
|
|
|
|
@ -188,6 +192,7 @@ class QueuedItem(models.Model):
|
|
|
|
|
type = models.CharField(max_length=12)
|
|
|
|
|
args = models.TextField()
|
|
|
|
|
message_id = models.PositiveBigIntegerField(default=None, db_index=True, null=True, blank=True)
|
|
|
|
|
message_ids_extra = models.TextField(db_index=True, default='')
|
|
|
|
|
image_hash = models.CharField(max_length=64, null=True, blank=True)
|
|
|
|
|
processed = models.BooleanField(default=False)
|
|
|
|
|
datetime = models.DateTimeField(auto_now_add=True)
|
|
|
|
|