|
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 ------------------------") |