Merge pull request #782 from Fr1ngg/bedolaga/update-promo-message-buttons

Adjust promo offer keyboards to add close button
This commit is contained in:
Egor
2025-10-05 06:11:11 +03:00
committed by GitHub
6 changed files with 31 additions and 16 deletions
+6 -16
View File
@@ -970,22 +970,12 @@ async def send_offer_to_segment(callback: CallbackQuery, db_user: User, db: Asyn
[InlineKeyboardButton(text=template.button_text, callback_data=f"claim_discount_{offer_record.id}")]
]
if template.offer_type == "purchase_discount":
keyboard_rows.append([
InlineKeyboardButton(
text=user_texts.t("ADMIN_PROMO_OFFER_CTA_BUY", "Купить подписку"),
callback_data="menu_buy",
)
])
elif template.offer_type == "extend_discount":
keyboard_rows.append([
InlineKeyboardButton(
text=user_texts.t("ADMIN_PROMO_OFFER_CTA_EXTEND", "Продлить подписку"),
callback_data="subscription_extend",
)
])
elif template.offer_type == "test_access":
keyboard_rows.extend(_build_connect_button_rows(user, user_texts))
keyboard_rows.append([
InlineKeyboardButton(
text=user_texts.t("PROMO_OFFER_CLOSE", "❌ Закрыть"),
callback_data="promo_offer_close",
)
])
keyboard = InlineKeyboardMarkup(inline_keyboard=keyboard_rows)
+21
View File
@@ -5274,6 +5274,22 @@ async def claim_discount_offer(
await callback.message.answer(success_message, reply_markup=buy_keyboard)
async def handle_promo_offer_close(
callback: types.CallbackQuery,
db_user: User,
db: AsyncSession,
):
try:
await callback.message.delete()
except Exception:
try:
await callback.message.edit_reply_markup()
except Exception:
pass
await callback.answer()
async def handle_device_guide(
callback: types.CallbackQuery,
db_user: User,
@@ -6317,6 +6333,11 @@ def register_handlers(dp: Dispatcher):
F.data.startswith("claim_discount_")
)
dp.callback_query.register(
handle_promo_offer_close,
F.data == "promo_offer_close",
)
dp.callback_query.register(
handle_happ_download_request,
F.data == "subscription_happ_download"
+1
View File
@@ -563,6 +563,7 @@
"SUBSCRIPTION_PROMO_DISCOUNT_HINT": "⚡ Extra {percent}% discount is active and will apply automatically. It stacks with your promo group.",
"DISCOUNT_CLAIM_ALREADY": "️ This discount has already been activated.",
"DISCOUNT_CLAIM_ERROR": "❌ Failed to activate the discount. Please try again later.",
"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.",
+1
View File
@@ -563,6 +563,7 @@
"SUBSCRIPTION_PROMO_DISCOUNT_HINT": "⚡ Доп. скидка {percent}% активирована и будет применена автоматически. Суммируется с промогруппой.",
"DISCOUNT_CLAIM_ALREADY": "ℹ️ Скидка уже была активирована ранее.",
"DISCOUNT_CLAIM_ERROR": "❌ Не удалось активировать скидку. Попробуйте позже.",
"PROMO_OFFER_CLOSE": "❌ Закрыть",
"DISCOUNT_CLAIM_EXPIRED": "⚠️ Время действия предложения истекло.",
"DISCOUNT_CLAIM_NOT_FOUND": "❌ Предложение не найдено.",
"DISCOUNT_CLAIM_SUCCESS": "🎉 Скидка {percent}% активирована! Она автоматически применится при следующей оплате.",
+1
View File
@@ -534,6 +534,7 @@
"DISCOUNT_CLAIM_EXPIRED": "⚠️ The offer has expired.",
"DISCOUNT_CLAIM_NOT_FOUND": "❌ Offer not found.",
"DISCOUNT_CLAIM_ERROR": "❌ Failed to activate the discount. Please try again later.",
"PROMO_OFFER_CLOSE": "❌ Close",
"TEST_ACCESS_NO_SUBSCRIPTION": "❌ You need an active subscription to use this offer.",
"TEST_ACCESS_NO_SQUADS": "❌ Unable to determine servers for the test access. Please contact support.",
"TEST_ACCESS_REMNAWAVE_ERROR": "❌ Failed to connect the servers. Please try again later or contact support.",
+1
View File
@@ -534,6 +534,7 @@
"DISCOUNT_CLAIM_EXPIRED": "⚠️ Время действия предложения истекло.",
"DISCOUNT_CLAIM_NOT_FOUND": "❌ Предложение не найдено.",
"DISCOUNT_CLAIM_ERROR": "❌ Не удалось активировать скидку. Попробуйте позже.",
"PROMO_OFFER_CLOSE": "❌ Закрыть",
"TEST_ACCESS_NO_SUBSCRIPTION": "❌ Для активации предложения необходима действующая подписка.",
"TEST_ACCESS_NO_SQUADS": "❌ Не удалось определить список серверов для теста. Обратитесь к администратору.",
"TEST_ACCESS_REMNAWAVE_ERROR": "❌ Не удалось подключить серверы. Попробуйте позже или обратитесь в поддержку.",