- Integrated ProfileSyncMiddleware to ensure that user profile information (username, first_name, last_name) remains current in the database. - Updated get_enhanced_user_statistics to use timezone-aware datetime for accurate SQL queries, preventing naive/aware comparison issues. - Clarified comments in the user statistics function for better understanding of active user metrics and subscription handling.
56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
from aiogram import Bot
|
|
from sqlalchemy.orm import sessionmaker
|
|
from typing import Tuple
|
|
|
|
from config.settings import Settings
|
|
from bot.services.yookassa_service import YooKassaService
|
|
from bot.services.panel_api_service import PanelApiService
|
|
from bot.services.subscription_service import SubscriptionService
|
|
from bot.services.referral_service import ReferralService
|
|
from bot.services.promo_code_service import PromoCodeService
|
|
from bot.services.stars_service import StarsService
|
|
from bot.services.tribute_service import TributeService
|
|
from bot.services.crypto_pay_service import CryptoPayService
|
|
from bot.services.panel_webhook_service import PanelWebhookService
|
|
|
|
|
|
def build_core_services(settings: Settings, bot: Bot, async_session_factory: sessionmaker):
|
|
panel_service = PanelApiService(settings)
|
|
subscription_service = SubscriptionService(settings, panel_service, bot)
|
|
referral_service = ReferralService(settings, subscription_service, bot)
|
|
promo_code_service = PromoCodeService(settings, subscription_service, bot)
|
|
stars_service = StarsService(bot, settings, None, subscription_service, referral_service)
|
|
cryptopay_service = CryptoPayService(
|
|
settings.CRYPTOPAY_TOKEN,
|
|
settings.CRYPTOPAY_NETWORK,
|
|
bot,
|
|
settings,
|
|
None,
|
|
async_session_factory,
|
|
subscription_service,
|
|
referral_service,
|
|
)
|
|
tribute_service = TributeService(
|
|
bot,
|
|
settings,
|
|
None,
|
|
async_session_factory,
|
|
panel_service,
|
|
subscription_service,
|
|
referral_service,
|
|
)
|
|
panel_webhook_service = PanelWebhookService(bot, settings, None, async_session_factory)
|
|
|
|
return {
|
|
"panel_service": panel_service,
|
|
"subscription_service": subscription_service,
|
|
"referral_service": referral_service,
|
|
"promo_code_service": promo_code_service,
|
|
"stars_service": stars_service,
|
|
"cryptopay_service": cryptopay_service,
|
|
"tribute_service": tribute_service,
|
|
"panel_webhook_service": panel_webhook_service,
|
|
}
|
|
|
|
|