From ec521b84e787f4aedc6d47bb71685f36163697d4 Mon Sep 17 00:00:00 2001 From: Egor Date: Thu, 25 Sep 2025 10:58:24 +0300 Subject: [PATCH] Revert "Handle Happ cryptolink buttons without unsupported URLs" --- app/handlers/subscription.py | 164 +++++------------------------------ app/keyboards/inline.py | 51 ++--------- 2 files changed, 31 insertions(+), 184 deletions(-) diff --git a/app/handlers/subscription.py b/app/handlers/subscription.py index f76aba7c..8cc84fd3 100644 --- a/app/handlers/subscription.py +++ b/app/handlers/subscription.py @@ -566,11 +566,7 @@ async def show_subscription_info( subscription_link = get_display_subscription_link(subscription) if subscription_link: - if ( - actual_status in ['trial_active', 'paid_active'] - and not settings.HIDE_SUBSCRIPTION_LINK - and not settings.is_happ_cryptolink_mode() - ): + if actual_status in ['trial_active', 'paid_active'] and not settings.HIDE_SUBSCRIPTION_LINK: message += "\n\n" + texts.t( "SUBSCRIPTION_CONNECT_LINK_SECTION", "πŸ”— Бсылка для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:\n{subscription_url}", @@ -843,30 +839,16 @@ async def activate_trial( subscription_link = get_display_subscription_link(subscription) if remnawave_user and subscription_link: - if settings.is_happ_cryptolink_mode(): - trial_success_text = ( - f"{texts.TRIAL_ACTIVATED}\n\n" - + texts.t( - "SUBSCRIPTION_HAPP_LINK_PROMPT", - "πŸ”’ Бсылка Π½Π° подписку создана. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ \"ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ\" Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Ρ‘ Π² Happ.", - ) - + "\n\n" - + texts.t( - 'SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT', - 'πŸ“± НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ настройкС VPN Π½Π° вашСм устройствС', - ) - ) - else: - subscription_import_link = texts.t( - "SUBSCRIPTION_IMPORT_LINK_SECTION", - "πŸ”— Π’Π°ΡˆΠ° ссылка для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² VPN ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:\n{subscription_url}", - ).format(subscription_url=subscription_link) + subscription_import_link = texts.t( + "SUBSCRIPTION_IMPORT_LINK_SECTION", + "πŸ”— Π’Π°ΡˆΠ° ссылка для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² VPN ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:\\n{subscription_url}", + ).format(subscription_url=subscription_link) - trial_success_text = ( - f"{texts.TRIAL_ACTIVATED}\n\n" - f"{subscription_import_link}\n\n" - f"{texts.t('SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT', 'πŸ“± НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ настройкС VPN Π½Π° вашСм устройствС')}" - ) + trial_success_text = ( + f"{texts.TRIAL_ACTIVATED}\n\n" + f"{subscription_import_link}\n\n" + f"{texts.t('SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT', 'πŸ“± НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ настройкС VPN Π½Π° вашСм устройствС')}" + ) connect_mode = settings.CONNECT_BUTTON_MODE @@ -900,7 +882,7 @@ async def activate_trial( ], [InlineKeyboardButton(text=texts.t("BACK_TO_MAIN_MENU_BUTTON", "⬅️ Π’ Π³Π»Π°Π²Π½ΠΎΠ΅ мСню"), callback_data="back_to_menu")], ]) - elif connect_mode == "link": + elif connect_mode in {"link", "happ_cryptolink"}: rows = [ [InlineKeyboardButton(text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), url=subscription_link)] ] @@ -914,25 +896,6 @@ async def activate_trial( ) ]) connect_keyboard = InlineKeyboardMarkup(inline_keyboard=rows) - elif connect_mode == "happ_cryptolink": - rows = [ - [ - InlineKeyboardButton( - text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), - callback_data="open_subscription_link", - ) - ] - ] - happ_row = get_happ_download_button_row(texts) - if happ_row: - rows.append(happ_row) - rows.append([ - InlineKeyboardButton( - text=texts.t("BACK_TO_MAIN_MENU_BUTTON", "⬅️ Π’ Π³Π»Π°Π²Π½ΠΎΠ΅ мСню"), - callback_data="back_to_menu" - ) - ]) - connect_keyboard = InlineKeyboardMarkup(inline_keyboard=rows) else: connect_keyboard = InlineKeyboardMarkup(inline_keyboard=[ [InlineKeyboardButton(text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), callback_data="subscription_connect")], @@ -3332,30 +3295,16 @@ async def confirm_purchase( subscription_link = get_display_subscription_link(subscription) if remnawave_user and subscription_link: - if settings.is_happ_cryptolink_mode(): - success_text = ( - f"{texts.SUBSCRIPTION_PURCHASED}\n\n" - + texts.t( - "SUBSCRIPTION_HAPP_LINK_PROMPT", - "πŸ”’ Бсылка Π½Π° подписку создана. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ \"ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ\" Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Ρ‘ Π² Happ.", - ) - + "\n\n" - + texts.t( - 'SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT', - 'πŸ“± НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ настройкС VPN Π½Π° вашСм устройствС', - ) - ) - else: - import_link_section = texts.t( - "SUBSCRIPTION_IMPORT_LINK_SECTION", - "πŸ”— Π’Π°ΡˆΠ° ссылка для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² VPN ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:\\n{subscription_url}", - ).format(subscription_url=subscription_link) + import_link_section = texts.t( + "SUBSCRIPTION_IMPORT_LINK_SECTION", + "πŸ”— Π’Π°ΡˆΠ° ссылка для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² VPN ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:\\n{subscription_url}", + ).format(subscription_url=subscription_link) - success_text = ( - f"{texts.SUBSCRIPTION_PURCHASED}\n\n" - f"{import_link_section}\n\n" - f"{texts.t('SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT', 'πŸ“± НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ настройкС VPN Π½Π° вашСм устройствС')}" - ) + success_text = ( + f"{texts.SUBSCRIPTION_PURCHASED}\n\n" + f"{import_link_section}\n\n" + f"{texts.t('SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT', 'πŸ“± НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ настройкС VPN Π½Π° вашСм устройствС')}" + ) connect_mode = settings.CONNECT_BUTTON_MODE @@ -3389,7 +3338,7 @@ async def confirm_purchase( ], [InlineKeyboardButton(text=texts.t("BACK_TO_MAIN_MENU_BUTTON", "⬅️ Π’ Π³Π»Π°Π²Π½ΠΎΠ΅ мСню"), callback_data="back_to_menu")], ]) - elif connect_mode == "link": + elif connect_mode in {"link", "happ_cryptolink"}: rows = [ [InlineKeyboardButton(text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), url=subscription_link)] ] @@ -3398,20 +3347,6 @@ async def confirm_purchase( rows.append(happ_row) rows.append([InlineKeyboardButton(text=texts.t("BACK_TO_MAIN_MENU_BUTTON", "⬅️ Π’ Π³Π»Π°Π²Π½ΠΎΠ΅ мСню"), callback_data="back_to_menu")]) connect_keyboard = InlineKeyboardMarkup(inline_keyboard=rows) - elif connect_mode == "happ_cryptolink": - rows = [ - [ - InlineKeyboardButton( - text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), - callback_data="open_subscription_link", - ) - ] - ] - happ_row = get_happ_download_button_row(texts) - if happ_row: - rows.append(happ_row) - rows.append([InlineKeyboardButton(text=texts.t("BACK_TO_MAIN_MENU_BUTTON", "⬅️ Π’ Π³Π»Π°Π²Π½ΠΎΠ΅ мСню"), callback_data="back_to_menu")]) - connect_keyboard = InlineKeyboardMarkup(inline_keyboard=rows) else: connect_keyboard = InlineKeyboardMarkup(inline_keyboard=[ [InlineKeyboardButton(text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), callback_data="subscription_connect")], @@ -4250,7 +4185,7 @@ async def handle_connect_subscription( parse_mode="HTML" ) - elif connect_mode == "link": + elif connect_mode in {"link", "happ_cryptolink"}: rows = [ [ InlineKeyboardButton( @@ -4271,41 +4206,14 @@ async def handle_connect_subscription( await callback.message.edit_text( texts.t( "SUBSCRIPTION_CONNECT_LINK_MESSAGE", - """πŸš€ ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ подписку", + """πŸš€ ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ подписку πŸ”— НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ссылку подписки:""", ), reply_markup=keyboard, parse_mode="HTML" ) - elif connect_mode == "happ_cryptolink": - rows = [ - [ - InlineKeyboardButton( - text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), - callback_data="open_subscription_link", - ) - ] - ] - happ_row = get_happ_download_button_row(texts) - if happ_row: - rows.append(happ_row) - rows.append([ - InlineKeyboardButton(text=texts.BACK, callback_data="menu_subscription") - ]) - keyboard = InlineKeyboardMarkup(inline_keyboard=rows) - - await callback.message.edit_text( - texts.t( - "SUBSCRIPTION_CONNECT_LINK_MESSAGE", - """πŸš€ ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ подписку", - -πŸ”— НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ссылку подписки:""", - ), - reply_markup=keyboard, - parse_mode="HTML" - ) else: device_text = texts.t( "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE", @@ -4606,32 +4514,6 @@ async def handle_open_subscription_link( ) return - if settings.is_happ_cryptolink_mode(): - happ_message = ( - texts.t( - "SUBSCRIPTION_HAPP_OPEN_TITLE", - "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Happ", - ) - + "\n\n" - + texts.t( - "SUBSCRIPTION_HAPP_OPEN_LINK", - "πŸ”“ ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ссылку Π² Happ", - ).format(subscription_link=subscription_link) - + "\n\n" - + texts.t( - "SUBSCRIPTION_HAPP_OPEN_HINT", - "πŸ’‘ Если ссылка Π½Π΅ открываСтся автоматичСски, скопируйтС Π΅Ρ‘ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ: {subscription_link}", - ).format(subscription_link=subscription_link) - ) - - await callback.message.answer( - happ_message, - parse_mode="HTML", - disable_web_page_preview=True, - ) - await callback.answer() - return - link_text = ( texts.t("SUBSCRIPTION_DEVICE_LINK_TITLE", "πŸ”— Бсылка подписки:") + "\n\n" diff --git a/app/keyboards/inline.py b/app/keyboards/inline.py index 68a5a30b..29a1262d 100644 --- a/app/keyboards/inline.py +++ b/app/keyboards/inline.py @@ -113,7 +113,7 @@ def get_main_menu_keyboard( web_app=types.WebAppInfo(url=settings.MINIAPP_CUSTOM_URL) ) ]) - elif connect_mode == "link": + elif connect_mode in {"link", "happ_cryptolink"}: if subscription_link: keyboard.append([ InlineKeyboardButton( @@ -123,16 +123,6 @@ def get_main_menu_keyboard( ]) else: keyboard.append([_fallback_connect_button()]) - elif connect_mode == "happ_cryptolink": - if subscription_link: - keyboard.append([ - InlineKeyboardButton( - text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), - callback_data="open_subscription_link", - ) - ]) - else: - keyboard.append([_fallback_connect_button()]) else: keyboard.append([_fallback_connect_button()]) @@ -395,17 +385,10 @@ def get_subscription_keyboard( keyboard.append([ InlineKeyboardButton(text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), callback_data="subscription_connect") ]) - elif connect_mode == "link": + elif connect_mode in {"link", "happ_cryptolink"}: keyboard.append([ InlineKeyboardButton(text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), url=subscription_link) ]) - elif connect_mode == "happ_cryptolink": - keyboard.append([ - InlineKeyboardButton( - text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), - callback_data="open_subscription_link", - ) - ]) else: keyboard.append([ InlineKeyboardButton(text=texts.t("CONNECT_BUTTON", "πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ"), callback_data="subscription_connect") @@ -1360,18 +1343,9 @@ def get_connection_guide_keyboard( if app_buttons: keyboard.append(app_buttons) - if settings.is_happ_cryptolink_mode(): - copy_button = InlineKeyboardButton( - text=texts.t("COPY_SUBSCRIPTION_LINK", "πŸ“‹ Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ссылку подписки"), - callback_data="open_subscription_link", - ) - else: - copy_button = InlineKeyboardButton( - text=texts.t("COPY_SUBSCRIPTION_LINK", "πŸ“‹ Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ссылку подписки"), - url=subscription_url, - ) - - keyboard.append([copy_button]) + keyboard.append([ + InlineKeyboardButton(text=texts.t("COPY_SUBSCRIPTION_LINK", "πŸ“‹ Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ссылку подписки"), url=subscription_url) + ]) keyboard.extend([ [ @@ -1442,18 +1416,9 @@ def get_specific_app_keyboard( if app_buttons: keyboard.append(app_buttons) - if settings.is_happ_cryptolink_mode(): - copy_button = InlineKeyboardButton( - text=texts.t("COPY_SUBSCRIPTION_LINK", "πŸ“‹ Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ссылку подписки"), - callback_data="open_subscription_link", - ) - else: - copy_button = InlineKeyboardButton( - text=texts.t("COPY_SUBSCRIPTION_LINK", "πŸ“‹ Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ссылку подписки"), - url=subscription_url, - ) - - keyboard.append([copy_button]) + keyboard.append([ + InlineKeyboardButton(text=texts.t("COPY_SUBSCRIPTION_LINK", "πŸ“‹ Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ссылку подписки"), url=subscription_url) + ]) if 'additionalAfterAddSubscriptionStep' in app and 'buttons' in app['additionalAfterAddSubscriptionStep']: for button in app['additionalAfterAddSubscriptionStep']['buttons']: