| |
|
|
|
|
| import asyncio |
| from pyrogram import filters, Client |
| from pyrogram.errors import FloodWait |
| from pyrogram.types import Message |
| from pyrogram.enums.parse_mode import ParseMode |
| from WebStreamer.utils.Translation import Language |
| from WebStreamer.bot import StreamBot, multi_clients |
| from WebStreamer.utils.bot_utils import gen_link, validate_user |
| from WebStreamer.utils.database import Database |
| from WebStreamer.utils.file_properties import get_file_ids, get_file_info |
| from WebStreamer.vars import Var |
| db = Database(Var.DATABASE_URL, Var.SESSION_NAME) |
|
|
| @StreamBot.on_message( |
| filters.private |
| & ( |
| filters.document |
| | filters.video |
| | filters.audio |
| | filters.animation |
| | filters.voice |
| | filters.video_note |
| | filters.photo |
| | filters.sticker |
| ), |
| group=4, |
| ) |
| async def private_receive_handler(bot: Client, message: Message): |
| lang = Language(message) |
| if not await validate_user(message, lang): |
| return |
| try: |
| ptype=await db.link_available(message.from_user.id) |
| if not ptype: |
| return await message.reply_text(lang.LINK_LIMIT_EXCEEDED) |
|
|
| inserted_id=await db.add_file(get_file_info(message)) |
| await get_file_ids(False, inserted_id, multi_clients) |
| reply_markup, stream_text = await gen_link(m=message, _id=inserted_id, name=[StreamBot.username, StreamBot.fname]) |
| await message.reply_text( |
| text=stream_text, |
| parse_mode=ParseMode.HTML, |
| disable_web_page_preview=True, |
| reply_markup=reply_markup, |
| quote=True |
| ) |
| except FloodWait as e: |
| print(f"Sleeping for {str(e.value)}s") |
| await asyncio.sleep(e.value) |
| await bot.send_message(chat_id=Var.BIN_CHANNEL, text=f"Got Flood wait of {str(e.value)}s from [{message.from_user.first_name}](tg://user?id={message.from_user.id})\n\n**ππππ πΈπ³ :** `{str(message.from_user.id)}`", disable_web_page_preview=True, parse_mode=ParseMode.MARKDOWN) |
|
|