|
|
|
|
|
import sys |
|
import asyncio |
|
import logging |
|
import traceback |
|
import logging.handlers as handlers |
|
from FileStream.config import Telegram, Server |
|
from aiohttp import web |
|
from pyrogram import idle |
|
|
|
from FileStream.bot import FileStream |
|
from FileStream.Tools import Time_ISTKolNow |
|
from FileStream.server import web_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("\n") |
|
print("---------------------- Initializing Clients ----------------------") |
|
await initialize_clients() |
|
print("------------------------------ DONE ------------------------------") |
|
print("\n") |
|
print("--------------------- Initializing Web Server ---------------------") |
|
await server.setup() |
|
await web.TCPSite(server, Server.BIND_ADDRESS, Server.PORT).start() |
|
print("------------------------------ DONE ------------------------------") |
|
print("\n") |
|
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("------------------------------------------------------------------") |
|
""" |
|
all_sources = [ |
|
Telegram.ULOG_GROUP, Telegram.FLOG_CHANNEL, Telegram.PFLOG_CHANNEL |
|
] |
|
for source in all_sources: |
|
await FileStream.send_message(chat_id=source, |
|
text=f"Hi, I am Online @{ISTKolNow()}", |
|
disable_web_page_preview=True) |
|
""" |
|
await idle() |
|
|
|
|
|
async def cleanup(): |
|
await server.cleanup() |
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
try: |
|
loop.run_until_complete(start_services()) |
|
except KeyboardInterrupt: |
|
loop.stop() |
|
print("------------------------ Stopped Services ------------------------") |
|
except Exception as err: |
|
logging.error(traceback.format_exc()) |
|
|