Files
DutyLog/src/dutylog/application/__main__.py
T
2026-03-01 17:00:49 +03:00

62 lines
1.7 KiB
Python

import asyncio
import logging
from aiogram import Bot, Dispatcher
from aiogram.client.default import DefaultBotProperties
from aiogram.enums import ParseMode
from aiogram_dialog import setup_dialogs
from dishka import make_async_container
from dishka.integrations.aiogram import setup_dishka
from dutylog.application.bot.user_handlers import router as user_router
from dutylog.application.bot.user_dialogs import main_menu_dialog
from dutylog.application.bot.admin_dialogs import admin_menu_dialog
from dutylog.application.bot.creator_dialogs import creator_menu_dialog
from dutylog.application.bot.user_dialogs.registration_dialog import registration_dialog
from dutylog.infrastructure.ioc import (
ConfigProvider,
DatabaseProvider,
DAOProvider,
RepositoryProvider,
ServiceProvider,
)
from dutylog.infrastructure.utils.config import load_config
async def main():
logging.basicConfig(level=logging.INFO)
config = load_config()
bot = Bot(
token=config.bot.token, default=DefaultBotProperties(parse_mode=ParseMode.HTML)
)
await bot.delete_webhook(drop_pending_updates=True)
dp = Dispatcher()
container = make_async_container(
ConfigProvider(),
DatabaseProvider(),
DAOProvider(),
RepositoryProvider(),
ServiceProvider(),
context={Bot: bot}
)
dp.include_router(user_router)
dp.include_router(main_menu_dialog)
dp.include_router(admin_menu_dialog)
dp.include_router(creator_menu_dialog)
dp.include_router(registration_dialog)
setup_dialogs(dp)
setup_dishka(container, dp, auto_inject=True)
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())