2022-01-18 10:04:11 +00:00
from cache . admins import admins
2022-01-19 14:26:23 +00:00
from driver . veez import call_py , bot
2022-01-18 10:04:11 +00:00
from pyrogram import Client , filters
2022-01-19 14:44:57 +00:00
from program . utils . chat_author import adminsOnly
2022-01-18 10:04:11 +00:00
from driver . queues import QUEUE , clear_queue
2022-01-19 10:00:22 +00:00
from driver . filters import command , other_filters
from driver . decorators import authorized_users_only
2022-01-18 10:04:11 +00:00
from driver . utils import skip_current_song , skip_item
2022-01-19 10:00:22 +00:00
from program . utils . inline import stream_markup , close_mark , back_mark
2022-01-18 10:04:11 +00:00
from config import BOT_USERNAME , GROUP_SUPPORT , IMG_3 , UPDATES_CHANNEL
from pyrogram . types import (
CallbackQuery ,
InlineKeyboardButton ,
InlineKeyboardMarkup ,
Message ,
)
2022-01-19 14:26:23 +00:00
async def member_permissions ( chat_id : int , user_id : int ) :
perms = [ ]
member = await bot . get_chat_member ( chat_id , user_id )
if member . can_manage_voice_chats :
perms . append ( " can_manage_voice_chats " )
return perms
2022-01-18 10:04:11 +00:00
@Client.on_message ( command ( [ " reload " , f " reload@ { BOT_USERNAME } " ] ) & other_filters )
@authorized_users_only
async def update_admin ( client , message ) :
global admins
new_admins = [ ]
new_ads = await client . get_chat_members ( message . chat . id , filter = " administrators " )
for u in new_ads :
new_admins . append ( u . user . id )
admins [ message . chat . id ] = new_admins
await message . reply_text (
" ✅ Bot **reloaded correctly !** \n ✅ **Admin list** has **updated !** "
)
@Client.on_message ( command ( [ " skip " , f " skip@ { BOT_USERNAME } " , " vskip " ] ) & other_filters )
async def skip ( client , m : Message ) :
2022-01-19 14:29:27 +00:00
if m . sender_chat :
return await m . reply_text ( " you ' re an __Anonymous__ Admin ! \n \n » revert back to user account. " )
2022-01-19 14:26:23 +00:00
permission = " can_manage_voice_chats "
s = await adminsOnly ( permission , m )
if s == 1 :
return
2022-01-19 10:00:22 +00:00
user_id = m . from_user . id
2022-01-18 10:04:11 +00:00
chat_id = m . chat . id
if len ( m . command ) < 2 :
op = await skip_current_song ( chat_id )
if op == 0 :
await m . reply ( " ❌ nothing is currently playing " )
elif op == 1 :
await m . reply ( " ✅ __Queues__ **is empty.** \n \n **• userbot leaving voice chat** " )
elif op == 2 :
await m . reply ( " 🗑️ **Clearing the Queues** \n \n **• userbot leaving voice chat** " )
else :
2022-01-19 10:00:22 +00:00
buttons = stream_markup ( user_id )
await m . send_photo (
chat_id ,
2022-01-18 10:04:11 +00:00
photo = f " { IMG_3 } " ,
2022-01-19 10:00:22 +00:00
reply_markup = InlineKeyboardMarkup ( buttons ) ,
2022-01-18 10:04:11 +00:00
caption = f " ⏭ **Skipped to the next track.** \n \n 🏷 **Name:** [ { op [ 0 ] } ]( { op [ 1 ] } ) \n 💭 **Chat:** ` { chat_id } ` \n 💡 **Status:** `Playing` \n 🎧 **Request by:** { m . from_user . mention ( ) } " ,
)
else :
skip = m . text . split ( None , 1 ) [ 1 ]
OP = " 🗑 **removed song from queue:** "
if chat_id in QUEUE :
items = [ int ( x ) for x in skip . split ( " " ) if x . isdigit ( ) ]
items . sort ( reverse = True )
for x in items :
if x == 0 :
pass
else :
hm = await skip_item ( chat_id , x )
if hm == 0 :
pass
else :
OP = OP + " \n " + f " **# { x } ** - { hm } "
await m . reply ( OP )
@Client.on_message (
command ( [ " stop " , f " stop@ { BOT_USERNAME } " , " end " , f " end@ { BOT_USERNAME } " , " vstop " ] )
& other_filters
)
async def stop ( client , m : Message ) :
2022-01-19 14:29:27 +00:00
if m . sender_chat :
return await m . reply_text ( " you ' re an __Anonymous__ Admin ! \n \n » revert back to user account. " )
2022-01-19 14:26:23 +00:00
permission = " can_manage_voice_chats "
s = await adminsOnly ( permission , m )
if s == 1 :
return
2022-01-18 10:04:11 +00:00
chat_id = m . chat . id
if chat_id in QUEUE :
try :
await call_py . leave_group_call ( chat_id )
clear_queue ( chat_id )
await m . reply ( " ✅ The userbot has disconnected from the video chat. " )
except Exception as e :
await m . reply ( f " 🚫 **error:** \n \n ` { e } ` " )
else :
await m . reply ( " ❌ **nothing is streaming** " )
@Client.on_message (
command ( [ " pause " , f " pause@ { BOT_USERNAME } " , " vpause " ] ) & other_filters
)
async def pause ( client , m : Message ) :
2022-01-19 14:29:27 +00:00
if m . sender_chat :
return await m . reply_text ( " you ' re an __Anonymous__ Admin ! \n \n » revert back to user account. " )
2022-01-19 14:26:23 +00:00
permission = " can_manage_voice_chats "
s = await adminsOnly ( permission , m )
if s == 1 :
return
2022-01-18 10:04:11 +00:00
chat_id = m . chat . id
if chat_id in QUEUE :
try :
await call_py . pause_stream ( chat_id )
await m . reply (
" ⏸ **Track paused.** \n \n • **To resume the stream, use the** \n » /resume command. "
)
except Exception as e :
await m . reply ( f " 🚫 **error:** \n \n ` { e } ` " )
else :
await m . reply ( " ❌ **nothing in streaming** " )
@Client.on_message (
command ( [ " resume " , f " resume@ { BOT_USERNAME } " , " vresume " ] ) & other_filters
)
async def resume ( client , m : Message ) :
2022-01-19 14:29:27 +00:00
if m . sender_chat :
return await m . reply_text ( " you ' re an __Anonymous__ Admin ! \n \n » revert back to user account. " )
2022-01-19 14:26:23 +00:00
permission = " can_manage_voice_chats "
s = await adminsOnly ( permission , m )
if s == 1 :
return
2022-01-18 10:04:11 +00:00
chat_id = m . chat . id
if chat_id in QUEUE :
try :
await call_py . resume_stream ( chat_id )
await m . reply (
" ▶️ **Track resumed.** \n \n • **To pause the stream, use the** \n » /pause command. "
)
except Exception as e :
await m . reply ( f " 🚫 **error:** \n \n ` { e } ` " )
else :
await m . reply ( " ❌ **nothing in streaming** " )
@Client.on_message (
command ( [ " mute " , f " mute@ { BOT_USERNAME } " , " vmute " ] ) & other_filters
)
async def mute ( client , m : Message ) :
2022-01-19 14:29:27 +00:00
if m . sender_chat :
return await m . reply_text ( " you ' re an __Anonymous__ Admin ! \n \n » revert back to user account. " )
2022-01-19 14:26:23 +00:00
permission = " can_manage_voice_chats "
s = await adminsOnly ( permission , m )
if s == 1 :
return
2022-01-18 10:04:11 +00:00
chat_id = m . chat . id
if chat_id in QUEUE :
try :
await call_py . mute_stream ( chat_id )
await m . reply (
" 🔇 **Userbot muted.** \n \n • **To unmute the userbot, use the** \n » /unmute command. "
)
except Exception as e :
await m . reply ( f " 🚫 **error:** \n \n ` { e } ` " )
else :
await m . reply ( " ❌ **nothing in streaming** " )
@Client.on_message (
command ( [ " unmute " , f " unmute@ { BOT_USERNAME } " , " vunmute " ] ) & other_filters
)
async def unmute ( client , m : Message ) :
2022-01-19 14:29:27 +00:00
if m . sender_chat :
return await m . reply_text ( " you ' re an __Anonymous__ Admin ! \n \n » revert back to user account. " )
2022-01-19 14:26:23 +00:00
permission = " can_manage_voice_chats "
s = await adminsOnly ( permission , m )
if s == 1 :
return
2022-01-18 10:04:11 +00:00
chat_id = m . chat . id
if chat_id in QUEUE :
try :
await call_py . unmute_stream ( chat_id )
await m . reply (
" 🔊 **Userbot unmuted.** \n \n • **To mute the userbot, use the** \n » /mute command. "
)
except Exception as e :
await m . reply ( f " 🚫 **error:** \n \n ` { e } ` " )
else :
await m . reply ( " ❌ **nothing in streaming** " )
@Client.on_callback_query ( filters . regex ( " cbpause " ) )
async def cbpause ( _ , query : CallbackQuery ) :
a = await _ . get_chat_member ( query . message . chat . id , query . from_user . id )
if not a . can_manage_voice_chats :
2022-01-19 10:00:22 +00:00
return await query . answer ( " 💡 Only admin with manage video chat permission that can tap this button ! " , show_alert = True )
2022-01-18 10:04:11 +00:00
chat_id = query . message . chat . id
if chat_id in QUEUE :
try :
await call_py . pause_stream ( chat_id )
await query . edit_message_text (
2022-01-19 10:00:22 +00:00
" ⏸ the streaming has paused " , reply_markup = back_mark
2022-01-18 10:04:11 +00:00
)
except Exception as e :
2022-01-19 10:00:22 +00:00
await query . edit_message_text ( f " 🚫 **error:** \n \n ` { e } ` " , reply_markup = close_mark )
2022-01-18 10:04:11 +00:00
else :
await query . answer ( " ❌ nothing is currently streaming " , show_alert = True )
@Client.on_callback_query ( filters . regex ( " cbresume " ) )
async def cbresume ( _ , query : CallbackQuery ) :
a = await _ . get_chat_member ( query . message . chat . id , query . from_user . id )
if not a . can_manage_voice_chats :
2022-01-19 10:00:22 +00:00
return await query . answer ( " 💡 Only admin with manage video chat permission that can tap this button ! " , show_alert = True )
2022-01-18 10:04:11 +00:00
chat_id = query . message . chat . id
if chat_id in QUEUE :
try :
await call_py . resume_stream ( chat_id )
await query . edit_message_text (
2022-01-19 10:00:22 +00:00
" ▶️ the streaming has resumed " , reply_markup = back_mark
2022-01-18 10:04:11 +00:00
)
except Exception as e :
2022-01-19 10:00:22 +00:00
await query . edit_message_text ( f " 🚫 **error:** \n \n ` { e } ` " , reply_markup = close_mark )
2022-01-18 10:04:11 +00:00
else :
await query . answer ( " ❌ nothing is currently streaming " , show_alert = True )
@Client.on_callback_query ( filters . regex ( " cbstop " ) )
async def cbstop ( _ , query : CallbackQuery ) :
a = await _ . get_chat_member ( query . message . chat . id , query . from_user . id )
if not a . can_manage_voice_chats :
2022-01-19 10:00:22 +00:00
return await query . answer ( " 💡 Only admin with manage video chat permission that can tap this button ! " , show_alert = True )
2022-01-18 10:04:11 +00:00
chat_id = query . message . chat . id
if chat_id in QUEUE :
try :
await call_py . leave_group_call ( chat_id )
clear_queue ( chat_id )
2022-01-19 10:00:22 +00:00
await query . edit_message_text ( " ✅ **this streaming has ended** " , reply_markup = close_mark )
2022-01-18 10:04:11 +00:00
except Exception as e :
2022-01-19 10:00:22 +00:00
await query . edit_message_text ( f " 🚫 **error:** \n \n ` { e } ` " , reply_markup = close_mark )
2022-01-18 10:04:11 +00:00
else :
await query . answer ( " ❌ nothing is currently streaming " , show_alert = True )
@Client.on_callback_query ( filters . regex ( " cbmute " ) )
async def cbmute ( _ , query : CallbackQuery ) :
a = await _ . get_chat_member ( query . message . chat . id , query . from_user . id )
if not a . can_manage_voice_chats :
2022-01-19 10:00:22 +00:00
return await query . answer ( " 💡 Only admin with manage video chat permission that can tap this button ! " , show_alert = True )
2022-01-18 10:04:11 +00:00
chat_id = query . message . chat . id
if chat_id in QUEUE :
try :
await call_py . mute_stream ( chat_id )
await query . edit_message_text (
2022-01-19 10:00:22 +00:00
" 🔇 userbot succesfully muted " , reply_markup = back_mark
2022-01-18 10:04:11 +00:00
)
except Exception as e :
2022-01-19 10:00:22 +00:00
await query . edit_message_text ( f " 🚫 **error:** \n \n ` { e } ` " , reply_markup = close_mark )
2022-01-18 10:04:11 +00:00
else :
await query . answer ( " ❌ nothing is currently streaming " , show_alert = True )
@Client.on_callback_query ( filters . regex ( " cbunmute " ) )
async def cbunmute ( _ , query : CallbackQuery ) :
a = await _ . get_chat_member ( query . message . chat . id , query . from_user . id )
if not a . can_manage_voice_chats :
2022-01-19 10:00:22 +00:00
return await query . answer ( " 💡 Only admin with manage video chat permission that can tap this button ! " , show_alert = True )
2022-01-18 10:04:11 +00:00
chat_id = query . message . chat . id
if chat_id in QUEUE :
try :
await call_py . unmute_stream ( chat_id )
await query . edit_message_text (
2022-01-19 10:00:22 +00:00
" 🔊 userbot succesfully unmuted " , reply_markup = back_mark
2022-01-18 10:04:11 +00:00
)
except Exception as e :
2022-01-19 10:00:22 +00:00
await query . edit_message_text ( f " 🚫 **error:** \n \n ` { e } ` " , reply_markup = close_mark )
2022-01-18 10:04:11 +00:00
else :
await query . answer ( " ❌ nothing is currently streaming " , show_alert = True )
@Client.on_message (
command ( [ " volume " , f " volume@ { BOT_USERNAME } " , " vol " ] ) & other_filters
)
async def change_volume ( client , m : Message ) :
2022-01-19 14:29:27 +00:00
if m . sender_chat :
return await m . reply_text ( " you ' re an __Anonymous__ Admin ! \n \n » revert back to user account. " )
2022-01-19 14:26:23 +00:00
permission = " can_manage_voice_chats "
s = await adminsOnly ( permission , m )
if s == 1 :
return
2022-01-18 10:04:11 +00:00
range = m . command [ 1 ]
chat_id = m . chat . id
if chat_id in QUEUE :
try :
await call_py . change_volume_call ( chat_id , volume = int ( range ) )
await m . reply (
f " ✅ **volume set to** ` { range } `% "
)
except Exception as e :
await m . reply ( f " 🚫 **error:** \n \n ` { e } ` " )
else :
await m . reply ( " ❌ **nothing in streaming** " )