Files
malenia/main.py
2026-04-08 17:10:36 +07:00

53 lines
1.4 KiB
Python

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 dto.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())