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']: