# Copyright (C) 2021 By VeezMusicProject from driver.core import user from driver.queues import QUEUE from driver.database.dbpunish import is_gbanned_user from pyrogram import Client, filters from program.utils.inline import menu_markup, stream_markup from pyrogram.types import CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup from config import ( BOT_NAME, BOT_USERNAME, GROUP_SUPPORT, OWNER_USERNAME, UPDATES_CHANNEL, SUDO_USERS, OWNER_ID, ) @Client.on_callback_query(filters.regex("home_start")) async def set_start(_, query: CallbackQuery): user_id = query.from_user.id if await is_gbanned_user(user_id): await query.answer("❗️ You've blocked from using this bot!", show_alert=True) return 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}) **Is a bot to play music and video in groups, through the Telegram Group video chat!** 💡 **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="user_guide")], [ InlineKeyboardButton("📚 Commands", callback_data="command_list"), InlineKeyboardButton("❤ Donate", url=f"https://t.me/{OWNER_USERNAME}"), ], [ 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("user_guide")) async def set_guide(_, query: CallbackQuery): user_id = query.from_user.id ass_uname = (await user.get_me()).username if await is_gbanned_user(user_id): await query.answer("❗️ You've blocked from using this bot!", show_alert=True) return 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 @{ass_uname} 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="home_start")]] ), ) @Client.on_callback_query(filters.regex("command_list")) async def set_commands(_, query: CallbackQuery): user_id = query.from_user.id if await is_gbanned_user(user_id): await query.answer("❗️ You've blocked from using this bot!", show_alert=True) return await query.answer("commands menu") await query.edit_message_text( f"""✨ **Hello [{query.message.chat.first_name}](tg://user?id={query.message.chat.id}) !** » Check out the menu below to read the module information & see the list of available Commands ! All commands can be used with (`! / .`) handler""", reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton("👮🏻‍♀️ Admins Commands", callback_data="admin_command"), ],[ InlineKeyboardButton("👩🏻‍💼 Users Commands", callback_data="user_command"), ],[ InlineKeyboardButton("Sudo Commands", callback_data="sudo_command"), InlineKeyboardButton("Owner Commands", callback_data="owner_command"), ],[ InlineKeyboardButton("🔙 Go Back", callback_data="home_start") ], ] ), ) @Client.on_callback_query(filters.regex("user_command")) async def set_user(_, query: CallbackQuery): user_id = query.from_user.id if await is_gbanned_user(user_id): await query.answer("❗️ You've blocked from using this bot!", show_alert=True) return await query.answer("basic commands") await query.edit_message_text( f"""✏️ Command list for all user. » /play (song name/link) - play music on video chat » /vplay (video name/link) - play video on video chat » /vstream (m3u8/yt live link) - play live stream video » /playlist - see the current playing song » /lyric (query) - scrap the song lyric » /video (query) - download video from youtube » /song (query) - download song from youtube » /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="command_list")]] ), ) @Client.on_callback_query(filters.regex("admin_command")) async def set_admin(_, query: CallbackQuery): user_id = query.from_user.id if await is_gbanned_user(user_id): await query.answer("❗️ You've blocked from using this bot!", show_alert=True) return await query.answer("admin commands") await query.edit_message_text( f"""✏️ Command list for group admin. » /pause - pause the current track being played » /resume - play the previously paused track » /skip - goes to the next track » /stop - stop playback of the track and clears the queue » /vmute - mute the streamer userbot on group call » /vunmute - unmute the streamer userbot on group call » /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="command_list")]] ), ) @Client.on_callback_query(filters.regex("sudo_command")) async def set_sudo(_, query: CallbackQuery): user_id = query.from_user.id if await is_gbanned_user(user_id): await query.answer("❗️ You've blocked from using this bot!", show_alert=True) return if user_id not in SUDO_USERS: await query.answer("⚠️ You don't have permissions to click this button\n\n» This button is reserved for sudo members of this bot.", show_alert=True) return await query.answer("sudo commands") await query.edit_message_text( f"""✏️ Command list for sudo user. » /stats - get the bot current statistic » /calls - show you the list of all active group call in database » /block (`chat_id`) - use this to blacklist any group from using your bot » /unblock (`chat_id`) - use this to whitelist any group from using your bot » /blocklist - show you the list of all blacklisted chat » /speedtest - run the bot server speedtest » /sysinfo - show the system information » /eval - execute any code (`developer stuff`) » /sh - run any command (`developer stuff`) ⚡ __Powered by {BOT_NAME} AI__""", reply_markup=InlineKeyboardMarkup( [[InlineKeyboardButton("🔙 Go Back", callback_data="command_list")]] ), ) @Client.on_callback_query(filters.regex("owner_command")) async def set_owner(_, query: CallbackQuery): user_id = query.from_user.id if await is_gbanned_user(user_id): await query.answer("❗️ You've blocked from using this bot!", show_alert=True) return if user_id not in OWNER_ID: await query.answer("⚠️ You don't have permissions to click this button\n\n» This button is reserved for owner of this bot.", show_alert=True) return await query.answer("owner commands") await query.edit_message_text( f"""✏️ Command list for bot owner. » /gban (`username` or `user_id`) - for global banned people, can be used only in group » /ungban (`username` or `user_id`) - for un-global banned people, can be used only in group » /update - update your bot to latest version » /restart - restart your bot directly » /leaveall - order userbot to leave from all group » /leavebot (`chat id`) - order bot to leave from the group you specify » /broadcast (`message`) - send a broadcast message to all groups in bot database » /broadcast_pin (`message`) - send a broadcast message to all groups in bot database with the chat pin ⚡ __Powered by {BOT_NAME} AI__""", reply_markup=InlineKeyboardMarkup( [[InlineKeyboardButton("🔙 Go Back", callback_data="command_list")]] ), ) @Client.on_callback_query(filters.regex("stream_menu_panel")) async def set_markup_menu(_, query: CallbackQuery): user_id = query.from_user.id if await is_gbanned_user(user_id): await query.answer("❗️ You've blocked from using this bot!", show_alert=True) return 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) if chat_id in QUEUE: await query.answer("control panel opened") await query.edit_message_reply_markup(reply_markup=InlineKeyboardMarkup(buttons)) else: await query.answer("❌ nothing is currently streaming", show_alert=True) @Client.on_callback_query(filters.regex("stream_home_panel")) async def set_home_menu(_, query: CallbackQuery): user_id = query.from_user.id if await is_gbanned_user(user_id): await query.answer("❗️ You've blocked from using this bot!", show_alert=True) return 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.answer("control panel closed") user_id = query.message.from_user.id buttons = stream_markup(user_id) await query.edit_message_reply_markup(reply_markup=InlineKeyboardMarkup(buttons)) @Client.on_callback_query(filters.regex("set_close")) async def close_menu(_, query: CallbackQuery): user_id = query.from_user.id if await is_gbanned_user(user_id): await query.answer("❗️ You've blocked from using this bot!", show_alert=True) return 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() @Client.on_callback_query(filters.regex("close_panel")) async def close_panel(_, query: CallbackQuery): user_id = query.from_user.id if await is_gbanned_user(user_id): await query.answer("❗️ You've blocked from using this bot!", show_alert=True) return await query.message.delete()