# This file is a part of TG-FileStreamBot 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)