From e3d8d21b662761dca1ffe5938e3ce4d72275be84 Mon Sep 17 00:00:00 2001 From: Fringg Date: Sun, 29 Mar 2026 04:59:23 +0300 Subject: [PATCH] fix: suppress empty reward alerts and clean up referral notifications - Silence "link for new users only" message for no-reward ad campaigns - Show commission % in referral notifications only when > 0 - Show fixed bonus in referral notifications only when > 0 - When both bonus and commission are 0, don't promise a reward Cherry-picked logic from PR #2822 (without version bump artifacts) --- app/handlers/start.py | 2 +- app/services/referral_service.py | 25 ++++++++++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/app/handlers/start.py b/app/handlers/start.py index bacd2c00..40b30c9a 100644 --- a/app/handlers/start.py +++ b/app/handlers/start.py @@ -792,7 +792,7 @@ async def cmd_start(message: types.Message, state: FSMContext, db: AsyncSession, ) ) - if campaign: + if campaign and not campaign.is_none_bonus: try: await message.answer( texts.t( diff --git a/app/services/referral_service.py b/app/services/referral_service.py index f7ddeb43..d08e6e4d 100644 --- a/app/services/referral_service.py +++ b/app/services/referral_service.py @@ -213,16 +213,23 @@ async def process_referral_registration(db: AsyncSession, new_user_id: int, refe f'По вашей ссылке зарегистрировался пользователь {html.escape(new_user.full_name)}!\n\n' f'💰 Когда он пополнит баланс от {settings.format_price(settings.REFERRAL_MINIMUM_TOPUP_KOPEKS)}, ' ) - if settings.REFERRAL_INVITER_BONUS_KOPEKS > 0: + if settings.REFERRAL_INVITER_BONUS_KOPEKS > 0 and commission_percent > 0: inviter_notification += ( f'вы получите {settings.format_price(settings.REFERRAL_INVITER_BONUS_KOPEKS)} + ' f'{commission_percent}% от суммы пополнения.\n\n' ) - else: + elif settings.REFERRAL_INVITER_BONUS_KOPEKS > 0: + inviter_notification += ( + f'вы получите {settings.format_price(settings.REFERRAL_INVITER_BONUS_KOPEKS)}.\n\n' + ) + elif commission_percent > 0: inviter_notification += f'вы получите {commission_percent}% от суммы.\n\n' - inviter_notification += ( - f'📈 С каждого последующего пополнения вы будете получать {commission_percent}% комиссии.' - ) + else: + inviter_notification += 'вы получите уведомление.\n\n' + if commission_percent > 0: + inviter_notification += ( + f'📈 С каждого последующего пополнения вы будете получать {commission_percent}% комиссии.' + ) await send_referral_notification( bot, referrer.telegram_id, inviter_notification, user=referrer, referral_name=new_user.full_name ) @@ -430,9 +437,13 @@ async def process_referral_topup(db: AsyncSession, user_id: int, topup_amount_ko f'Ваш реферал {html.escape(user.full_name)} сделал первое пополнение ' f'на {settings.format_price(topup_amount_kopeks)}!\n\n' f'🎁 Ваша награда: {settings.format_price(inviter_bonus)}' - f' ({bonus_breakdown})\n\n' - f'📈 Теперь с каждого его пополнения вы будете получать {commission_percent}% комиссии.' + f' ({bonus_breakdown})' ) + if commission_percent > 0: + inviter_bonus_notification += ( + f'\n\n📈 Теперь с каждого его пополнения вы будете получать ' + f'{commission_percent}% комиссии.' + ) await send_referral_notification( bot, referrer.telegram_id,