import re from pyrogram import Client, filters from pyrogram.types import CallbackQuery from utils import filters as myfilters from utils.client import MyClient from utils.db import Depends, User, get_user_query, inject from utils.i18n import tr as _ from utils.queue import okru_queue, tg_download_queue DOWNLOAD_PATTERN = re.compile(r"^dts_(?P[0-9a-fA-F]{24}$)$") OKRU_PATTERN = re.compile(r"^ots_(?P[0-9a-fA-F]{24}$)$") @Client.on_callback_query(filters.regex(DOWNLOAD_PATTERN) & ~myfilters.is_banned) @inject async def check_dts( client: MyClient, query: CallbackQuery, user: User = Depends(get_user_query) ) -> None: task_id: str = query.matches[0].group("task_id") item = list(filter(lambda t: str(t.task.id) == task_id, tg_download_queue._queue)) if not item: await query.answer( _("video.task_not_found", locale=user.language), show_alert=True, cache_time=30 ) return index = tg_download_queue._queue.index(item[0]) await query.answer( _("video.task_status", count=index, locale=user.language), show_alert=True, cache_time=10 ) @Client.on_callback_query(filters.regex(OKRU_PATTERN) & ~myfilters.is_banned) @inject async def check_ots( client: MyClient, query: CallbackQuery, user: User = Depends(get_user_query) ) -> None: task_id: str = query.matches[0].group("task_id") item = list(filter(lambda t: str(t.task.id) == task_id, okru_queue._queue)) if not item: await query.answer( _("video.task_not_found", locale=user.language), show_alert=True, cache_time=30 ) return index = okru_queue._queue.index(item[0]) await query.answer( _("video.task_status", count=index, locale=user.language), show_alert=True, cache_time=10 )