| import sys |
| import asyncio |
| import logging |
| import traceback |
| import logging.handlers as handlers |
| from .config import Telegram, Server |
| from aiohttp import web |
| from pyrogram import idle |
|
|
| from FileStream.bot import FileStream |
| from FileStream.server import web_server |
| from FileStream.utils import ping_server |
| from FileStream.bot.clients import initialize_clients |
|
|
| logging.basicConfig( |
| level=logging.INFO, |
| datefmt="%d/%m/%Y %H:%M:%S", |
| format='[%(asctime)s] {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s', |
| handlers=[logging.StreamHandler(stream=sys.stdout), |
| handlers.RotatingFileHandler("streambot.log", mode="a", maxBytes=104857600, backupCount=2, encoding="utf-8")],) |
|
|
| logging.getLogger("aiohttp").setLevel(logging.ERROR) |
| logging.getLogger("pyrogram").setLevel(logging.ERROR) |
| logging.getLogger("aiohttp.web").setLevel(logging.ERROR) |
|
|
| server = web.AppRunner(web_server()) |
|
|
| loop = asyncio.get_event_loop() |
|
|
| async def start_services(): |
| print() |
| if Telegram.SECONDARY: |
| print("------------------ Starting as Secondary Server ------------------") |
| else: |
| print("------------------- Starting as Primary Server -------------------") |
| print() |
| print("-------------------- Initializing Telegram Bot --------------------") |
|
|
|
|
| await FileStream.start() |
| bot_info = await FileStream.get_me() |
| FileStream.id = bot_info.id |
| FileStream.username = bot_info.username |
| FileStream.fname=bot_info.first_name |
| print("------------------------------ DONE ------------------------------") |
| print() |
| print("---------------------- Initializing Clients ----------------------") |
| await initialize_clients() |
| print("------------------------------ DONE ------------------------------") |
| if Server.KEEP_ALIVE: |
| print("------------------ Starting Keep Alive Service ------------------") |
| print() |
| asyncio.create_task(ping_server()) |
| print() |
| print("--------------------- Initializing Web Server ---------------------") |
| await server.setup() |
| await web.TCPSite(server, Server.BIND_ADDRESS, Server.PORT).start() |
| print("------------------------------ DONE ------------------------------") |
| print() |
| print("------------------------- Service Started -------------------------") |
| print(" bot =>> {}".format(bot_info.first_name)) |
| if bot_info.dc_id: |
| print(" DC ID =>> {}".format(str(bot_info.dc_id))) |
| print(" URL =>> {}".format(Server.URL)) |
| print("------------------------------------------------------------------") |
| await idle() |
|
|
| async def cleanup(): |
| await server.cleanup() |
| await FileStream.stop() |
|
|
| if __name__ == "__main__": |
| try: |
| loop.run_until_complete(start_services()) |
| except KeyboardInterrupt: |
| pass |
| except Exception as err: |
| logging.error(traceback.format_exc()) |
| finally: |
| loop.run_until_complete(cleanup()) |
| loop.stop() |
| print("------------------------ Stopped Services ------------------------") |