From 87e0fc1e2b2fac7e11ca5d3c81c6e93e6e9c6690 Mon Sep 17 00:00:00 2001 From: DeekshithSH Date: Sat, 28 May 2022 10:49:41 +0530 Subject: [PATCH] Pyrogram v2.0 --- WebStreamer/bot/__init__.py | 2 +- WebStreamer/bot/plugins/admin.py | 7 +++--- WebStreamer/bot/plugins/start.py | 33 +++++++++++++------------ WebStreamer/bot/plugins/stream.py | 41 ++++++++++++++++--------------- requirements.txt | 2 +- 5 files changed, 44 insertions(+), 41 deletions(-) diff --git a/WebStreamer/bot/__init__.py b/WebStreamer/bot/__init__.py index dd02cd1..e5ad8db 100644 --- a/WebStreamer/bot/__init__.py +++ b/WebStreamer/bot/__init__.py @@ -3,7 +3,7 @@ from pyrogram import Client from ..vars import Var StreamBot = Client( - session_name='Web Streamer', + name='Web Streamer', api_id=Var.API_ID, api_hash=Var.API_HASH, bot_token=Var.BOT_TOKEN, diff --git a/WebStreamer/bot/plugins/admin.py b/WebStreamer/bot/plugins/admin.py index 15dbbe1..04372ec 100644 --- a/WebStreamer/bot/plugins/admin.py +++ b/WebStreamer/bot/plugins/admin.py @@ -13,17 +13,18 @@ from WebStreamer.bot import StreamBot from WebStreamer.vars import Var from pyrogram import filters, Client from pyrogram.types import Message +from pyrogram.enums.parse_mode import ParseMode db = Database(Var.DATABASE_URL, Var.SESSION_NAME) broadcast_ids = {} -@StreamBot.on_message(filters.command("status") & filters.private & filters.user(Var.OWNER_ID) & ~filters.edited) +@StreamBot.on_message(filters.command("status") & filters.private & filters.user(Var.OWNER_ID)) async def sts(c: Client, m: Message): total_users = await db.total_users_count() - await m.reply_text(text=f"**Total Users in DB:** `{total_users}`", parse_mode="Markdown", quote=True) + await m.reply_text(text=f"**Total Users in DB:** `{total_users}`", parse_mode=ParseMode.MARKDOWN, quote=True) -@StreamBot.on_message(filters.command("broadcast") & filters.private & filters.user(Var.OWNER_ID) & filters.reply & ~filters.edited) +@StreamBot.on_message(filters.command("broadcast") & filters.private & filters.user(Var.OWNER_ID) & filters.reply) async def broadcast_(c, m): all_users = await db.get_all_users() broadcast_msg = m.reply_to_message diff --git a/WebStreamer/bot/plugins/start.py b/WebStreamer/bot/plugins/start.py index bfbe2bc..dd258a6 100644 --- a/WebStreamer/bot/plugins/start.py +++ b/WebStreamer/bot/plugins/start.py @@ -6,6 +6,7 @@ from WebStreamer.utils.database import Database from pyrogram import filters from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton from pyrogram.errors import UserNotParticipant +from pyrogram.enums.parse_mode import ParseMode db = Database(Var.DATABASE_URL, Var.SESSION_NAME) @@ -95,7 +96,7 @@ def get_media_file_name(m): return None -@StreamBot.on_message(filters.command('start') & filters.private & ~filters.edited) +@StreamBot.on_message(filters.command('start') & filters.private) async def start(b, m): if not await db.is_user_exist(m.from_user.id): await db.add_user(m.from_user.id) @@ -112,7 +113,7 @@ async def start(b, m): await b.send_message( chat_id=m.chat.id, text="__Sᴏʀʀʏ Sɪʀ, Yᴏᴜ ᴀʀᴇ Bᴀɴɴᴇᴅ ᴛᴏ ᴜsᴇ ᴍᴇ. Cᴏɴᴛᴀᴄᴛ ᴛʜᴇ Dᴇᴠᴇʟᴏᴘᴇʀ__\n\n @AvishkarPatil **Tʜᴇʏ Wɪʟʟ Hᴇʟᴘ Yᴏᴜ**", - parse_mode="markdown", + parse_mode=ParseMode.MARKDOWN, disable_web_page_preview=True ) return @@ -125,19 +126,19 @@ async def start(b, m): InlineKeyboardButton("Jᴏɪɴ ɴᴏᴡ 🔓", url=f"https://t.me/{Var.UPDATES_CHANNEL}") ]] ), - parse_mode="HTML" + parse_mode=ParseMode.HTML ) return except Exception: await b.send_message( chat_id=m.chat.id, text="Sᴏᴍᴇᴛʜɪɴɢ ᴡʀᴏɴɢ ᴄᴏɴᴛᴀᴄᴛ ᴍʏ ᴅᴇᴠᴇʟᴏᴘᴇʀ [ ᴄʟɪᴄᴋ ʜᴇʀᴇ ]", - parse_mode="HTML", + parse_mode=ParseMode.HTML, disable_web_page_preview=True) return await m.reply_text( text=START_TEXT.format(m.from_user.mention), - parse_mode="HTML", + parse_mode=ParseMode.HTML, disable_web_page_preview=True, reply_markup=START_BUTTONS ) @@ -151,7 +152,7 @@ async def start(b, m): await b.send_message( chat_id=m.chat.id, text="**Sᴏʀʀʏ Sɪʀ, Yᴏᴜ ᴀʀᴇ Bᴀɴɴᴇᴅ ᴛᴏ ᴜsᴇ ᴍᴇ. Qᴜɪᴄᴋʟʏ ᴄᴏɴᴛᴀᴄᴛ** @Avishkarpatil", - parse_mode="markdown", + parse_mode=ParseMode.MARKDOWN, disable_web_page_preview=True ) return @@ -166,14 +167,14 @@ async def start(b, m): ]] ), - parse_mode="markdown" + parse_mode=ParseMode.MARKDOWN ) return except Exception: await b.send_message( chat_id=m.chat.id, text="**Sᴏᴍᴇᴛʜɪɴɢ ᴡᴇɴᴛ Wʀᴏɴɢ. Cᴏɴᴛᴀᴄᴛ ᴍᴇ** [Aᴠɪsʜᴋᴀʀ Pᴀᴛɪʟ](https://t.me/Avishkarpatil).", - parse_mode="markdown", + parse_mode=ParseMode.MARKDOWN, disable_web_page_preview=True) return @@ -181,10 +182,10 @@ async def start(b, m): file_name = get_media_file_name(get_msg) file_size = humanbytes(get_media_file_size(get_msg)) - stream_link = "https://{}/{}/{}".format(Var.FQDN, get_msg.message_id, file_name) if Var.ON_HEROKU or Var.NO_PORT else \ + stream_link = "https://{}/{}/{}".format(Var.FQDN, get_msg.id, file_name) if Var.ON_HEROKU or Var.NO_PORT else \ "http://{}:{}/{}/{}".format(Var.FQDN, Var.PORT, - get_msg.message_id, + get_msg.id, file_name) msg_text =""" @@ -198,7 +199,7 @@ async def start(b, m): await m.reply_text( text=msg_text.format(file_name, file_size, stream_link), - parse_mode="HTML", + parse_mode=ParseMode.HTML, reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton("Dᴏᴡɴʟᴏᴀᴅ ɴᴏᴡ 📥", url=stream_link)]]) ) @@ -213,7 +214,7 @@ async def start(bot, update): ) -@StreamBot.on_message(filters.command('help') & filters.private & ~filters.edited) +@StreamBot.on_message(filters.command('help') & filters.private) 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) @@ -228,7 +229,7 @@ async def help_handler(bot, message): await bot.send_message( chat_id=message.chat.id, text="Sᴏʀʀʏ Sɪʀ, Yᴏᴜ ᴀʀᴇ Bᴀɴɴᴇᴅ ᴛᴏ ᴜsᴇ ᴍᴇ. Cᴏɴᴛᴀᴄᴛ ᴛʜᴇ Dᴇᴠᴇʟᴏᴘᴇʀ", - parse_mode="HTML", + parse_mode=ParseMode.HTML, disable_web_page_preview=True ) return @@ -241,19 +242,19 @@ async def help_handler(bot, message): InlineKeyboardButton("🤖 Jᴏɪɴ Uᴘᴅᴀᴛᴇs Cʜᴀɴɴᴇʟ", url=f"https://t.me/{Var.UPDATES_CHANNEL}") ]] ), - parse_mode="markdown" + parse_mode=ParseMode.MARKDOWN ) return except Exception: await bot.send_message( chat_id=message.chat.id, text="__Sᴏᴍᴇᴛʜɪɴɢ ᴡᴇɴᴛ Wʀᴏɴɢ. Cᴏɴᴛᴀᴄᴛ ᴍᴇ__ [Aᴠɪsʜᴋᴀʀ Pᴀᴛɪʟ](https://t.me/Avishkarpatil).", - parse_mode="markdown", + parse_mode=ParseMode.MARKDOWN, disable_web_page_preview=True) return await message.reply_text( text=HELP_TEXT, - parse_mode="HTML", + parse_mode=ParseMode.HTML, disable_web_page_preview=True, reply_markup=HELP_BUTTONS ) diff --git a/WebStreamer/bot/plugins/stream.py b/WebStreamer/bot/plugins/stream.py index cd46dd1..e374e21 100644 --- a/WebStreamer/bot/plugins/stream.py +++ b/WebStreamer/bot/plugins/stream.py @@ -11,6 +11,7 @@ from WebStreamer.vars import Var from pyrogram import filters, Client from pyrogram.errors import FloodWait, UserNotParticipant from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton +from pyrogram.enums.parse_mode import ParseMode db = Database(Var.DATABASE_URL, Var.SESSION_NAME) @@ -30,7 +31,7 @@ def get_media_file_name(m): return None -@StreamBot.on_message(filters.private & (filters.document | filters.video | filters.audio) & ~filters.edited, group=4) +@StreamBot.on_message(filters.private & (filters.document | filters.video | filters.audio), 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) @@ -45,7 +46,7 @@ async def private_receive_handler(c: Client, m: Message): await c.send_message( chat_id=m.chat.id, text="__Sᴏʀʀʏ Sɪʀ, Yᴏᴜ ᴀʀᴇ Bᴀɴɴᴇᴅ ᴛᴏ ᴜsᴇ ᴍᴇ.__\n\n **Cᴏɴᴛᴀᴄᴛ Dᴇᴠᴇʟᴏᴘᴇʀ @Avishkarpatil Tʜᴇʏ Wɪʟʟ Hᴇʟᴘ Yᴏᴜ**", - parse_mode="markdown", + parse_mode=ParseMode.MARKDOWN, disable_web_page_preview=True ) return @@ -56,24 +57,24 @@ async def private_receive_handler(c: Client, m: Message): reply_markup=InlineKeyboardMarkup( [[ InlineKeyboardButton("Jᴏɪɴ ɴᴏᴡ 🔓", url=f"https://t.me/{Var.UPDATES_CHANNEL}") ]] ), - parse_mode="HTML" + parse_mode=ParseMode.HTML ) return except Exception: await c.send_message( chat_id=m.chat.id, text="**Sᴏᴍᴇᴛʜɪɴɢ ᴡᴇɴᴛ Wʀᴏɴɢ. Cᴏɴᴛᴀᴄᴛ ᴍʏ ʙᴏss** @Avishkarpatil", - parse_mode="markdown", + parse_mode=ParseMode.MARKDOWN, disable_web_page_preview=True) return try: log_msg = await m.forward(chat_id=Var.BIN_CHANNEL) file_name = get_media_file_name(m) file_size = humanbytes(get_media_file_size(m)) - stream_link = "https://{}/{}/{}".format(Var.FQDN, log_msg.message_id, file_name) if Var.ON_HEROKU or Var.NO_PORT else \ + stream_link = "https://{}/{}/{}".format(Var.FQDN, log_msg.id, file_name) if Var.ON_HEROKU or Var.NO_PORT else \ "http://{}:{}/{}/{}".format(Var.FQDN, Var.PORT, - log_msg.message_id, + log_msg.id, file_name) msg_text =""" @@ -84,10 +85,10 @@ async def private_receive_handler(c: Client, m: Message): 🚸 Nᴏᴛᴇ : Tʜɪs ᴘᴇʀᴍᴀɴᴇɴᴛ Lɪɴᴋ, Nᴏᴛ Exᴘɪʀᴇᴅ\n © @AvishkarPatil """ - 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) + 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=ParseMode.MARKDOWN, quote=True) await m.reply_text( text=msg_text.format(file_name, file_size, stream_link), - parse_mode="HTML", + parse_mode=ParseMode.HTML, disable_web_page_preview=True, reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton("Dᴏᴡɴʟᴏᴀᴅ ɴᴏᴡ 📥", url=stream_link)]]), quote=True @@ -95,39 +96,39 @@ async def private_receive_handler(c: Client, m: Message): 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"Gᴏᴛ FʟᴏᴏᴅWᴀɪᴛ ᴏғ {str(e.x)}s from [{m.from_user.first_name}](tg://user?id={m.from_user.id})\n\n**𝚄𝚜𝚎𝚛 𝙸𝙳 :** `{str(m.from_user.id)}`", disable_web_page_preview=True, parse_mode="Markdown") + await c.send_message(chat_id=Var.BIN_CHANNEL, text=f"Gᴏᴛ FʟᴏᴏᴅWᴀɪᴛ ᴏғ {str(e.x)}s from [{m.from_user.first_name}](tg://user?id={m.from_user.id})\n\n**𝚄𝚜𝚎𝚛 𝙸𝙳 :** `{str(m.from_user.id)}`", disable_web_page_preview=True, parse_mode=ParseMode.MARKDOWN) -@StreamBot.on_message(filters.channel & (filters.document | filters.video) & ~filters.edited, group=-1) +@StreamBot.on_message(filters.channel & (filters.document | filters.video), 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) - stream_link = "https://{}/{}".format(Var.FQDN, log_msg.message_id) if Var.ON_HEROKU or Var.NO_PORT else \ + stream_link = "https://{}/{}".format(Var.FQDN, log_msg.id) if Var.ON_HEROKU or Var.NO_PORT else \ "http://{}:{}/{}".format(Var.FQDN, Var.PORT, - log_msg.message_id) + log_msg.id) await log_msg.reply_text( - text=f"**Cʜᴀɴɴᴇʟ Nᴀᴍᴇ:** `{broadcast.chat.title}`\n**Cʜᴀɴɴᴇʟ ID:** `{broadcast.chat.id}`\n**Rᴇǫᴜᴇsᴛ ᴜʀʟ:** https://t.me/{(await bot.get_me()).username}?start=AvishkarPatil_{str(log_msg.message_id)}", - # text=f"**Cʜᴀɴɴᴇʟ Nᴀᴍᴇ:** `{broadcast.chat.title}`\n**Cʜᴀɴɴᴇʟ ID:** `{broadcast.chat.id}`\n**Rᴇǫᴜᴇsᴛ ᴜʀʟ:** https://t.me/FxStreamBot?start=AvishkarPatil_{str(log_msg.message_id)}", + text=f"**Cʜᴀɴɴᴇʟ Nᴀᴍᴇ:** `{broadcast.chat.title}`\n**Cʜᴀɴɴᴇʟ ID:** `{broadcast.chat.id}`\n**Rᴇǫᴜᴇsᴛ ᴜʀʟ:** https://t.me/{(await bot.get_me()).username}?start=AvishkarPatil_{str(log_msg.id)}", + # text=f"**Cʜᴀɴɴᴇʟ Nᴀᴍᴇ:** `{broadcast.chat.title}`\n**Cʜᴀɴɴᴇʟ ID:** `{broadcast.chat.id}`\n**Rᴇǫᴜᴇsᴛ ᴜʀʟ:** https://t.me/FxStreamBot?start=AvishkarPatil_{str(log_msg.id)}", quote=True, - parse_mode="Markdown" + parse_mode=ParseMode.MARKDOWN ) await bot.edit_message_reply_markup( chat_id=broadcast.chat.id, - message_id=broadcast.message_id, + message_id=broadcast.id, reply_markup=InlineKeyboardMarkup( - [[InlineKeyboardButton("Dᴏᴡɴʟᴏᴀᴅ ʟɪɴᴋ 📥", url=f"https://t.me/{(await bot.get_me()).username}?start=AvishkarPatil_{str(log_msg.message_id)}")]]) - # [[InlineKeyboardButton("Dᴏᴡɴʟᴏᴀᴅ ʟɪɴᴋ 📥", url=f"https://t.me/FxStreamBot?start=AvishkarPatil_{str(log_msg.message_id)}")]]) + [[InlineKeyboardButton("Dᴏᴡɴʟᴏᴀᴅ ʟɪɴᴋ 📥", url=f"https://t.me/{(await bot.get_me()).username}?start=AvishkarPatil_{str(log_msg.id)}")]]) + # [[InlineKeyboardButton("Dᴏᴡɴʟᴏᴀᴅ ʟɪɴᴋ 📥", url=f"https://t.me/FxStreamBot?start=AvishkarPatil_{str(log_msg.id)}")]]) ) 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"Gᴏᴛ FʟᴏᴏᴅWᴀɪᴛ ᴏғ {str(w.x)}s from {broadcast.chat.title}\n\n**Cʜᴀɴɴᴇʟ ID:** `{str(broadcast.chat.id)}`", - disable_web_page_preview=True, parse_mode="Markdown") + disable_web_page_preview=True, parse_mode=ParseMode.MARKDOWN) except Exception as e: - await bot.send_message(chat_id=Var.BIN_CHANNEL, text=f"**#ᴇʀʀᴏʀ_ᴛʀᴀᴄᴇʙᴀᴄᴋ:** `{e}`", disable_web_page_preview=True, parse_mode="Markdown") + await bot.send_message(chat_id=Var.BIN_CHANNEL, text=f"**#ᴇʀʀᴏʀ_ᴛʀᴀᴄᴇʙᴀᴄᴋ:** `{e}`", disable_web_page_preview=True, parse_mode=ParseMode.MARKDOWN) print(f"Cᴀɴ'ᴛ Eᴅɪᴛ Bʀᴏᴀᴅᴄᴀsᴛ Mᴇssᴀɢᴇ!\nEʀʀᴏʀ: {e}") diff --git a/requirements.txt b/requirements.txt index 5e0fc1d..11b322d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -pyrogram<=1.4.16 +pyrogram>=2.0.0,<=2.0.26 tgcrypto<=1.2.3 aiohttp<=3.8.1 python-dotenv<=0.20.0