import asyncio
import logging

from aiogram import Bot, Dispatcher

from .config import load_settings
from .handlers import router


async def main() -> None:
    settings = load_settings()
    bot = Bot(token=settings.token)
    dispatcher = Dispatcher()
    dispatcher.include_router(router)

    try:
        await dispatcher.start_polling(bot, bot_settings=settings)
    finally:
        await bot.session.close()


if __name__ == '__main__':
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s | %(levelname)s | %(name)s | %(message)s',
    )
    asyncio.run(main())
