taslim19
MusicV2
a8e9b84
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