2021-10-28 15:49:13 +00:00
# Copyright (C) 2021 By Veez Music-Project
# Commit Start Date 20/10/2021
# Finished On 28/10/2021
2021-11-03 00:01:25 +00:00
import re
2021-11-21 06:04:42 +00:00
import asyncio
2021-10-29 19:01:26 +00:00
2021-11-15 09:42:34 +00:00
from config import ASSISTANT_NAME , BOT_USERNAME , IMG_1 , IMG_2
2022-01-08 15:39:59 +00:00
from driver . design . thumbnail import thumb
from driver . design . chatname import CHAT_TITLE
2021-11-02 07:51:28 +00:00
from driver . filters import command , other_filters
2021-11-03 00:01:25 +00:00
from driver . queues import QUEUE , add_to_queue
from driver . veez import call_py , user
from pyrogram import Client
2021-11-02 07:51:28 +00:00
from pyrogram . errors import UserAlreadyParticipant , UserNotParticipant
2021-11-03 00:01:25 +00:00
from pyrogram . types import InlineKeyboardButton , InlineKeyboardMarkup , Message
2021-10-29 19:01:26 +00:00
from pytgcalls import StreamType
2021-10-26 05:58:34 +00:00
from pytgcalls . types . input_stream import AudioVideoPiped
2021-10-29 19:01:26 +00:00
from pytgcalls . types . input_stream . quality import (
HighQualityAudio ,
HighQualityVideo ,
LowQualityVideo ,
MediumQualityVideo ,
)
from youtubesearchpython import VideosSearch
2021-10-26 05:58:34 +00:00
2021-12-11 08:22:33 +00:00
def ytsearch ( query : str ) :
2021-10-29 19:01:26 +00:00
try :
2021-12-11 08:22:33 +00:00
search = VideosSearch ( query , limit = 1 ) . result ( )
data = search [ " result " ] [ 0 ]
songname = data [ " title " ]
url = data [ " link " ]
duration = data [ " duration " ]
thumbnail = f " https://i.ytimg.com/vi/ { data [ ' id ' ] } /hqdefault.jpg "
return [ songname , url , duration , thumbnail ]
2021-10-29 19:01:26 +00:00
except Exception as e :
print ( e )
return 0
2021-10-26 05:58:34 +00:00
async def ytdl ( link ) :
2021-10-29 19:01:26 +00:00
proc = await asyncio . create_subprocess_exec (
" yt-dlp " ,
" -g " ,
" -f " ,
" best[height<=?720][width<=?1280] " ,
f " { link } " ,
stdout = asyncio . subprocess . PIPE ,
stderr = asyncio . subprocess . PIPE ,
)
stdout , stderr = await proc . communicate ( )
if stdout :
return 1 , stdout . decode ( ) . split ( " \n " ) [ 0 ]
else :
return 0 , stderr . decode ( )
2021-10-26 05:58:34 +00:00
@Client.on_message ( command ( [ " vplay " , f " vplay@ { BOT_USERNAME } " ] ) & other_filters )
2021-11-03 00:01:25 +00:00
async def vplay ( c : Client , m : Message ) :
2021-12-11 08:22:33 +00:00
await m . delete ( )
2021-11-03 00:01:25 +00:00
replied = m . reply_to_message
chat_id = m . chat . id
2021-10-29 19:01:26 +00:00
keyboard = InlineKeyboardMarkup (
[
2021-10-27 08:53:08 +00:00
[
2021-11-03 00:01:25 +00:00
InlineKeyboardButton ( text = " • Mᴇɴᴜ " , callback_data = " cbmenu " ) ,
InlineKeyboardButton ( text = " • Cʟᴏ sᴇ " , callback_data = " cls " ) ,
2021-10-27 08:53:08 +00:00
]
2021-10-29 19:01:26 +00:00
]
)
2021-11-05 08:36:39 +00:00
if m . sender_chat :
2021-12-11 08:22:33 +00:00
return await m . reply_text ( " you ' re an __Anonymous__ Admin ! \n \n » revert back to user account from admin rights. " )
2021-11-02 22:35:42 +00:00
try :
2021-11-03 00:01:25 +00:00
aing = await c . get_me ( )
2021-11-02 22:35:42 +00:00
except Exception as e :
return await m . reply_text ( f " error: \n \n { e } " )
2021-11-03 00:01:25 +00:00
a = await c . get_chat_member ( chat_id , aing . id )
2021-11-02 17:03:24 +00:00
if a . status != " administrator " :
2021-11-03 00:01:25 +00:00
await m . reply_text (
2022-01-15 14:00:09 +00:00
f " 💡 To use me, I need to be an **Administrator** with the following **permissions**: \n \n » ❌ __Delete messages__ \n » ❌ __Add users__ \n » ❌ __Add new Admins__ \n » ❌ __Manage video chat__ \n \n Data is **updated** automatically after you **promote me** "
2021-11-03 00:01:25 +00:00
)
2021-11-02 17:03:24 +00:00
return
if not a . can_manage_voice_chats :
await m . reply_text (
2021-11-03 13:18:36 +00:00
" missing required permission: " + " \n \n » ❌ __Manage video chat__ "
2021-11-03 00:01:25 +00:00
)
2021-11-02 17:03:24 +00:00
return
if not a . can_delete_messages :
await m . reply_text (
2021-11-03 00:01:25 +00:00
" missing required permission: " + " \n \n » ❌ __Delete messages__ "
)
2021-11-02 17:03:24 +00:00
return
if not a . can_invite_users :
2021-11-03 00:01:25 +00:00
await m . reply_text ( " missing required permission: " + " \n \n » ❌ __Add users__ " )
2021-11-02 17:03:24 +00:00
return
2022-01-15 14:00:09 +00:00
if not a . can_promote_members :
await m . reply_text ( " missing required permission: " + " \n \n » ❌ __Add new Admins__ " )
return
2021-11-02 17:03:24 +00:00
try :
2021-11-25 15:26:25 +00:00
ubot = ( await user . get_me ( ) ) . id
2022-01-15 14:00:09 +00:00
b = await c . get_chat_member ( chat_id , ubot )
2021-11-02 17:03:24 +00:00
if b . status == " kicked " :
2022-01-15 14:00:09 +00:00
await c . unban_chat_member ( chat_id , ubot )
invitelink = await c . export_chat_invite_link ( chat_id )
if invitelink . startswith ( " https://t.me/+ " ) :
invitelink = invitelink . replace (
" https://t.me/+ " , " https://t.me/joinchat/ "
)
await user . join_chat ( invitelink )
await m . chat . promote_member (
ubot , can_manage_voice_chats = True
2021-11-03 00:01:25 +00:00
)
2021-11-02 17:03:24 +00:00
except UserNotParticipant :
2022-01-15 14:00:09 +00:00
try :
ubot = ( await user . get_me ( ) ) . id
invitelink = await c . export_chat_invite_link ( chat_id )
if invitelink . startswith ( " https://t.me/+ " ) :
2021-12-11 06:44:02 +00:00
invitelink = invitelink . replace (
" https://t.me/+ " , " https://t.me/joinchat/ "
)
2022-01-15 14:00:09 +00:00
await user . join_chat ( invitelink )
await m . chat . promote_member (
ubot , can_manage_voice_chats = True
)
except UserAlreadyParticipant :
pass
except Exception as e :
return await m . reply_text (
f " ❌ **userbot failed to join** \n \n **reason**: ` { e } ` "
)
2021-11-03 00:01:25 +00:00
2021-10-29 19:01:26 +00:00
if replied :
if replied . video or replied . document :
loser = await replied . reply ( " 📥 **downloading video...** " )
dl = await replied . download ( )
link = replied . link
if len ( m . command ) < 2 :
Q = 720
2021-10-26 05:58:34 +00:00
else :
2021-10-29 19:01:26 +00:00
pq = m . text . split ( None , 1 ) [ 1 ]
if pq == " 720 " or " 480 " or " 360 " :
Q = int ( pq )
else :
Q = 720
await loser . edit (
" » __only 720, 480, 360 allowed__ \n 💡 **now streaming video in 720p** "
)
2021-11-01 03:15:46 +00:00
try :
if replied . video :
songname = replied . video . file_name [ : 70 ]
elif replied . document :
songname = replied . document . file_name [ : 70 ]
2021-11-01 04:21:29 +00:00
except BaseException :
2021-11-01 03:15:46 +00:00
songname = " Video "
2021-11-03 00:01:25 +00:00
2021-10-29 19:01:26 +00:00
if chat_id in QUEUE :
pos = add_to_queue ( chat_id , songname , dl , link , " Video " , Q )
await loser . delete ( )
2021-11-02 08:17:22 +00:00
requester = f " [ { m . from_user . first_name } ](tg://user?id= { m . from_user . id } ) "
2021-10-29 19:01:26 +00:00
await m . reply_photo (
photo = f " { IMG_1 } " ,
2021-12-18 21:59:30 +00:00
caption = f " 💡 **Track added to queue »** ` { pos } ` \n \n 🏷 **Name:** [ { songname } ]( { link } ) | `video` \n 💭 **Chat:** ` { chat_id } ` \n 🎧 **Request by:** { requester } " ,
2021-10-29 19:01:26 +00:00
reply_markup = keyboard ,
)
2021-10-26 05:58:34 +00:00
else :
2021-10-29 19:01:26 +00:00
if Q == 720 :
amaze = HighQualityVideo ( )
elif Q == 480 :
amaze = MediumQualityVideo ( )
elif Q == 360 :
amaze = LowQualityVideo ( )
2021-11-22 09:45:51 +00:00
await loser . edit ( " 🔄 **Joining vc...** " )
2021-10-29 19:01:26 +00:00
await call_py . join_group_call (
chat_id ,
2021-11-01 14:04:49 +00:00
AudioVideoPiped (
2021-11-03 00:01:25 +00:00
dl ,
HighQualityAudio ( ) ,
2021-11-01 14:04:49 +00:00
amaze ,
) ,
2021-11-11 06:55:32 +00:00
stream_type = StreamType ( ) . local_stream ,
2021-10-29 19:01:26 +00:00
)
add_to_queue ( chat_id , songname , dl , link , " Video " , Q )
await loser . delete ( )
2021-11-02 08:17:22 +00:00
requester = f " [ { m . from_user . first_name } ](tg://user?id= { m . from_user . id } ) "
2021-10-29 19:01:26 +00:00
await m . reply_photo (
photo = f " { IMG_2 } " ,
2021-12-18 21:59:30 +00:00
caption = f " 🏷 **Name:** [ { songname } ]( { link } ) \n 💭 **Chat:** ` { chat_id } ` \n 💡 **Status:** `Playing` \n 🎧 **Request by:** { requester } \n 📹 **Stream type:** `Video` " ,
2021-10-29 19:01:26 +00:00
reply_markup = keyboard ,
)
else :
if len ( m . command ) < 2 :
await m . reply (
" » reply to an **video file** or **give something to search.** "
)
else :
2021-12-11 09:31:35 +00:00
loser = await c . send_message ( chat_id , " 🔍 **Searching...** " )
2021-10-29 19:01:26 +00:00
query = m . text . split ( None , 1 ) [ 1 ]
search = ytsearch ( query )
Q = 720
amaze = HighQualityVideo ( )
if search == 0 :
await loser . edit ( " ❌ **no results found.** " )
else :
songname = search [ 0 ]
2022-01-08 15:39:59 +00:00
title = search [ 0 ]
2021-10-29 19:01:26 +00:00
url = search [ 1 ]
2021-12-11 08:22:33 +00:00
duration = search [ 2 ]
thumbnail = search [ 3 ]
2022-01-08 15:39:59 +00:00
userid = m . from_user . id
gcname = m . chat . title
ctitle = await CHAT_TITLE ( gcname )
image = await thumb ( thumbnail , title , userid , ctitle )
2021-10-29 19:01:26 +00:00
veez , ytlink = await ytdl ( url )
if veez == 0 :
await loser . edit ( f " ❌ yt-dl issues detected \n \n » ` { ytlink } ` " )
else :
if chat_id in QUEUE :
pos = add_to_queue (
2022-01-18 06:56:23 +00:00
chat_id , songname , ytlink , url , image , duration , " Video " , Q
2021-10-29 19:01:26 +00:00
)
await loser . delete ( )
2021-11-02 08:17:22 +00:00
requester = f " [ { m . from_user . first_name } ](tg://user?id= { m . from_user . id } ) "
2021-10-29 19:01:26 +00:00
await m . reply_photo (
2022-01-08 15:39:59 +00:00
photo = image ,
2021-12-18 21:59:30 +00:00
caption = f " 💡 **Track added to queue »** ` { pos } ` \n \n 🏷 **Name:** [ { songname } ]( { url } ) | `video` \n ⏱ **Duration:** ` { duration } ` \n 🎧 **Request by:** { requester } " ,
2021-10-29 19:01:26 +00:00
reply_markup = keyboard ,
)
else :
try :
2021-11-22 09:45:51 +00:00
await loser . edit ( " 🔄 **Joining vc...** " )
2021-10-29 19:01:26 +00:00
await call_py . join_group_call (
chat_id ,
2021-11-01 14:04:49 +00:00
AudioVideoPiped (
2021-11-03 00:01:25 +00:00
ytlink ,
HighQualityAudio ( ) ,
2021-11-01 14:04:49 +00:00
amaze ,
) ,
2021-11-26 01:37:57 +00:00
stream_type = StreamType ( ) . local_stream ,
2021-10-29 19:01:26 +00:00
)
2022-01-18 09:40:05 +00:00
add_to_queue ( chat_id , songname , ytlink , url , image , duration , " Video " , Q )
2021-10-29 19:01:26 +00:00
await loser . delete ( )
2021-11-02 08:17:22 +00:00
requester = f " [ { m . from_user . first_name } ](tg://user?id= { m . from_user . id } ) "
2021-10-29 19:01:26 +00:00
await m . reply_photo (
2022-01-08 15:39:59 +00:00
photo = image ,
2021-12-18 21:59:30 +00:00
caption = f " 🏷 **Name:** [ { songname } ]( { url } ) \n ⏱ **Duration:** ` { duration } ` \n 💡 **Status:** `Playing` \n 🎧 **Request by:** { requester } \n 📹 **Stream type:** `Video` " ,
2021-10-29 19:01:26 +00:00
reply_markup = keyboard ,
)
except Exception as ep :
2021-11-07 06:05:34 +00:00
await loser . delete ( )
2021-10-29 19:01:26 +00:00
await m . reply_text ( f " 🚫 error: ` { ep } ` " )
else :
if len ( m . command ) < 2 :
await m . reply (
" » reply to an **video file** or **give something to search.** "
)
else :
2021-12-11 09:31:35 +00:00
loser = await c . send_message ( chat_id , " 🔍 **Searching...** " )
2021-10-26 05:58:34 +00:00
query = m . text . split ( None , 1 ) [ 1 ]
search = ytsearch ( query )
Q = 720
amaze = HighQualityVideo ( )
2021-10-29 19:01:26 +00:00
if search == 0 :
await loser . edit ( " ❌ **no results found.** " )
2021-10-26 05:58:34 +00:00
else :
2021-10-29 19:01:26 +00:00
songname = search [ 0 ]
2022-01-08 15:39:59 +00:00
title = search [ 0 ]
2021-10-29 19:01:26 +00:00
url = search [ 1 ]
2021-12-11 08:22:33 +00:00
duration = search [ 2 ]
thumbnail = search [ 3 ]
2022-01-08 15:39:59 +00:00
userid = m . from_user . id
gcname = m . chat . title
ctitle = await CHAT_TITLE ( gcname )
image = await thumb ( thumbnail , title , userid , ctitle )
2021-10-29 19:01:26 +00:00
veez , ytlink = await ytdl ( url )
if veez == 0 :
await loser . edit ( f " ❌ yt-dl issues detected \n \n » ` { ytlink } ` " )
else :
if chat_id in QUEUE :
2022-01-18 06:56:23 +00:00
pos = add_to_queue ( chat_id , songname , ytlink , url , image , duration , " Video " , Q )
2021-10-27 08:53:08 +00:00
await loser . delete ( )
2021-11-03 00:01:25 +00:00
requester = (
f " [ { m . from_user . first_name } ](tg://user?id= { m . from_user . id } ) "
)
2021-10-27 08:53:08 +00:00
await m . reply_photo (
2022-01-08 15:39:59 +00:00
photo = image ,
2021-12-18 21:59:30 +00:00
caption = f " 💡 **Track added to queue »** ` { pos } ` \n \n 🏷 **Name:** [ { songname } ]( { url } ) | `video` \n ⏱ **Duration:** ` { duration } ` \n 🎧 **Request by:** { requester } " ,
2021-10-29 19:01:26 +00:00
reply_markup = keyboard ,
2021-10-27 08:53:08 +00:00
)
2021-10-29 19:01:26 +00:00
else :
try :
2021-11-22 09:45:51 +00:00
await loser . edit ( " 🔄 **Joining vc...** " )
2021-10-29 19:01:26 +00:00
await call_py . join_group_call (
chat_id ,
2021-11-01 14:04:49 +00:00
AudioVideoPiped (
2021-11-03 00:01:25 +00:00
ytlink ,
HighQualityAudio ( ) ,
2021-11-01 14:09:30 +00:00
amaze ,
2021-11-01 14:04:49 +00:00
) ,
2021-11-26 01:37:57 +00:00
stream_type = StreamType ( ) . local_stream ,
2021-10-29 19:01:26 +00:00
)
2022-01-18 09:40:05 +00:00
add_to_queue ( chat_id , songname , ytlink , url , image , duration , " Video " , Q )
2021-10-29 19:01:26 +00:00
await loser . delete ( )
2021-11-02 08:17:22 +00:00
requester = f " [ { m . from_user . first_name } ](tg://user?id= { m . from_user . id } ) "
2021-10-29 19:01:26 +00:00
await m . reply_photo (
2022-01-08 15:39:59 +00:00
photo = image ,
2021-12-18 21:59:30 +00:00
caption = f " 🏷 **Name:** [ { songname } ]( { url } ) \n ⏱ **Duration:** ` { duration } ` \n 💡 **Status:** `Playing` \n 🎧 **Request by:** { requester } \n 📹 **Stream type:** `Video` " ,
2021-10-29 19:01:26 +00:00
reply_markup = keyboard ,
)
except Exception as ep :
2021-11-07 06:05:34 +00:00
await loser . delete ( )
2021-10-29 19:01:26 +00:00
await m . reply_text ( f " 🚫 error: ` { ep } ` " )
2021-10-26 05:58:34 +00:00
@Client.on_message ( command ( [ " vstream " , f " vstream@ { BOT_USERNAME } " ] ) & other_filters )
2021-11-03 00:01:25 +00:00
async def vstream ( c : Client , m : Message ) :
2021-12-11 08:22:33 +00:00
await m . delete ( )
2021-11-03 00:01:25 +00:00
chat_id = m . chat . id
2021-10-29 19:01:26 +00:00
keyboard = InlineKeyboardMarkup (
[
2021-10-27 08:53:08 +00:00
[
2021-11-03 00:01:25 +00:00
InlineKeyboardButton ( text = " • Mᴇɴᴜ " , callback_data = " cbmenu " ) ,
InlineKeyboardButton ( text = " • Cʟᴏ sᴇ " , callback_data = " cls " ) ,
2021-10-27 08:53:08 +00:00
]
2021-10-29 19:01:26 +00:00
]
)
2021-11-05 08:36:39 +00:00
if m . sender_chat :
2021-12-11 08:22:33 +00:00
return await m . reply_text ( " you ' re an __Anonymous__ Admin ! \n \n » revert back to user account from admin rights. " )
2021-11-02 15:12:22 +00:00
try :
2021-11-03 00:01:25 +00:00
aing = await c . get_me ( )
2021-11-02 17:03:24 +00:00
except Exception as e :
return await m . reply_text ( f " error: \n \n { e } " )
2021-11-03 00:01:25 +00:00
a = await c . get_chat_member ( chat_id , aing . id )
2021-11-02 17:03:24 +00:00
if a . status != " administrator " :
2021-11-03 00:01:25 +00:00
await m . reply_text (
2021-11-22 09:45:51 +00:00
f " 💡 To use me, I need to be an **Administrator** with the following **permissions**: \n \n » ❌ __Delete messages__ \n » ❌ __Add users__ \n » ❌ __Manage video chat__ \n \n Data is **updated** automatically after you **promote me** "
2021-11-03 00:01:25 +00:00
)
2021-11-02 17:03:24 +00:00
return
if not a . can_manage_voice_chats :
await m . reply_text (
2021-11-03 13:18:36 +00:00
" missing required permission: " + " \n \n » ❌ __Manage video chat__ "
2021-11-03 00:01:25 +00:00
)
2021-11-02 17:03:24 +00:00
return
if not a . can_delete_messages :
await m . reply_text (
2021-11-03 00:01:25 +00:00
" missing required permission: " + " \n \n » ❌ __Delete messages__ "
)
2021-11-02 17:03:24 +00:00
return
if not a . can_invite_users :
2021-11-03 00:01:25 +00:00
await m . reply_text ( " missing required permission: " + " \n \n » ❌ __Add users__ " )
2021-11-02 17:03:24 +00:00
return
2022-01-15 14:00:09 +00:00
if not a . can_promote_members :
await m . reply_text ( " missing required permission: " + " \n \n » ❌ __Add new Admins__ " )
return
2021-11-02 17:03:24 +00:00
try :
2021-11-25 15:26:25 +00:00
ubot = ( await user . get_me ( ) ) . id
2022-01-15 14:00:09 +00:00
b = await c . get_chat_member ( chat_id , ubot )
2021-11-02 17:03:24 +00:00
if b . status == " kicked " :
2022-01-15 14:00:09 +00:00
await c . unban_chat_member ( chat_id , ubot )
invitelink = await c . export_chat_invite_link ( chat_id )
if invitelink . startswith ( " https://t.me/+ " ) :
invitelink = invitelink . replace (
" https://t.me/+ " , " https://t.me/joinchat/ "
)
await user . join_chat ( invitelink )
await m . chat . promote_member (
ubot , can_manage_voice_chats = True
2021-11-03 00:01:25 +00:00
)
2021-11-02 17:03:24 +00:00
except UserNotParticipant :
2022-01-15 14:00:09 +00:00
try :
ubot = ( await user . get_me ( ) ) . id
invitelink = await c . export_chat_invite_link ( chat_id )
if invitelink . startswith ( " https://t.me/+ " ) :
2021-12-11 08:22:33 +00:00
invitelink = invitelink . replace (
" https://t.me/+ " , " https://t.me/joinchat/ "
)
2022-01-15 14:00:09 +00:00
await user . join_chat ( invitelink )
await m . chat . promote_member (
ubot , can_manage_voice_chats = True
)
except UserAlreadyParticipant :
pass
except Exception as e :
return await m . reply_text (
f " ❌ **userbot failed to join** \n \n **reason**: ` { e } ` "
)
2021-11-03 00:01:25 +00:00
2021-10-29 19:01:26 +00:00
if len ( m . command ) < 2 :
await m . reply ( " » give me a live-link/m3u8 url/youtube link to stream. " )
else :
if len ( m . command ) == 2 :
link = m . text . split ( None , 1 ) [ 1 ]
2021-10-26 05:58:34 +00:00
Q = 720
2021-11-21 06:19:57 +00:00
loser = await c . send_message ( chat_id , " 🔄 **processing stream...** " )
2021-10-29 19:01:26 +00:00
elif len ( m . command ) == 3 :
op = m . text . split ( None , 1 ) [ 1 ]
link = op . split ( None , 1 ) [ 0 ]
quality = op . split ( None , 1 ) [ 1 ]
if quality == " 720 " or " 480 " or " 360 " :
Q = int ( quality )
else :
Q = 720
await m . reply (
" » __only 720, 480, 360 allowed__ \n 💡 **now streaming video in 720p** "
)
2021-11-21 06:19:57 +00:00
loser = await c . send_message ( chat_id , " 🔄 **processing stream...** " )
2021-10-29 19:01:26 +00:00
else :
await m . reply ( " **/vstream {link} { 720/480/360}** " )
2021-10-26 05:58:34 +00:00
2021-10-29 19:01:26 +00:00
regex = r " ^(https? \ : \ / \ /)?(www \ .youtube \ .com|youtu \ .?be) \ /.+ "
match = re . match ( regex , link )
if match :
veez , livelink = await ytdl ( link )
else :
livelink = link
veez = 1
2021-10-26 05:58:34 +00:00
2021-10-29 19:01:26 +00:00
if veez == 0 :
2021-11-21 14:22:12 +00:00
await loser . edit ( f " ❌ yt-dl issues detected \n \n » ` { livelink } ` " )
2021-10-29 19:01:26 +00:00
else :
if chat_id in QUEUE :
pos = add_to_queue ( chat_id , " Live Stream " , livelink , link , " Video " , Q )
await loser . delete ( )
2021-11-02 08:17:22 +00:00
requester = f " [ { m . from_user . first_name } ](tg://user?id= { m . from_user . id } ) "
2021-10-29 19:01:26 +00:00
await m . reply_photo (
photo = f " { IMG_1 } " ,
2021-11-15 09:42:34 +00:00
caption = f " 💡 **Track added to queue »** ` { pos } ` \n \n 💭 **Chat:** ` { chat_id } ` \n 🎧 **Request by:** { requester } " ,
2021-10-29 19:01:26 +00:00
reply_markup = keyboard ,
)
else :
if Q == 720 :
amaze = HighQualityVideo ( )
elif Q == 480 :
amaze = MediumQualityVideo ( )
elif Q == 360 :
amaze = LowQualityVideo ( )
try :
2021-11-22 09:45:51 +00:00
await loser . edit ( " 🔄 **Joining vc...** " )
2021-10-29 19:01:26 +00:00
await call_py . join_group_call (
chat_id ,
2021-11-01 14:04:49 +00:00
AudioVideoPiped (
2021-11-03 00:01:25 +00:00
livelink ,
HighQualityAudio ( ) ,
2021-11-01 14:09:30 +00:00
amaze ,
2021-11-01 14:04:49 +00:00
) ,
2021-11-11 06:55:32 +00:00
stream_type = StreamType ( ) . live_stream ,
2021-10-29 19:01:26 +00:00
)
add_to_queue ( chat_id , " Live Stream " , livelink , link , " Video " , Q )
await loser . delete ( )
2021-11-03 00:01:25 +00:00
requester = (
f " [ { m . from_user . first_name } ](tg://user?id= { m . from_user . id } ) "
)
2021-10-29 19:01:26 +00:00
await m . reply_photo (
photo = f " { IMG_2 } " ,
2021-11-15 09:42:34 +00:00
caption = f " 💡 **[Video live]( { link } ) stream started.** \n \n 💭 **Chat:** ` { chat_id } ` \n 💡 **Status:** `Playing` \n 🎧 **Request by:** { requester } " ,
2021-10-29 19:01:26 +00:00
reply_markup = keyboard ,
)
except Exception as ep :
2021-11-07 06:05:34 +00:00
await loser . delete ( )
2021-10-29 19:01:26 +00:00
await m . reply_text ( f " 🚫 error: ` { ep } ` " )