love-bot/bot/main.py

46 lines
1.3 KiB
Python
Raw Permalink Normal View History

2025-04-28 14:52:32 +02:00
import asyncio
import logging
import sys
from aiogram import Bot, Dispatcher
from aiogram.enums import ParseMode
2025-04-28 17:21:04 +02:00
from aiogram.client.default import DefaultBotProperties
2025-04-28 14:52:32 +02:00
2025-04-28 17:21:04 +02:00
from bot.handlers import start, game, stats, text
2025-04-28 14:52:32 +02:00
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()
2025-04-28 17:21:04 +02:00
bot = Bot(
token=settings.bot_token.get_secret_value(),
default=DefaultBotProperties(parse_mode=ParseMode.HTML)
)
2025-04-28 14:52:32 +02:00
dp = Dispatcher()
2025-04-28 17:21:04 +02:00
dp.message.middleware(AuthMiddleware())
dp.callback_query.middleware(AuthMiddleware())
2025-04-28 14:52:32 +02:00
dp.include_router(start.router)
dp.include_router(game.router)
dp.include_router(stats.router)
2025-04-28 17:21:04 +02:00
dp.include_router(text.router)
2025-04-28 14:52:32 +02:00
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:")