love-bot/bot/main.py

46 lines
1.3 KiB
Python

import asyncio
import logging
import sys
from aiogram import Bot, Dispatcher
from aiogram.enums import ParseMode
from aiogram.client.default import DefaultBotProperties
from bot.handlers import start, game, stats, text
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(),
default=DefaultBotProperties(parse_mode=ParseMode.HTML)
)
dp = Dispatcher()
dp.message.middleware(AuthMiddleware())
dp.callback_query.middleware(AuthMiddleware())
dp.include_router(start.router)
dp.include_router(game.router)
dp.include_router(stats.router)
dp.include_router(text.router)
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:")