2021-05-15 23:37:14 +05:30
# (c) @Avishkarpatil
2021-04-16 19:37:44 +05:30
2021-04-20 15:14:57 +06:00
import asyncio
2021-04-16 19:37:44 +05:30
from WebStreamer . bot import StreamBot
2021-04-20 15:14:57 +06:00
from WebStreamer . utils . database import Database
from WebStreamer . utils . human_readable import humanbytes
2021-04-16 19:37:44 +05:30
from WebStreamer . vars import Var
2021-04-20 15:14:57 +06:00
from pyrogram import filters , Client
from pyrogram . errors import FloodWait , UserNotParticipant
2021-04-16 19:37:44 +05:30
from pyrogram . types import Message , InlineKeyboardMarkup , InlineKeyboardButton
2021-04-20 15:14:57 +06:00
db = Database ( Var . DATABASE_URL , Var . SESSION_NAME )
2021-04-16 19:37:44 +05:30
2021-04-20 15:14:57 +06:00
@StreamBot.on_message ( filters . private & ( filters . document | filters . video | filters . audio ) & ~ filters . edited , group = 4 )
async def private_receive_handler ( c : Client , m : Message ) :
if not await db . is_user_exist ( m . from_user . id ) :
await db . add_user ( m . from_user . id )
await c . send_message (
Var . BIN_CHANNEL ,
f " #NEW_USER: \n \n New User [ { m . from_user . first_name } ](tg://user?id= { m . from_user . id } ) Started !! "
)
if Var . UPDATES_CHANNEL is not None :
try :
user = await c . get_chat_member ( Var . UPDATES_CHANNEL , m . chat . id )
if user . status == " kicked " :
await c . send_message (
chat_id = m . chat . id ,
2021-05-15 23:37:14 +05:30
text = " __Sorry Sir, You are Banned to use me.__ \n **Contact Developer @Avishkarpatil** " ,
2021-04-20 15:14:57 +06:00
parse_mode = " markdown " ,
disable_web_page_preview = True
)
return
except UserNotParticipant :
await c . send_message (
chat_id = m . chat . id ,
2021-05-15 23:37:14 +05:30
text = """ <i>Jᴏ ɪ ɴ ᴍʏ ᴜᴘᴅᴀᴛᴇ ᴄʜᴀɴɴᴇʟ ᴛᴏ ᴜꜱᴇ ᴍᴇ 🔐</i> """ ,
2021-04-20 15:14:57 +06:00
reply_markup = InlineKeyboardMarkup (
[
[
2021-05-15 23:37:14 +05:30
InlineKeyboardButton ( " Jᴏ ɪ ɴ ɴᴏᴡ 🔓 " , url = f " https://t.me/ { Var . UPDATES_CHANNEL } " )
2021-04-20 15:14:57 +06:00
]
]
) ,
2021-05-15 23:37:14 +05:30
parse_mode = " HTML "
2021-04-20 15:14:57 +06:00
)
return
except Exception :
await c . send_message (
chat_id = m . chat . id ,
2021-04-22 11:54:30 +05:30
text = " Something went Wrong. Contact my boss @Avishkarpatil " ,
2021-04-20 15:14:57 +06:00
parse_mode = " markdown " ,
disable_web_page_preview = True )
return
try :
log_msg = await m . forward ( chat_id = Var . BIN_CHANNEL )
stream_link = " https:// {} / {} " . format ( Var . FQDN , log_msg . message_id ) if Var . ON_HEROKU or Var . NO_PORT else \
" http:// {} : {} / {} " . format ( Var . FQDN ,
Var . PORT ,
log_msg . message_id )
file_size = None
if m . video :
file_size = f " { humanbytes ( m . video . file_size ) } "
elif m . document :
file_size = f " { humanbytes ( m . document . file_size ) } "
elif m . audio :
file_size = f " { humanbytes ( m . audio . file_size ) } "
file_name = None
if m . video :
file_name = f " { m . video . file_name } "
elif m . document :
file_name = f " { m . document . file_name } "
elif m . audio :
file_name = f " { m . audio . file_name } "
2021-05-15 23:37:14 +05:30
msg_text = """
< i > < u > 𝗬 𝗼 𝘂 𝗿 𝗟 𝗶 𝗻 𝗸 𝗚 𝗲 𝗻 𝗲 𝗿 𝗮 𝘁 𝗲 𝗱 ! < / u > < / i >
< b > 📂 Fɪ ʟᴇ ɴᴀᴍᴇ : < / b > < i > { } < / i >
< b > 📦 Fɪ ʟᴇ ꜱɪᴢᴇ : < / b > < i > { } < / i >
< b > 📥 Dᴏ ᴡ ɴʟᴏ ᴀᴅ : < / b > < i > { } < / i >
< b > 🚸 Nᴏ ᴛᴇ : Lɪ ɴᴋ ᴇxᴘɪ ʀᴇᴅ ɪɴ 24 ʜᴏᴜʀꜱ < / b > """
await log_msg . reply_text ( text = f " **RᴇQᴜ ᴇꜱ ᴛᴇᴅ ʙʏ :** [ { m . from_user . first_name } ](tg://user?id= { m . from_user . id } ) \n **Uꜱ ᴇʀ ɪᴅ :** ` { m . from_user . id } ` \n **Dᴏ ᴡ ɴʟᴏ ᴀᴅ ʟɪɴᴋ :** { stream_link } " , disable_web_page_preview = True , parse_mode = " Markdown " , quote = True )
2021-04-20 15:14:57 +06:00
await m . reply_text (
text = msg_text . format ( file_name , file_size , stream_link ) ,
2021-05-15 23:37:14 +05:30
parse_mode = " HTML " ,
disable_web_page_preview = True ,
reply_markup = InlineKeyboardMarkup ( [ [ InlineKeyboardButton ( " Dᴏ ᴡ ɴʟᴏ ᴀᴅ ɴᴏᴡ 📥 " , url = stream_link ) ] ] ) ,
2021-04-20 15:14:57 +06:00
quote = True
)
except FloodWait as e :
print ( f " Sleeping for { str ( e . x ) } s " )
await asyncio . sleep ( e . x )
await c . send_message ( chat_id = Var . BIN_CHANNEL , text = f " Got FloodWait of { str ( e . x ) } s from [ { m . from_user . first_name } ](tg://user?id= { m . from_user . id } ) \n \n **User ID:** ` { str ( m . from_user . id ) } ` " , disable_web_page_preview = True , parse_mode = " Markdown " )
@StreamBot.on_message ( filters . channel & ( filters . document | filters . video ) & ~ filters . edited , group = - 1 )
async def channel_receive_handler ( bot , broadcast ) :
if int ( broadcast . chat . id ) in Var . BANNED_CHANNELS :
await bot . leave_chat ( broadcast . chat . id )
return
try :
log_msg = await broadcast . forward ( chat_id = Var . BIN_CHANNEL )
await log_msg . reply_text (
2021-04-25 18:32:17 +05:30
text = f " **Channel Name:** ` { broadcast . chat . title } ` \n **Channel ID:** ` { broadcast . chat . id } ` \n **Link:** https://avifilestreambot.herokuapp.com/ { str ( log_msg . message_id ) } " ,
2021-04-20 15:14:57 +06:00
quote = True ,
parse_mode = " Markdown "
)
await bot . edit_message_reply_markup (
chat_id = broadcast . chat . id ,
message_id = broadcast . message_id ,
reply_markup = InlineKeyboardMarkup (
[
2021-05-15 23:37:14 +05:30
[ InlineKeyboardButton ( " Dᴏ ᴡ ɴʟᴏ ᴀᴅ ʟɪɴᴋ 📥 " , url = f " https://xtreamfile.herokuapp.com/ { str ( log_msg . message_id ) } " ) ]
2021-04-20 15:14:57 +06:00
]
)
)
except FloodWait as w :
print ( f " Sleeping for { str ( w . x ) } s " )
await asyncio . sleep ( w . x )
await bot . send_message ( chat_id = Var . BIN_CHANNEL ,
text = f " Got FloodWait of { str ( w . x ) } s from { broadcast . chat . title } \n \n **Channel ID:** ` { str ( broadcast . chat . id ) } ` " ,
disable_web_page_preview = True , parse_mode = " Markdown " )
except Exception as e :
await bot . send_message ( chat_id = Var . BIN_CHANNEL , text = f " #ERROR_TRACEBACK: ` { e } ` " , disable_web_page_preview = True , parse_mode = " Markdown " )
2021-04-22 11:54:30 +05:30
print ( f " Can ' t Edit Broadcast Message! \n Error: { e } " )