import asyncio import logging import sys from aiogram import Bot, Dispatcher from aiogram.enums import ParseMode from bot.handlers import start, game, stats from bot.middlewares.auth_middleware import AuthMiddleware, load_initial_users from bot.database.db import init_db from bot.config import settings async def main() -> None: await init_db() logging.info("Database initialized.") await load_initial_users() bot = Bot(token=settings.bot_token.get_secret_value(), parse_mode=ParseMode.HTML) dp = Dispatcher() dp.update.outer_middleware(AuthMiddleware()) dp.include_router(start.router) dp.include_router(game.router) dp.include_router(stats.router) # TODO: Раскомментировать и добавить роутеры, когда они будут готовы logging.info("Starting bot...") await bot.delete_webhook(drop_pending_updates=True) await dp.start_polling(bot) if __name__ == "__main__": logging.basicConfig(level=logging.INFO, stream=sys.stdout) try: asyncio.run(main()) except (KeyboardInterrupt, SystemExit): logging.info("Bot stopped.") except Exception as e: logging.exception("Bot encountered an error:")