Files
malenia/main.py
hexdev 0ed0ad2b92 Add referral system and user balance tracking
Introduce balance field to User model with Alembic migration. Add
referral menu, admin /refpay command, and deep link sharing. Update
Dockerfile to multi-stage build and add Postgres service to compose.
Fix deep link parsing logic and conditional proxy initialization.
2026-04-10 22:20:53 +07:00

53 lines
1.5 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 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) 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())