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