import asyncio import time from pyrogram import filters from pyrogram.enums import ChatMembersFilter from pyrogram.types import CallbackQuery, Message from DragMusic import app from DragMusic.core.call import Drag from DragMusic.misc import db from DragMusic.utils.database import get_assistant, get_authuser_names, get_cmode from DragMusic.utils.decorators import ActualAdminCB, AdminActual, language from DragMusic.utils.formatters import alpha_to_int, get_readable_time from config import BANNED_USERS, adminlist, lyrical rel = {} @app.on_message( filters.command(["admincache", "reload", "refresh"]) & filters.group & ~BANNED_USERS ) @language async def reload_admin_cache(client, message: Message, _): try: if message.chat.id not in rel: rel[message.chat.id] = {} else: saved = rel[message.chat.id] if saved > time.time(): left = get_readable_time((int(saved) - int(time.time()))) return await message.reply_text(_["reload_1"].format(left)) adminlist[message.chat.id] = [] async for user in app.get_chat_members( message.chat.id, filter=ChatMembersFilter.ADMINISTRATORS ): if user.privileges.can_manage_video_chats: adminlist[message.chat.id].append(user.user.id) authusers = await get_authuser_names(message.chat.id) for user in authusers: user_id = await alpha_to_int(user) adminlist[message.chat.id].append(user_id) now = int(time.time()) + 180 rel[message.chat.id] = now await message.reply_text(_["reload_2"]) except: await message.reply_text(_["reload_3"]) @app.on_message(filters.command(["reboot"]) & filters.group & ~BANNED_USERS) @AdminActual async def restartbot(client, message: Message, _): mystic = await message.reply_text(_["reload_4"].format(app.mention)) await asyncio.sleep(1) try: db[message.chat.id] = [] await Drag.stop_stream_force(message.chat.id) except: pass userbot = await get_assistant(message.chat.id) try: if message.chat.username: await userbot.resolve_peer(message.chat.username) else: await userbot.resolve_peer(message.chat.id) except: pass chat_id = await get_cmode(message.chat.id) if chat_id: try: got = await app.get_chat(chat_id) except: pass userbot = await get_assistant(chat_id) try: if got.username: await userbot.resolve_peer(got.username) else: await userbot.resolve_peer(chat_id) except: pass try: db[chat_id] = [] await Drag.stop_stream_force(chat_id) except: pass return await mystic.edit_text(_["reload_5"].format(app.mention)) @app.on_callback_query(filters.regex("close") & ~BANNED_USERS) async def close_menu(_, query: CallbackQuery): try: await query.answer() await query.message.delete() umm = await query.message.reply_text( f"Cʟᴏsᴇᴅ ʙʏ : {query.from_user.mention}" ) await asyncio.sleep(7) await umm.delete() except: pass @app.on_callback_query(filters.regex("stop_downloading") & ~BANNED_USERS) @ActualAdminCB async def stop_download(client, CallbackQuery: CallbackQuery, _): message_id = CallbackQuery.message.id task = lyrical.get(message_id) if not task: return await CallbackQuery.answer(_["tg_4"], show_alert=True) if task.done() or task.cancelled(): return await CallbackQuery.answer(_["tg_5"], show_alert=True) if not task.done(): try: task.cancel() try: lyrical.pop(message_id) except: pass await CallbackQuery.answer(_["tg_6"], show_alert=True) return await CallbackQuery.edit_message_text( _["tg_7"].format(CallbackQuery.from_user.mention) ) except: return await CallbackQuery.answer(_["tg_8"], show_alert=True) await CallbackQuery.answer(_["tg_9"], show_alert=True)