# PATH: bot/__main__.py import asyncio from logging import getLogger from logging.config import dictConfig from uvicorn import Config as UvicornConfig, Server as UvicornServer from bot.config import Server, LOGGER_CONFIG_JSON from bot.client import create_client from bot.handlers import setup_handlers from bot.startup_log import log_startup from bot.server import create_app logger = getLogger("bot") async def main(): dictConfig(LOGGER_CONFIG_JSON) # Create web app + uvicorn server quart_app = create_app() uv_cfg = UvicornConfig( app=quart_app, host=Server.BIND_ADDRESS, port=Server.PORT, log_config=LOGGER_CONFIG_JSON, ) uv_server = UvicornServer(uv_cfg) # Create Telegram client app = create_client() setup_handlers(app) # Start telegram first (so you see quickly if TG blocked) await app.start() asyncio.create_task(log_startup(app)) # Start web server asyncio.create_task(uv_server.serve()) logger.info("All services started ✅") # Idle forever try: while True: await asyncio.sleep(3600) finally: await app.stop() if __name__ == "__main__": asyncio.run(main())