Files
FileStreamBot/WebStreamer/bot/plugins/start.py

262 lines
12 KiB
Python
Raw Normal View History

2022-01-02 19:22:16 +05:30
import urllib.parse
2021-05-02 21:44:27 +05:30
from WebStreamer.bot import StreamBot
from WebStreamer.vars import Var
from WebStreamer.utils.human_readable import humanbytes
from WebStreamer.utils.database import Database
from pyrogram import filters
from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from pyrogram.errors import UserNotParticipant
2022-05-28 10:49:41 +05:30
from pyrogram.enums.parse_mode import ParseMode
2022-01-02 19:22:16 +05:30
2021-05-02 21:44:27 +05:30
db = Database(Var.DATABASE_URL, Var.SESSION_NAME)
2021-07-01 15:56:52 +05:30
START_TEXT = """
<i>👋 Hᴇʏ,</i>{}\n
<i>I'ᴍ Tᴇʟᴇɢʀᴀᴍ Fɪʟᴇs Sᴛʀᴇᴀᴍɪɴɢ Bᴛ ᴀs ᴡᴇʟʟ Dɪʀᴇᴛ Lɪɴᴋs Gᴇɴᴇʀᴀᴛᴇ</i>\n
<i>ɪ ᴏɴ Hᴇʟᴘ ᴛᴏ ɢᴇᴛ ᴍᴏʀᴇ ɪɴғᴏʀᴍᴀᴛɪᴏɴ</i>\n
<i><u>𝗪𝗔𝗥𝗡𝗜𝗡𝗚 🚸</u></i>
<b>🔞 ɴ ᴄᴏɴᴛᴇɴᴛꜱ ʟᴇᴀᴅꜱ ᴛᴏ ᴘᴇʀᴍᴀɴᴇɴᴛ ʙᴀɴ ʏ.</b>\n\n
<i><b>🍃 B Mᴀɪɴᴛᴀɪɴᴇᴅ Bʏ :</b>@AvishkarPatil</i>"""
HELP_TEXT = """
<i>- Sᴇɴᴅ ᴍᴇ ᴀɴʏ ꜰɪʟᴇ (ᴏʀ) ᴍᴇᴅɪᴀ ꜰʀᴏᴍ ᴛᴇʟᴇɢʀᴀᴍ.</i>
<i>- I ᴡɪʟʟ ᴘʀᴏᴠɪᴅᴇ ᴇxᴛᴇʀɴᴀʟ ᴅɪʀᴇᴄᴛ ᴅᴏᴡɴʟᴏᴀᴅ ʟɪɴᴋ !.</i>
<i>- Aᴅᴅ Mᴇ ɪɴ ʏᴏᴜʀ Cʜᴀɴɴᴇʟ Fʀ Dɪʀᴇ Dɴʟᴀᴅ Lɪɴᴋs Bᴛᴛɴ</i>
<i>- ɪs Pᴇʀᴍᴇᴀɴᴛ Lɪɴᴋ Wɪᴛʜ Fᴀsᴛᴇsᴛ Sᴘᴇᴇᴅ</i>\n
<u>🔸 𝗪𝗔𝗥𝗡𝗜𝗡𝗚 🚸</u>\n
<b>🔞 ɴ ᴄᴏɴᴛᴇɴᴛꜱ ʟᴇᴀᴅꜱ ᴛᴏ ᴘᴇʀᴍᴀɴᴇɴᴛ ʙᴀɴ ʏ.</b>\n
<i>Cɴᴛᴀ ᴅᴇᴠᴇʟᴏᴘᴇʀ (ᴏʀ) ʀᴇᴘᴏʀᴛ ʙᴜɢꜱ</i> <b>: <a href='https://t.me/Avishkarpatil'>[ ᴄʟɪᴄᴋ ʜᴇʀᴇ ]</a></b>"""
ABOUT_TEXT = """
<b> Mʏ ɴᴀᴍᴇ : FileStreamX</b>\n
<b>🔸Vᴇʀɪɴ : <a href='https://telegram.me/AvishkarPatil'>3.0.1</a></b>\n
2021-07-11 15:38:28 +05:30
<b>🔹Sʀ : <a href='https://github.com/avipatilpro/FileStreamBot'>ɪ Hᴇʀᴇ</a></b>\n
2021-07-01 15:56:52 +05:30
<b>🔸GitHub : <a href='https://GitHub.com/avipatilpro'>Fʟʟ</a></b>\n
<b>🔹Dᴇᴇʟᴘᴇʀ : <a href='https://telegram.me/Avishkarpatil'>Aɪsʜᴋᴀʀ Pᴀᴛɪʟ</a></b>\n
2021-07-11 15:27:39 +05:30
<b>🔸Lᴀ ᴜᴘᴅᴀᴛᴇᴅ : <a href='https://telegram.me/AvishkarPatil'>[ 11-ᴊᴜʟʏ-21 ] 04:35 PM</a></b>"""
2021-07-01 15:56:52 +05:30
START_BUTTONS = InlineKeyboardMarkup(
[[
InlineKeyboardButton('Hᴇʟᴘ', callback_data='help'),
InlineKeyboardButton('', callback_data='about'),
InlineKeyboardButton('sᴇ', callback_data='close')
]]
)
HELP_BUTTONS = InlineKeyboardMarkup(
[[
InlineKeyboardButton('Hᴍᴇ', callback_data='home'),
InlineKeyboardButton('', callback_data='about'),
InlineKeyboardButton('sᴇ', callback_data='close')
]]
)
ABOUT_BUTTONS = InlineKeyboardMarkup(
[[
InlineKeyboardButton('Hᴍᴇ', callback_data='home'),
InlineKeyboardButton('Hᴇʟᴘ', callback_data='help'),
InlineKeyboardButton('sᴇ', callback_data='close')
]]
)
@StreamBot.on_callback_query()
async def cb_data(bot, update):
if update.data == "home":
await update.message.edit_text(
text=START_TEXT.format(update.from_user.mention),
disable_web_page_preview=True,
reply_markup=START_BUTTONS
)
elif update.data == "help":
await update.message.edit_text(
text=HELP_TEXT,
disable_web_page_preview=True,
reply_markup=HELP_BUTTONS
)
elif update.data == "about":
await update.message.edit_text(
text=ABOUT_TEXT,
disable_web_page_preview=True,
reply_markup=ABOUT_BUTTONS
)
else:
await update.message.delete()
2022-01-02 19:22:16 +05:30
def get_media_file_size(m):
media = m.video or m.audio or m.document
if media and media.file_size:
return media.file_size
else:
return None
def get_media_file_name(m):
media = m.video or m.document or m.audio
if media and media.file_name:
return urllib.parse.quote_plus(media.file_name)
else:
return None
2021-05-02 21:44:27 +05:30
2022-05-28 10:49:41 +05:30
@StreamBot.on_message(filters.command('start') & filters.private)
2021-05-02 21:44:27 +05:30
async def start(b, m):
if not await db.is_user_exist(m.from_user.id):
await db.add_user(m.from_user.id)
await b.send_message(
Var.BIN_CHANNEL,
2021-06-05 22:58:45 +05:30
f"**Nᴇ Usᴇʀ Jɪɴᴇᴅ:** \n\n__Mʏ Nᴇɪᴇɴᴅ__ [{m.from_user.first_name}](tg://user?id={m.from_user.id}) __Sᴛᴀʀᴛᴇᴅ Yʀ Bᴛ !!__"
2021-05-02 21:44:27 +05:30
)
usr_cmd = m.text.split("_")[-1]
if usr_cmd == "/start":
2021-05-24 17:55:59 +05:30
if Var.UPDATES_CHANNEL != "None":
2021-05-02 21:44:27 +05:30
try:
user = await b.get_chat_member(Var.UPDATES_CHANNEL, m.chat.id)
if user.status == "kicked":
await b.send_message(
chat_id=m.chat.id,
2021-06-05 13:48:07 +05:30
text="__Sʀʀʏ Sɪʀ, Y ᴀʀᴇ Bᴀɴɴᴇᴅ ᴛᴏ sᴇ ᴍᴇ. Cɴᴛᴀᴛ ᴛʜᴇ Dᴇᴇʟᴘᴇʀ__\n\n @AvishkarPatil **Tʜᴇʏ Wɪʟʟ Hᴇʟᴘ Y**",
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.MARKDOWN,
2021-05-02 21:44:27 +05:30
disable_web_page_preview=True
)
return
except UserNotParticipant:
await b.send_message(
chat_id=m.chat.id,
2021-06-05 13:48:07 +05:30
text="<i>Jɪɴ ᴍʏ ᴜᴘᴅᴀᴛᴇ ᴄʜᴀɴɴᴇʟ ᴛᴏ sᴇ ᴍᴇ 🔐</i>",
2021-05-02 21:44:27 +05:30
reply_markup=InlineKeyboardMarkup(
2021-07-01 15:56:52 +05:30
[[
InlineKeyboardButton("Jɪɴ ɴᴏᴡ 🔓", url=f"https://t.me/{Var.UPDATES_CHANNEL}")
]]
2021-05-02 21:44:27 +05:30
),
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.HTML
2021-05-02 21:44:27 +05:30
)
return
except Exception:
await b.send_message(
chat_id=m.chat.id,
2021-05-15 23:34:35 +05:30
text="<i>Sᴍᴇᴛʜɪɴɢ ᴡʀᴏɴɢ ᴄᴏɴᴛᴀᴄᴛ ᴍʏ ᴅᴇᴠᴇʟᴏᴘᴇʀ</i> <b><a href='http://t.me/Avishkarpatil'>[ ᴄʟɪᴄᴋ ʜᴇʀᴇ ]</a></b>",
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.HTML,
2021-05-02 21:44:27 +05:30
disable_web_page_preview=True)
return
await m.reply_text(
2021-07-01 15:56:52 +05:30
text=START_TEXT.format(m.from_user.mention),
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.HTML,
2021-05-15 23:34:35 +05:30
disable_web_page_preview=True,
2021-07-01 15:56:52 +05:30
reply_markup=START_BUTTONS
)
2021-05-15 23:34:35 +05:30
2021-05-02 21:44:27 +05:30
else:
2021-05-24 17:55:59 +05:30
if Var.UPDATES_CHANNEL != "None":
2021-05-02 21:44:27 +05:30
try:
user = await b.get_chat_member(Var.UPDATES_CHANNEL, m.chat.id)
if user.status == "kicked":
await b.send_message(
chat_id=m.chat.id,
2021-06-05 22:58:45 +05:30
text="**Sʀʀʏ Sɪʀ, Y ᴀʀᴇ Bᴀɴɴᴇᴅ ᴛᴏ sᴇ ᴍᴇ. Qɪᴋʟʏ ᴄᴏɴᴛᴀᴄᴛ** @Avishkarpatil",
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.MARKDOWN,
2021-05-02 21:44:27 +05:30
disable_web_page_preview=True
)
return
except UserNotParticipant:
await b.send_message(
chat_id=m.chat.id,
2021-06-05 13:48:07 +05:30
text="**Pʟᴇᴀsᴇ Jɪɴ Mʏ Uᴘᴅᴀᴛᴇs Cʜᴀɴɴᴇʟ ᴛᴏ sᴇ ᴛʜɪs Bᴛ**!\n\n**Dᴇ ᴛᴏ Oᴇʀʟᴀᴅ, Oɴʟʏ Cʜᴀɴɴᴇʟ Sʙsʀɪʙᴇʀs ᴄᴀɴ sᴇ ᴛʜᴇ Bᴛ**!",
2021-05-02 21:44:27 +05:30
reply_markup=InlineKeyboardMarkup(
2021-07-01 15:56:52 +05:30
[[
2022-01-02 19:22:16 +05:30
InlineKeyboardButton("🤖 Jɪɴ Uᴘᴅᴀᴛᴇs Cʜᴀɴɴᴇʟ", url=f"https://t.me/{Var.UPDATES_CHANNEL}")],
[InlineKeyboardButton("🔄 Refresh / Try Again", url=f"https://t.me/{(await b.get_me()).username}?start=AvishkarPatil_{usr_cmd}")
]]
2021-05-02 21:44:27 +05:30
),
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.MARKDOWN
2021-05-02 21:44:27 +05:30
)
return
except Exception:
await b.send_message(
chat_id=m.chat.id,
2021-06-05 13:48:07 +05:30
text="**Sᴍᴇᴛʜɪɴɢ ᴡᴇɴᴛ Wʀɴɢ. Cɴᴛᴀᴛ ᴍᴇ** [Aɪsʜᴋᴀʀ Pᴀᴛɪʟ](https://t.me/Avishkarpatil).",
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.MARKDOWN,
2021-05-02 21:44:27 +05:30
disable_web_page_preview=True)
return
get_msg = await b.get_messages(chat_id=Var.BIN_CHANNEL, message_ids=int(usr_cmd))
2022-01-02 19:22:16 +05:30
file_name = get_media_file_name(get_msg)
file_size = humanbytes(get_media_file_size(get_msg))
2021-05-02 21:44:27 +05:30
2022-05-28 10:49:41 +05:30
stream_link = "https://{}/{}/{}".format(Var.FQDN, get_msg.id, file_name) if Var.ON_HEROKU or Var.NO_PORT else \
2022-01-02 19:22:16 +05:30
"http://{}:{}/{}/{}".format(Var.FQDN,
2021-05-02 21:44:27 +05:30
Var.PORT,
2022-05-28 10:49:41 +05:30
get_msg.id,
2022-01-02 19:22:16 +05:30
file_name)
2021-05-02 21:44:27 +05:30
2021-05-15 23:34:35 +05:30
msg_text ="""
2021-07-02 11:15:52 +05:30
<i><u>𝗬𝗼𝘂𝗿 𝗟𝗶𝗻𝗸 𝗚𝗲𝗻𝗲𝗿𝗮𝘁𝗲𝗱 !</u></i>\n
<b>📂 Fɪʟᴇ ɴᴀᴍᴇ :</b> <i>{}</i>\n
<b>📦 Fɪʟᴇ ꜱɪᴢᴇ :</b> <i>{}</i>\n
<b>📥 Dɴʟᴀᴅ :</b> <i>{}</i>\n
<b>🚸 Nᴛᴇ : Lɪɴᴋ ᴇxᴘɪʀᴇᴅ ɪɴ 24 ʜᴏᴜʀꜱ</b>\n
2021-05-15 23:34:35 +05:30
<i>🍃 B Mᴀɪɴᴛᴀɪɴᴇᴅ Bʏ :</i> <b>@AvishkarPatil</b>
"""
2021-05-02 21:44:27 +05:30
await m.reply_text(
text=msg_text.format(file_name, file_size, stream_link),
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.HTML,
2021-05-15 23:34:35 +05:30
reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton("Dɴʟᴀᴅ ɴᴏᴡ 📥", url=stream_link)]])
2021-05-02 21:44:27 +05:30
)
2022-01-02 19:22:16 +05:30
2021-07-01 15:56:52 +05:30
@StreamBot.on_message(filters.private & filters.command(["about"]))
async def start(bot, update):
await update.reply_text(
text=ABOUT_TEXT.format(update.from_user.mention),
disable_web_page_preview=True,
reply_markup=ABOUT_BUTTONS
)
2022-05-28 10:49:41 +05:30
@StreamBot.on_message(filters.command('help') & filters.private)
2021-05-02 21:44:27 +05:30
async def help_handler(bot, message):
if not await db.is_user_exist(message.from_user.id):
await db.add_user(message.from_user.id)
await bot.send_message(
Var.BIN_CHANNEL,
2021-06-05 22:58:45 +05:30
f"**Nᴇ Usᴇʀ Jɪɴᴇᴅ **\n\n__Mʏ Nᴇɪᴇɴᴅ__ [{message.from_user.first_name}](tg://user?id={message.from_user.id}) __Started Your Bot !!__"
2021-05-02 21:44:27 +05:30
)
if Var.UPDATES_CHANNEL is not None:
try:
user = await bot.get_chat_member(Var.UPDATES_CHANNEL, message.chat.id)
if user.status == "kicked":
await bot.send_message(
chat_id=message.chat.id,
2021-06-05 13:48:07 +05:30
text="<i>Sʀʀʏ Sɪʀ, Y ᴀʀᴇ Bᴀɴɴᴇᴅ ᴛᴏ sᴇ ᴍᴇ. Cɴᴛᴀᴛ ᴛʜᴇ Dᴇᴇʟᴘᴇʀ</i>",
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.HTML,
2021-05-02 21:44:27 +05:30
disable_web_page_preview=True
)
return
except UserNotParticipant:
await bot.send_message(
chat_id=message.chat.id,
2021-06-05 13:48:07 +05:30
text="**Pʟᴇᴀsᴇ Jɪɴ Mʏ Uᴘᴅᴀᴛᴇs Cʜᴀɴɴᴇʟ ᴛᴏ sᴇ ᴛʜɪs Bᴛ!**\n\n__Dᴇ ᴛᴏ Oᴇʀʟᴀᴅ, Oɴʟʏ Cʜᴀɴɴᴇʟ Sʙsʀɪʙᴇʀs ᴄᴀɴ sᴇ ᴛʜᴇ Bᴛ!__",
2021-05-02 21:44:27 +05:30
reply_markup=InlineKeyboardMarkup(
2021-07-01 15:56:52 +05:30
[[
InlineKeyboardButton("🤖 Jɪɴ Uᴘᴅᴀᴛᴇs Cʜᴀɴɴᴇʟ", url=f"https://t.me/{Var.UPDATES_CHANNEL}")
]]
2021-05-02 21:44:27 +05:30
),
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.MARKDOWN
2021-05-02 21:44:27 +05:30
)
return
except Exception:
await bot.send_message(
chat_id=message.chat.id,
2021-06-05 13:48:07 +05:30
text="__Sᴍᴇᴛʜɪɴɢ ᴡᴇɴᴛ Wʀɴɢ. Cɴᴛᴀᴛ ᴍᴇ__ [Aɪsʜᴋᴀʀ Pᴀᴛɪʟ](https://t.me/Avishkarpatil).",
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.MARKDOWN,
2021-05-02 21:44:27 +05:30
disable_web_page_preview=True)
return
await message.reply_text(
2021-07-11 15:25:46 +05:30
text=HELP_TEXT,
2022-05-28 10:49:41 +05:30
parse_mode=ParseMode.HTML,
2021-05-02 21:44:27 +05:30
disable_web_page_preview=True,
2021-07-01 15:56:52 +05:30
reply_markup=HELP_BUTTONS
2021-05-02 21:44:27 +05:30
)
2022-01-02 19:22:16 +05:30