import logging import asyncio from remnawave import RemnawaveSDK from aiogram import Bot, Dispatcher from aiogram.client.default import DefaultBotProperties from aiogram.client.session.aiohttp import AiohttpSession from schemas.di import DependenciesDTO from handlers import routers from middlewares import DIMiddleware from config import settings from repositories.tickets import TicketRepository from repositories.users import UserRepository from services.user_service import UserService from db.session import async_session logging.basicConfig(level=logging.DEBUG) async def main(): dp = Dispatcher() user_repository = UserRepository() ticket_repository = TicketRepository() user_service = UserService(user_repository, ticket_repository) rw_sdk = RemnawaveSDK( base_url=settings.remnawave_url, token=settings.remnawave_token, ) deps = DependenciesDTO( ticket_repository=ticket_repository, user_repository=user_repository, user_service=user_service, rw_sdk=rw_sdk, ) dp.update.middleware.register(DIMiddleware(deps, async_session)) aiohttp_session = AiohttpSession(proxy=settings.proxy) default = DefaultBotProperties(parse_mode="HTML") bot = Bot(token=settings.bot_token, default=default, session=aiohttp_session) for router in routers: dp.include_router(router) await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())