2021-10-11 03:16:54 +00:00
from datetime import datetime
2021-10-25 21:15:41 +00:00
from sys import version_info
2021-10-11 03:16:54 +00:00
from time import time
2021-10-25 21:15:41 +00:00
from config import (
ALIVE_IMG ,
ALIVE_NAME ,
BOT_NAME ,
BOT_USERNAME ,
GROUP_SUPPORT ,
OWNER_NAME ,
UPDATES_CHANNEL ,
)
from program import __version__
2021-11-26 04:24:58 +00:00
from driver . veez import user
2021-10-28 05:31:23 +00:00
from driver . filters import command , other_filters
2021-10-11 03:16:54 +00:00
from pyrogram import Client , filters
2021-10-25 21:15:41 +00:00
from pyrogram import __version__ as pyrover
2021-10-25 21:20:03 +00:00
from pytgcalls import ( __version__ as pytover )
2021-10-25 21:15:41 +00:00
from pyrogram . types import InlineKeyboardButton , InlineKeyboardMarkup , Message
__major__ = 0
__minor__ = 2
__micro__ = 1
__python_version__ = f " { version_info [ 0 ] } . { version_info [ 1 ] } . { version_info [ 2 ] } "
2021-10-11 03:16:54 +00:00
START_TIME = datetime . utcnow ( )
START_TIME_ISO = START_TIME . replace ( microsecond = 0 ) . isoformat ( )
TIME_DURATION_UNITS = (
2021-10-25 21:15:41 +00:00
( " week " , 60 * 60 * 24 * 7 ) ,
( " day " , 60 * 60 * 24 ) ,
( " hour " , 60 * 60 ) ,
( " min " , 60 ) ,
( " sec " , 1 ) ,
2021-10-11 03:16:54 +00:00
)
async def _human_time_duration ( seconds ) :
if seconds == 0 :
2021-10-25 21:15:41 +00:00
return " inf "
2021-10-11 03:16:54 +00:00
parts = [ ]
for unit , div in TIME_DURATION_UNITS :
amount , seconds = divmod ( int ( seconds ) , div )
if amount > 0 :
2021-10-25 21:15:41 +00:00
parts . append ( " {} {} {} " . format ( amount , unit , " " if amount == 1 else " s " ) )
return " , " . join ( parts )
@Client.on_message (
command ( [ " start " , f " start@ { BOT_USERNAME } " ] ) & filters . private & ~ filters . edited
)
async def start_ ( client : Client , message : Message ) :
await message . reply_text (
f """ ✨ **Welcome { message . from_user . mention ( ) } !** \n
2021-11-01 21:26:03 +00:00
💭 [ { BOT_NAME } ] ( https : / / t . me / { BOT_USERNAME } ) * * Allows you to play music and video on groups through the new Telegram ' s video chats!**
2021-10-25 21:15:41 +00:00
💡 * * Find out all the Bot ' s commands and how they work by clicking on the » 📚 Commands button!**
2021-10-30 12:58:17 +00:00
🔖 * * To know how to use this bot , please click on the » ❓ Basic Guide button ! * *
2021-10-28 11:07:18 +00:00
""" ,
2021-10-25 21:15:41 +00:00
reply_markup = InlineKeyboardMarkup (
[
[
2021-10-11 03:16:54 +00:00
InlineKeyboardButton (
2021-10-25 21:15:41 +00:00
" ➕ 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 " ) ,
2021-10-30 12:58:17 +00:00
InlineKeyboardButton ( " ❤️ Donate " , url = f " https://t.me/ { OWNER_NAME } " ) ,
2021-10-25 21:15:41 +00:00
] ,
[
2021-10-11 03:16:54 +00:00
InlineKeyboardButton (
2021-10-25 21:15:41 +00:00
" 👥 Official Group " , url = f " https://t.me/ { GROUP_SUPPORT } "
) ,
2021-10-11 03:16:54 +00:00
InlineKeyboardButton (
2021-10-25 21:15:41 +00:00
" 📣 Official Channel " , url = f " https://t.me/ { UPDATES_CHANNEL } "
) ,
] ,
[
2021-10-11 03:16:54 +00:00
InlineKeyboardButton (
2021-10-25 21:15:41 +00:00
" 🌐 Source Code " , url = " https://github.com/levina-lab/video-stream "
)
] ,
]
) ,
disable_web_page_preview = True ,
)
@Client.on_message (
command ( [ " alive " , f " alive@ { BOT_USERNAME } " ] ) & filters . group & ~ filters . edited
)
async def alive ( client : Client , message : Message ) :
2021-10-11 03:16:54 +00:00
current_time = datetime . utcnow ( )
uptime_sec = ( current_time - START_TIME ) . total_seconds ( )
uptime = await _human_time_duration ( int ( uptime_sec ) )
2021-10-25 21:15:41 +00:00
keyboard = InlineKeyboardMarkup (
[
2021-10-11 03:16:54 +00:00
[
2021-10-25 21:15:41 +00:00
InlineKeyboardButton ( " ✨ Group " , url = f " https://t.me/ { GROUP_SUPPORT } " ) ,
InlineKeyboardButton (
" 📣 Channel " , url = f " https://t.me/ { UPDATES_CHANNEL } "
) ,
2021-10-11 03:16:54 +00:00
]
2021-10-25 21:15:41 +00:00
]
2021-10-11 03:16:54 +00:00
)
2021-11-01 21:26:03 +00:00
alive = f " **Hello { message . from_user . mention ( ) } , i ' m { BOT_NAME } ** \n \n ✨ Bot is working normally \n 🍀 My Master: [ { ALIVE_NAME } ](https://t.me/ { OWNER_NAME } ) \n ✨ Bot Version: `v { __version__ } ` \n 🍀 Pyrogram Version: ` { pyrover } ` \n ✨ Python Version: ` { __python_version__ } ` \n 🍀 PyTgCalls version: ` { pytover . __version__ } ` \n ✨ Uptime Status: ` { uptime } ` \n \n **Thanks for Adding me here, for playing video & music on your Group ' s video chat** ❤ "
2021-10-11 03:16:54 +00:00
2021-10-25 21:15:41 +00:00
await message . reply_photo (
photo = f " { ALIVE_IMG } " ,
caption = alive ,
reply_markup = keyboard ,
2021-10-11 03:16:54 +00:00
)
2021-10-25 21:15:41 +00:00
@Client.on_message ( command ( [ " ping " , f " ping@ { BOT_USERNAME } " ] ) & ~ filters . edited )
async def ping_pong ( client : Client , message : Message ) :
start = time ( )
m_reply = await message . reply_text ( " pinging... " )
delta_ping = time ( ) - start
await m_reply . edit_text ( " 🏓 `PONG!!` \n " f " ⚡️ ` { delta_ping * 1000 : .3f } ms` " )
@Client.on_message ( command ( [ " uptime " , f " uptime@ { BOT_USERNAME } " ] ) & ~ filters . edited )
async def get_uptime ( client : Client , message : Message ) :
2021-10-11 03:16:54 +00:00
current_time = datetime . utcnow ( )
uptime_sec = ( current_time - START_TIME ) . total_seconds ( )
uptime = await _human_time_duration ( int ( uptime_sec ) )
2021-10-25 21:15:41 +00:00
await message . reply_text (
" 🤖 bot status: \n "
2021-10-11 03:16:54 +00:00
f " • **uptime:** ` { uptime } ` \n "
f " • **start time:** ` { START_TIME_ISO } ` "
)
2021-11-26 04:24:58 +00:00
@Client.on_message ( filters . new_chat_members )
async def new_chat ( c : Client , m : Message ) :
ass_uname = ( await user . get_me ( ) ) . username
bot_id = ( await c . get_me ( ) ) . id
for member in m . new_chat_members :
if member . id == bot_id :
return await m . reply (
" ❤️ **Thanks for adding me to the Group !** \n \n "
2021-11-26 06:48:08 +00:00
" **Promote me as administrator of the Group, otherwise I will not be able to work properly, and don ' t forget to type /userbotjoin for invite the assistant.** \n \n "
2021-11-26 04:24:58 +00:00
" **Once done, type** /reload " ,
reply_markup = InlineKeyboardMarkup (
[
[
InlineKeyboardButton ( " 📣 Channel " , url = f " https://t.me/ { UPDATES_CHANNEL } " ) ,
InlineKeyboardButton ( " 💭 Support " , url = f " https://t.me/ { GROUP_SUPPORT } " )
] ,
[
InlineKeyboardButton ( " 👤 Assistant " , url = f " https://t.me/ { ass_uname } " )
]
]
)
)