- Updated the PanelWebhookService to accept a new PanelApiService dependency for managing panel user details. - Implemented functionality to update panel expiry upon subscription renewal, ensuring users maintain access to services. - Added error handling and logging for both panel expiry updates and auto-renew payment record creation, improving reliability and user feedback.
70 lines
2.5 KiB
Python
70 lines
2.5 KiB
Python
from aiogram import Bot
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
from config.settings import Settings
|
|
from bot.middlewares.i18n import JsonI18n
|
|
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,
|
|
i18n: JsonI18n,
|
|
bot_username_for_default_return: str,
|
|
):
|
|
panel_service = PanelApiService(settings)
|
|
subscription_service = SubscriptionService(settings, panel_service, bot, i18n)
|
|
referral_service = ReferralService(settings, subscription_service, bot, i18n)
|
|
promo_code_service = PromoCodeService(settings, subscription_service, bot, i18n)
|
|
stars_service = StarsService(bot, settings, i18n, subscription_service, referral_service)
|
|
cryptopay_service = CryptoPayService(
|
|
settings.CRYPTOPAY_TOKEN,
|
|
settings.CRYPTOPAY_NETWORK,
|
|
bot,
|
|
settings,
|
|
i18n,
|
|
async_session_factory,
|
|
subscription_service,
|
|
referral_service,
|
|
)
|
|
tribute_service = TributeService(
|
|
bot,
|
|
settings,
|
|
i18n,
|
|
async_session_factory,
|
|
panel_service,
|
|
subscription_service,
|
|
referral_service,
|
|
)
|
|
panel_webhook_service = PanelWebhookService(bot, settings, i18n, async_session_factory, panel_service)
|
|
yookassa_service = YooKassaService(
|
|
shop_id=settings.YOOKASSA_SHOP_ID,
|
|
secret_key=settings.YOOKASSA_SECRET_KEY,
|
|
configured_return_url=settings.YOOKASSA_RETURN_URL,
|
|
bot_username_for_default_return=bot_username_for_default_return,
|
|
settings_obj=settings,
|
|
)
|
|
|
|
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,
|
|
"yookassa_service": yookassa_service,
|
|
}
|
|
|
|
|