from pyrogram import filters from pyrogram.types import Message from DragMusic import app from DragMusic.core.call import Drag from DragMusic.misc import SUDOERS, db from DragMusic.utils import AdminRightsCheck from DragMusic.utils.database import is_active_chat, is_nonadmin_chat from DragMusic.utils.decorators.language import languageCB from DragMusic.utils.inline import close_markup, speed_markup from config import BANNED_USERS, adminlist checker = [] @app.on_message( filters.command(["cspeed", "speed", "cslow", "slow", "playback", "cplayback"]) & filters.group & ~BANNED_USERS ) @AdminRightsCheck async def playback(cli, message: Message, _, chat_id): playing = db.get(chat_id) if not playing: return await message.reply_text(_["queue_2"]) duration_seconds = int(playing[0]["seconds"]) if duration_seconds == 0: return await message.reply_text(_["admin_27"]) file_path = playing[0]["file"] if "downloads" not in file_path: return await message.reply_text(_["admin_27"]) upl = speed_markup(_, chat_id) return await message.reply_text( text=_["admin_28"].format(app.mention), reply_markup=upl, ) @app.on_callback_query(filters.regex("SpeedUP") & ~BANNED_USERS) @languageCB async def del_back_playlist(client, CallbackQuery, _): callback_data = CallbackQuery.data.strip() callback_request = callback_data.split(None, 1)[1] chat, speed = callback_request.split("|") chat_id = int(chat) if not await is_active_chat(chat_id): return await CallbackQuery.answer(_["general_5"], show_alert=True) is_non_admin = await is_nonadmin_chat(CallbackQuery.message.chat.id) if not is_non_admin: if CallbackQuery.from_user.id not in SUDOERS: admins = adminlist.get(CallbackQuery.message.chat.id) if not admins: return await CallbackQuery.answer(_["admin_13"], show_alert=True) else: if CallbackQuery.from_user.id not in admins: return await CallbackQuery.answer(_["admin_14"], show_alert=True) playing = db.get(chat_id) if not playing: return await CallbackQuery.answer(_["queue_2"], show_alert=True) duration_seconds = int(playing[0]["seconds"]) if duration_seconds == 0: return await CallbackQuery.answer(_["admin_27"], show_alert=True) file_path = playing[0]["file"] if "downloads" not in file_path: return await CallbackQuery.answer(_["admin_27"], show_alert=True) checkspeed = (playing[0]).get("speed") if checkspeed: if str(checkspeed) == str(speed): if str(speed) == str("1.0"): return await CallbackQuery.answer( _["admin_29"], show_alert=True, ) else: if str(speed) == str("1.0"): return await CallbackQuery.answer( _["admin_29"], show_alert=True, ) if chat_id in checker: return await CallbackQuery.answer( _["admin_30"], show_alert=True, ) else: checker.append(chat_id) try: await CallbackQuery.answer( _["admin_31"], ) except: pass mystic = await CallbackQuery.edit_message_text( text=_["admin_32"].format(CallbackQuery.from_user.mention), ) try: await Drag.speedup_stream( chat_id, file_path, speed, playing, ) except: if chat_id in checker: checker.remove(chat_id) return await mystic.edit_text(_["admin_33"], reply_markup=close_markup(_)) if chat_id in checker: checker.remove(chat_id) await mystic.edit_text( text=_["admin_34"].format(speed, CallbackQuery.from_user.mention), reply_markup=close_markup(_), )