import asyncio
import time
from pyrogram import filters
from pyrogram.enums import ChatType
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
from youtubesearchpython.__future__ import VideosSearch
import config
from DragMusic import app
from DragMusic.misc import _boot_
from DragMusic.plugins.sudo.sudoers import sudoers_list
from DragMusic.utils.database import (
add_served_chat,
add_served_user,
blacklisted_chats,
get_lang,
is_banned_user,
is_on_off,
)
from DragMusic.utils.decorators.language import LanguageStart
from DragMusic.utils.formatters import get_readable_time
from DragMusic.utils.inline import help_pannel, private_panel, start_panel
from config import BANNED_USERS, OWNER_ID
from strings import get_string
@app.on_message(filters.command(["start"]) & filters.private & ~BANNED_USERS)
@LanguageStart
async def start_pm(client, message: Message, _):
await add_served_user(message.from_user.id)
loading_1 = await message.reply_text("🔥")
await asyncio.sleep(0.3)
await loading_1.edit_text("ʟᴏᴀᴅɪɴɢ")
await asyncio.sleep(0.2)
await loading_1.edit_text("ʟᴏᴀᴅɪɴɢ.")
await asyncio.sleep(0.1)
await loading_1.edit_text("ʟᴏᴀᴅɪɴɢ..")
await asyncio.sleep(0.1)
await loading_1.edit_text("ʟᴏᴀᴅɪɴɢ...")
await asyncio.sleep(0.1)
await loading_1.delete()
started_msg = await message.reply_text(text="sᴛᴀʀᴛᴇᴅ...")
await asyncio.sleep(0.2)
await started_msg.delete()
if len(message.text.split()) > 1:
name = message.text.split(None, 1)[1]
if name.startswith("help"):
keyboard = help_pannel(_)
await message.reply_text(
text=(
f"ʏᴏᴏ {message.from_user.mention}, 🫧\n\n"
f"ɪ'ᴍ {app.mention}\n"
f"ɪ ᴄᴀɴ sᴛʀᴇᴀᴍ ʜɪɢʜ-ǫᴜᴀʟɪᴛʏ ᴍᴜsɪᴄ ᴀɴᴅ ᴠɪᴅᴇᴏs ᴇғғᴏʀᴛʟᴇssʟʏ ᴡɪᴛʜ ᴛʜɪs ᴀᴅᴠᴀɴᴄᴇᴅ ᴛᴇʟᴇɢʀᴀᴍ ʙᴏᴛ.\n\n"
f"sʜᴀʀᴇ ᴛʀᴀᴄᴋs ᴀɴᴅ ᴄʀᴇᴀᴛᴇ ᴛʜᴇ ᴘᴇʀғᴇᴄᴛ ᴀᴛᴍᴏsᴘʜᴇʀᴇ ғᴏʀ ᴇᴠᴇʀʏ ᴄʜᴀᴛ."
),
reply_markup=keyboard,
)
if name.startswith("sud"):
await sudoers_list(client=client, message=message, _=_)
if await is_on_off(2):
await app.send_message(
chat_id=config.LOGGER_ID,
text=f"{message.from_user.mention} ᴄʜᴇᴄᴋᴇᴅ sᴜᴅᴏʟɪsᴛ.\n\n"
f"• ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ {message.from_user.id}
\n"
f"• ʜᴀɴᴅʟᴇ ⌯ @{message.from_user.username}",
message_thread_id=9,
)
return
if name.startswith("inf"):
m = await message.reply_text("⚡️")
query = name.replace("info_", "", 1)
query = f"https://www.youtube.com/watch?v={query}"
results = VideosSearch(query, limit=1)
next_result = await results.next()
if isinstance(next_result, dict) and "result" in next_result:
for result in next_result["result"]:
title = result["title"]
duration = result["duration"]
views = result["viewCount"]["short"]
thumbnail = result["thumbnails"][0]["url"].split("?")[0]
channellink = result["channel"]["link"]
channel = result["channel"]["name"]
link = result["link"]
published = result["publishedTime"]
searched_text = _["start_6"].format(
title, duration, views, published, channellink, channel
)
key = InlineKeyboardMarkup(
[[InlineKeyboardButton(text="ʏᴏᴜᴛᴜʙᴇ", url=link)]]
)
await m.delete()
await app.send_photo(
chat_id=message.chat.id,
photo=thumbnail,
caption=searched_text,
reply_markup=key,
)
if await is_on_off(2):
await app.send_message(
chat_id=config.LOGGER_ID,
text=f"{message.from_user.mention} ᴄʜᴇᴄᴋᴇᴅ ᴛʀᴀᴄᴋ ɪɴғᴏ.\n\n"
f"• ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ {message.from_user.id}
\n"
f"• ʜᴀɴᴅʟᴇ ⌯ @{message.from_user.username}",
message_thread_id=9,
)
else:
await m.edit_text("ғᴀɪʟᴇᴅ ᴛᴏ ʀᴇᴛʀɪᴇᴠᴇ ɪɴғᴏʀᴍᴀᴛɪᴏɴ.")
return
else:
out = private_panel(_)
await message.reply_text(
text=(
f"ʏᴏᴏ {message.from_user.mention}, 🫧\n\n"
f"ɪ'ᴍ {app.mention}\n"
f"ɪ ᴄᴀɴ sᴛʀᴇᴀᴍ ʜɪɢʜ-ǫᴜᴀʟɪᴛʏ ᴍᴜsɪᴄ ᴀɴᴅ ᴠɪᴅᴇᴏs ᴇғғᴏʀᴛʟᴇssʟʏ ᴡɪᴛʜ ᴛʜɪs ᴀᴅᴠᴀɴᴄᴇᴅ ᴛᴇʟᴇɢʀᴀᴍ ʙᴏᴛ.\n\n"
f"sʜᴀʀᴇ ᴛʀᴀᴄᴋs ᴀɴᴅ ᴄʀᴇᴀᴛᴇ ᴛʜᴇ ᴘᴇʀғᴇᴄᴛ ᴀᴛᴍᴏsᴘʜᴇʀᴇ ғᴏʀ ᴇᴠᴇʀʏ ᴄʜᴀᴛ."
),
reply_markup=InlineKeyboardMarkup(out),
)
if await is_on_off(2):
await app.send_message(
chat_id=config.LOGGER_ID,
text=f"{message.from_user.mention} sᴛᴀʀᴛᴇᴅ ᴛʜᴇ ʙᴏᴛ.\n\n"
f"• ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ {message.from_user.id}
\n"
f"• ʜᴀɴᴅʟᴇ ⌯ @{message.from_user.username}",
message_thread_id=9,
)
@app.on_message(filters.command(["start"]) & filters.group & ~BANNED_USERS)
@LanguageStart
async def start_gp(client, message: Message, _):
out = start_panel(_)
uptime = int(time.time() - _boot_)
await message.reply_text(
text=_["start_1"].format(app.mention, get_readable_time(uptime)),
reply_markup=InlineKeyboardMarkup(out),
)
await add_served_chat(message.chat.id)