# Copyright (C) 2021 By VeezMusicProject from driver.queues import QUEUE from pyrogram import Client, filters from program.utils.inline import menu_markup from pyrogram.types import CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup from config import ( ASSISTANT_NAME, BOT_NAME, BOT_USERNAME, GROUP_SUPPORT, OWNER_NAME, UPDATES_CHANNEL, ) @Client.on_callback_query(filters.regex("cbstart")) async def cbstart(_, query: CallbackQuery): await query.answer("home start") await query.edit_message_text( f"""āœØ **Welcome [{query.message.chat.first_name}](tg://user?id={query.message.chat.id}) !**\n šŸ’­ **[{BOT_NAME}](https://t.me/{BOT_USERNAME}) allows you to play music and video on groups through the new Telegram's video chats!** šŸ’” **Find out all the Bot's commands and how they work by clicking on the Ā» šŸ“š Commands button!** šŸ”– **To know how to use this bot, please click on the Ā» ā“ Basic Guide button!**""", reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton( "āž• Add me to your Group āž•", url=f"https://t.me/{BOT_USERNAME}?startgroup=true", ) ], [InlineKeyboardButton("ā“ Basic Guide", callback_data="cbhowtouse")], [ InlineKeyboardButton("šŸ“š Commands", callback_data="cbcmds"), InlineKeyboardButton("ā¤ Donate", url=f"https://t.me/{OWNER_NAME}"), ], [ InlineKeyboardButton( "šŸ‘„ Official Group", url=f"https://t.me/{GROUP_SUPPORT}" ), InlineKeyboardButton( "šŸ“£ Official Channel", url=f"https://t.me/{UPDATES_CHANNEL}" ), ], [ InlineKeyboardButton( "šŸŒ Source Code", url="https://github.com/levina-lab/video-stream" ) ], ] ), disable_web_page_preview=True, ) @Client.on_callback_query(filters.regex("cbhowtouse")) async def cbguides(_, query: CallbackQuery): await query.answer("user guide") await query.edit_message_text( f"""ā“ How to use this Bot ?, read the Guide below ! 1.) First, add this bot to your Group. 2.) Then, promote this bot as administrator on the Group also give all permissions except Anonymous admin. 3.) After promoting this bot, type /reload in Group to update the admin data. 3.) Invite @{ASSISTANT_NAME} to your group or type /userbotjoin to invite her (unfortunately the userbot will joined by itself when you type `/play (song name)` or `/vplay (song name)`). 4.) Turn on/Start the video chat first before start to play video/music. `- END, EVERYTHING HAS BEEN SETUP -` šŸ“Œ If the userbot not joined to video chat, make sure if the video chat already turned on and the userbot in the chat. šŸ’” If you have a follow-up questions about this bot, you can tell it on my support chat here: @{GROUP_SUPPORT}.""", reply_markup=InlineKeyboardMarkup( [[InlineKeyboardButton("šŸ”™ Go Back", callback_data="cbstart")]] ), ) @Client.on_callback_query(filters.regex("cbcmds")) async def cbcmds(_, query: CallbackQuery): await query.answer("commands menu") await query.edit_message_text( f"""āœØ **Hello [{query.message.chat.first_name}](tg://user?id={query.message.chat.id}) !** Ā» Choose the menu below to read the explanation & see the list of available Commands ! āš” __Powered by {BOT_NAME} A.I__""", reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton("šŸ‘·šŸ» Admin Cmd", callback_data="cbadmin"), InlineKeyboardButton("šŸ§™šŸ» Sudo Cmd", callback_data="cbsudo"), ],[ InlineKeyboardButton("šŸ“š Basic Cmd", callback_data="cbbasic") ],[ InlineKeyboardButton("šŸ”™ Go Back", callback_data="cbstart") ], ] ), ) @Client.on_callback_query(filters.regex("cbbasic")) async def cbbasic(_, query: CallbackQuery): await query.answer("basic commands") await query.edit_message_text( f"""šŸ® here is the basic commands: Ā» /play (song name/link) - play music on video chat Ā» /vplay (video name/link) - play video on video chat Ā» /vstream - play live video from yt live/m3u8 Ā» /playlist - show you the playlist Ā» /video (query) - download video from youtube Ā» /song (query) - download song from youtube Ā» /lyric (query) - scrap the song lyric Ā» /search (query) - search a youtube video link Ā» /ping - show the bot ping status Ā» /uptime - show the bot uptime status Ā» /alive - show the bot alive info (in Group only) āš”ļø __Powered by {BOT_NAME} AI__""", reply_markup=InlineKeyboardMarkup( [[InlineKeyboardButton("šŸ”™ Go Back", callback_data="cbcmds")]] ), ) @Client.on_callback_query(filters.regex("cbadmin")) async def cbadmin(_, query: CallbackQuery): await query.answer("admin commands") await query.edit_message_text( f"""šŸ® here is the admin commands: Ā» /pause - pause the stream Ā» /resume - resume the stream Ā» /skip - switch to next stream Ā» /stop - stop the streaming Ā» /vmute - mute the userbot on voice chat Ā» /vunmute - unmute the userbot on voice chat Ā» /volume `1-200` - adjust the volume of music (userbot must be admin) Ā» /reload - reload bot and refresh the admin data Ā» /userbotjoin - invite the userbot to join group Ā» /userbotleave - order userbot to leave from group āš”ļø __Powered by {BOT_NAME} AI__""", reply_markup=InlineKeyboardMarkup( [[InlineKeyboardButton("šŸ”™ Go Back", callback_data="cbcmds")]] ), ) @Client.on_callback_query(filters.regex("cbsudo")) async def cbsudo(_, query: CallbackQuery): await query.answer("sudo commands") await query.edit_message_text( f"""šŸ® here is the sudo commands: Ā» /gban (`username` or `user id`) - for global banned people Ā» /ungban (`username` or `user id`) - for un-global banned people Ā» /speedtest - run the bot server speedtest Ā» /sysinfo - show the system information Ā» /update - update your bot to latest version Ā» /restart - restart your bot Ā» /leaveall - order userbot to leave from all group āš” __Powered by {BOT_NAME} AI__""", reply_markup=InlineKeyboardMarkup( [[InlineKeyboardButton("šŸ”™ Go Back", callback_data="cbcmds")]] ), ) @Client.on_callback_query(filters.regex("cbmenu")) async def cbmenu(_, query: CallbackQuery): a = await _.get_chat_member(query.message.chat.id, query.from_user.id) if not a.can_manage_voice_chats: return await query.answer("šŸ’” Only admin with manage video chat permission that can tap this button !", show_alert=True) chat_id = query.message.chat.id user_id = query.message.from_user.id buttons = menu_markup(user_id) chat = query.message.chat.title if chat_id in QUEUE: await query.edit_message_text( f"āš™ļø **Settings of** {chat}\n\nāø : pause stream\nā–¶ļø : resume stream\nšŸ”‡ : mute userbot\nšŸ”Š : unmute userbot\nā¹ : stop stream", reply_markup=InlineKeyboardMarkup(buttons), ) else: await query.answer("āŒ nothing is currently streaming", show_alert=True) @Client.on_callback_query(filters.regex("cls")) async def close(_, query: CallbackQuery): a = await _.get_chat_member(query.message.chat.id, query.from_user.id) if not a.can_manage_voice_chats: return await query.answer("šŸ’” Only admin with manage video chat permission that can tap this button !", show_alert=True) await query.message.delete()