Spaces:
Paused
Paused
| import asyncio | |
| from pyrogram.enums import ChatMemberStatus | |
| from pyrogram.errors import ( | |
| ChatAdminRequired, | |
| InviteRequestSent, | |
| UserAlreadyParticipant, | |
| UserNotParticipant, | |
| ) | |
| from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup | |
| from DragMusic import YouTube, app | |
| from DragMusic.misc import SUDOERS | |
| from DragMusic.utils.database import ( | |
| get_assistant, | |
| get_cmode, | |
| get_lang, | |
| get_playmode, | |
| get_playtype, | |
| is_active_chat, | |
| is_maintenance, | |
| ) | |
| from DragMusic.utils.inline import botplaylist_markup | |
| from config import PLAYLIST_IMG_URL, SUPPORT_CHAT, adminlist | |
| from strings import get_string | |
| links = {} | |
| def PlayWrapper(command): | |
| async def wrapper(client, message): | |
| language = await get_lang(message.chat.id) | |
| _ = get_string(language) | |
| if message.sender_chat: | |
| upl = InlineKeyboardMarkup( | |
| [ | |
| [ | |
| InlineKeyboardButton( | |
| text="ʜᴏᴡ ᴛᴏ ғɪx ?", | |
| callback_data="DragmousAdmin", | |
| ), | |
| ] | |
| ] | |
| ) | |
| return await message.reply_text(_["general_3"], reply_markup=upl) | |
| if await is_maintenance() is False: | |
| if message.from_user.id not in SUDOERS: | |
| return await message.reply_text( | |
| text=f"{app.mention} ɪs ᴜɴᴅᴇʀ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ, ᴠɪsɪᴛ <a href={SUPPORT_CHAT}>sᴜᴘᴘᴏʀᴛ ᴄʜᴀᴛ</a> ғᴏʀ ᴋɴᴏᴡɪɴɢ ᴛʜᴇ ʀᴇᴀsᴏɴ.", | |
| disable_web_page_preview=True, | |
| ) | |
| try: | |
| await message.delete() | |
| except: | |
| pass | |
| audio_telegram = ( | |
| (message.reply_to_message.audio or message.reply_to_message.voice) | |
| if message.reply_to_message | |
| else None | |
| ) | |
| video_telegram = ( | |
| (message.reply_to_message.video or message.reply_to_message.document) | |
| if message.reply_to_message | |
| else None | |
| ) | |
| url = await YouTube.url(message) | |
| if audio_telegram is None and video_telegram is None and url is None: | |
| if len(message.command) < 2: | |
| if "stream" in message.command: | |
| return await message.reply_text(_["str_1"]) | |
| buttons = botplaylist_markup(_) | |
| return await message.reply_photo( | |
| photo=PLAYLIST_IMG_URL, | |
| caption=_["play_18"], | |
| reply_markup=InlineKeyboardMarkup(buttons), | |
| ) | |
| if message.command[0][0] == "c": | |
| chat_id = await get_cmode(message.chat.id) | |
| if chat_id is None: | |
| return await message.reply_text(_["setting_7"]) | |
| try: | |
| chat = await app.get_chat(chat_id) | |
| except: | |
| return await message.reply_text(_["cplay_4"]) | |
| channel = chat.title | |
| else: | |
| chat_id = message.chat.id | |
| channel = None | |
| playmode = await get_playmode(message.chat.id) | |
| playty = await get_playtype(message.chat.id) | |
| if playty != "Everyone": | |
| if message.from_user.id not in SUDOERS: | |
| admins = adminlist.get(message.chat.id) | |
| if not admins: | |
| return await message.reply_text(_["admin_13"]) | |
| else: | |
| if message.from_user.id not in admins: | |
| return await message.reply_text(_["play_4"]) | |
| if message.command[0][0] == "v": | |
| video = True | |
| else: | |
| if "-v" in message.text: | |
| video = True | |
| else: | |
| video = True if message.command[0][1] == "v" else None | |
| if message.command[0][-1] == "e": | |
| if not await is_active_chat(chat_id): | |
| return await message.reply_text(_["play_16"]) | |
| fplay = True | |
| else: | |
| fplay = None | |
| if not await is_active_chat(chat_id): | |
| userbot = await get_assistant(chat_id) | |
| try: | |
| try: | |
| get = await app.get_chat_member(chat_id, userbot.id) | |
| except ChatAdminRequired: | |
| return await message.reply_text(_["call_1"]) | |
| if ( | |
| get.status == ChatMemberStatus.BANNED | |
| or get.status == ChatMemberStatus.RESTRICTED | |
| ): | |
| return await message.reply_text( | |
| _["call_2"].format( | |
| app.mention, userbot.id, userbot.name, userbot.username | |
| ) | |
| ) | |
| except UserNotParticipant: | |
| if chat_id in links: | |
| invitelink = links[chat_id] | |
| else: | |
| if message.chat.username: | |
| invitelink = message.chat.username | |
| try: | |
| await userbot.resolve_peer(invitelink) | |
| except: | |
| pass | |
| else: | |
| try: | |
| invitelink = await app.export_chat_invite_link(chat_id) | |
| except ChatAdminRequired: | |
| return await message.reply_text(_["call_1"]) | |
| except Exception as e: | |
| return await message.reply_text( | |
| _["call_3"].format(app.mention, type(e).__name__) | |
| ) | |
| if invitelink.startswith("https://t.me/+"): | |
| invitelink = invitelink.replace( | |
| "https://t.me/+", "https://t.me/joinchat/" | |
| ) | |
| myu = await message.reply_text(_["call_4"].format(app.mention)) | |
| try: | |
| await asyncio.sleep(1) | |
| await userbot.join_chat(invitelink) | |
| except InviteRequestSent: | |
| try: | |
| await app.approve_chat_join_request(chat_id, userbot.id) | |
| except Exception as e: | |
| return await message.reply_text( | |
| _["call_3"].format(app.mention, type(e).__name__) | |
| ) | |
| await asyncio.sleep(3) | |
| await myu.edit(_["call_5"].format(app.mention)) | |
| except UserAlreadyParticipant: | |
| pass | |
| except Exception as e: | |
| return await message.reply_text( | |
| _["call_3"].format(app.mention, type(e).__name__) | |
| ) | |
| links[chat_id] = invitelink | |
| try: | |
| await userbot.resolve_peer(chat_id) | |
| except: | |
| pass | |
| return await command( | |
| client, | |
| message, | |
| _, | |
| chat_id, | |
| video, | |
| channel, | |
| playmode, | |
| url, | |
| fplay, | |
| ) | |
| return wrapper | |