85 lines
2.7 KiB
Python
85 lines
2.7 KiB
Python
import json
|
|
import logging
|
|
import os
|
|
import traceback
|
|
from time import sleep
|
|
|
|
from telegram import Bot, InlineKeyboardMarkup, InlineKeyboardButton
|
|
from telegram.error import RetryAfter
|
|
|
|
from config.celery import app
|
|
from djconfig import config
|
|
|
|
|
|
@app.task(bind=True)
|
|
def upload_image_rpc(self, queued_image_pk, fpath, caption):
|
|
from .modules.channel_helper import QueuedItem
|
|
config._reload()
|
|
try:
|
|
logging.warning(f'Processing upload task for queued item #{queued_image_pk}')
|
|
qi = QueuedItem.objects.get(pk=queued_image_pk)
|
|
bot = qi.config.bot.get_bot()
|
|
if qi.config.queued:
|
|
m = bot.send_photo(
|
|
config.tmp_uploads_chat_id,
|
|
open(fpath, 'rb'),
|
|
caption=caption,
|
|
reply_markup=InlineKeyboardMarkup([[
|
|
InlineKeyboardButton('Delete', callback_data=f'del {queued_image_pk}')
|
|
]]),
|
|
)
|
|
qi.message_id = m.message_id
|
|
qi.args = json.dumps([m.photo[-1].file_id])
|
|
qi.save()
|
|
else:
|
|
bot.send_photo(
|
|
qi.config.chat_id,
|
|
open(fpath, 'rb'),
|
|
caption=caption,
|
|
)
|
|
qi.processed = True
|
|
qi.save()
|
|
os.unlink(fpath)
|
|
sleep(.3)
|
|
except RetryAfter as e:
|
|
raise self.retry(exc=e, countdown=int(e.retry_after))
|
|
except Exception as e:
|
|
traceback.print_exc()
|
|
raise self.retry(exc=e, countdown=5)
|
|
|
|
|
|
@app.task(bind=True)
|
|
def upload_animation_rpc(self, queued_image_pk, fpath, caption):
|
|
from .modules.channel_helper import QueuedItem
|
|
config._reload()
|
|
try:
|
|
logging.warning(f'Processing upload task for queued animation item #{queued_image_pk}')
|
|
qi = QueuedItem.objects.get(pk=queued_image_pk)
|
|
bot = qi.config.bot.get_bot()
|
|
if qi.config.queued:
|
|
m = bot.send_animation(
|
|
config.tmp_uploads_chat_id,
|
|
open(fpath, 'rb'),
|
|
caption=caption,
|
|
reply_markup=InlineKeyboardMarkup([[
|
|
InlineKeyboardButton('Delete', callback_data=f'del {queued_image_pk}')
|
|
]]),
|
|
)
|
|
qi.message_id = m.message_id
|
|
qi.args = json.dumps([m.animation.file_id])
|
|
qi.save()
|
|
else:
|
|
bot.send_animation(
|
|
qi.config.chat_id,
|
|
open(fpath, 'rb'),
|
|
caption=caption,
|
|
)
|
|
qi.processed = True
|
|
qi.save()
|
|
os.unlink(fpath)
|
|
except RetryAfter as e:
|
|
raise self.retry(exc=e, countdown=int(e.retry_after))
|
|
except Exception as e:
|
|
traceback.print_exc()
|
|
raise self.retry(exc=e, countdown=5)
|