Files
malenia/main.py

53 lines
1.5 KiB
Python

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