import asyncio import logging from aiogram import Bot, Dispatcher from aiogram.client.default import DefaultBotProperties from aiogram.client.session.aiohttp import AiohttpSession from remnawave import RemnawaveSDK from config import settings from db.session import async_session from handlers import routers from middlewares import DIMiddleware from repositories.tickets import TicketRepository from repositories.users import UserRepository from schemas.di import DependenciesDTO from services.user_service import UserService 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) if settings.proxy else None 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())