40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
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:") |