Adjust discount claim CTA for purchase offers

This commit is contained in:
Egor
2025-10-05 17:24:25 +03:00
parent 4a7cc3306a
commit 84f06a96b3
3 changed files with 21 additions and 11 deletions
+19 -9
View File
@@ -5253,6 +5253,15 @@ async def claim_discount_offer(
extra_data = offer.extra_data or {}
raw_duration = extra_data.get("active_discount_hours")
template_id = extra_data.get("template_id")
offer_type = extra_data.get("offer_type")
subscription = getattr(db_user, "subscription", None)
has_active_subscription = False
if subscription:
try:
has_active_subscription = subscription.actual_status in {"active", "trial"}
except Exception: # pragma: no cover - defensive fallback
has_active_subscription = False
if raw_duration in (None, "") and template_id:
try:
@@ -5287,19 +5296,20 @@ async def claim_discount_offer(
success_message = texts.get(
"DISCOUNT_CLAIM_SUCCESS",
"🎉 Скидка {percent}% активирована! Она автоматически применится при следующей оплате.",
"🎉 Скидка {percent}% активирована! Она суммируется с промогруппой и автоматически применится при следующей оплате.",
).format(percent=discount_percent)
await callback.answer("✅ Скидка активирована!", show_alert=True)
if offer_type == "purchase_discount" and not has_active_subscription:
cta_text = texts.get("MENU_BUY_SUBSCRIPTION", "💎 Купить подписку")
cta_callback = "menu_buy"
else:
cta_text = texts.get("SUBSCRIPTION_EXTEND", "💎 Продлить подписку")
cta_callback = "subscription_extend"
buy_keyboard = InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(
text=texts.get("SUBSCRIPTION_EXTEND", "💎 Продлить подписку"),
callback_data="subscription_extend",
)
]
]
inline_keyboard=[[InlineKeyboardButton(text=cta_text, callback_data=cta_callback)]]
)
await callback.message.answer(success_message, reply_markup=buy_keyboard)
+1 -1
View File
@@ -566,7 +566,7 @@
"PROMO_OFFER_CLOSE": "❌ Close",
"DISCOUNT_CLAIM_EXPIRED": "⚠️ The offer has expired.",
"DISCOUNT_CLAIM_NOT_FOUND": "❌ Offer not found.",
"DISCOUNT_CLAIM_SUCCESS": "🎉 Discount of {percent}% activated! It will be applied automatically to your next payment.",
"DISCOUNT_CLAIM_SUCCESS": "🎉 Discount of {percent}% activated! It stacks with your promo group and will be applied automatically to your next payment.",
"TEST_ACCESS_ALREADY_CONNECTED": "️ This server is already connected to your subscription.",
"ENTER_BLOCK_MINUTES": "Enter the number of minutes to block the user (e.g., 15):",
"LANGUAGE_SELECTION_DISABLED": "⚙️ Language selection is temporarily unavailable. Using the default language.",
+1 -1
View File
@@ -566,7 +566,7 @@
"PROMO_OFFER_CLOSE": "❌ Закрыть",
"DISCOUNT_CLAIM_EXPIRED": "⚠️ Время действия предложения истекло.",
"DISCOUNT_CLAIM_NOT_FOUND": "❌ Предложение не найдено.",
"DISCOUNT_CLAIM_SUCCESS": "🎉 Скидка {percent}% активирована! Она автоматически применится при следующей оплате.",
"DISCOUNT_CLAIM_SUCCESS": "🎉 Скидка {percent}% активирована! Она суммируется с промогруппой и автоматически применится при следующей оплате.",
"TEST_ACCESS_ALREADY_CONNECTED": "ℹ️ Этот сервер уже подключен к вашей подписке.",
"ENTER_BLOCK_MINUTES": "Введите количество минут для блокировки пользователя (например, 15):",
"LANGUAGE_SELECTION_DISABLED": "⚙️ Выбор языка временно недоступен. Используем язык по умолчанию.",