Download Backend/pyrofork/bot.py from dhyeye/streamio: direct link, hf CLI and curl.
- Browser
- Download file 1.83 kB
-
https://huggingface.co/spaces/dhyeye/streamio/resolve/main/Backend/pyrofork/bot.py
- Command line
-
hf download hf://spaces/dhyeye/streamio/Backend/pyrofork/bot.py
-
curl -L -o bot.py https://huggingface.co/spaces/dhyeye/streamio/resolve/main/Backend/pyrofork/bot.py
1.83 kB
| from pyrogram import Client | |
| from Backend.config import Telegram | |
| #----- Primary bot client (loads plugins) | |
| StreamBot = Client( | |
| name='bot', | |
| api_id=Telegram.API_ID, | |
| api_hash=Telegram.API_HASH, | |
| bot_token=Telegram.BOT_TOKEN, | |
| plugins={"root": "Backend/pyrofork/plugins"}, | |
| sleep_threshold=20, | |
| workers=6, | |
| max_concurrent_transmissions=10 | |
| ) | |
| USERBOT_CLIENT_INDEX = -1 | |
| #----- Optional userbot client (only when a session string is configured) | |
| Userbot = None | |
| if Telegram.USER_SESSION_STRING: | |
| Userbot = Client( | |
| name='userbot', | |
| api_id=Telegram.API_ID, | |
| api_hash=Telegram.API_HASH, | |
| session_string=Telegram.USER_SESSION_STRING, | |
| sleep_threshold=20, | |
| workers=6, | |
| max_concurrent_transmissions=10, | |
| no_updates=True, | |
| ) | |
| #----- Shared multi-client registries | |
| multi_clients = {} | |
| work_loads = {} | |
| client_dc_map = {} | |
| client_failures = {} | |
| client_avg_mbps = {} | |
| #----- Resolve the bot's public t.me URL from cached username/me | |
| def get_streambot_url() -> str: | |
| try: | |
| username = getattr(StreamBot, "username", None) | |
| if not username: | |
| me = getattr(StreamBot, "me", None) | |
| username = getattr(me, "username", None) if me else None | |
| if username: | |
| return f"https://t.me/{username}" | |
| except Exception: | |
| pass | |
| return "https://t.me/" | |
| #----- Per-client workload map ({botN: load}), busiest first; {} when idle | |
| def work_loads_summary() -> dict: | |
| if not work_loads: | |
| return {} | |
| return { | |
| f"bot{c + 1}": load | |
| for c, (_, load) in enumerate(sorted(work_loads.items(), key=lambda x: x[1], reverse=True)) | |
| } | |
| if Userbot is not None: | |
| work_loads[USERBOT_CLIENT_INDEX] = 0 | |
| client_failures[USERBOT_CLIENT_INDEX] = 0 | |
| client_avg_mbps[USERBOT_CLIENT_INDEX] = 0.0 | |