diff --git a/app/handlers/subscription.py b/app/handlers/subscription.py
index a98570e8..e6dab937 100644
--- a/app/handlers/subscription.py
+++ b/app/handlers/subscription.py
@@ -4589,45 +4589,11 @@ async def handle_no_traffic_packages(
):
await callback.answer(
"⚠️ В данный момент нет доступных пакетов трафика. "
- "Обратитесь в техподдержку для получения информации.",
+ "Обратитесь в техподдержку для получения информации.",
show_alert=True
)
-async def handle_happ_copy_subscription_link(
- callback: types.CallbackQuery,
- db_user: User,
- db: AsyncSession
-):
- texts = get_texts(db_user.language)
- subscription = db_user.subscription
- subscription_link = get_display_subscription_link(subscription)
-
- if not subscription_link:
- await callback.answer(
- texts.t("SUBSCRIPTION_LINK_UNAVAILABLE", "❌ Ссылка подписки недоступна"),
- show_alert=True,
- )
- return
-
- await callback.message.answer(
- texts.t(
- "SUBSCRIPTION_HAPP_COPY_MESSAGE",
- "🔗 Ссылка для Happ:\n{subscription_link}",
- ).format(subscription_link=subscription_link),
- parse_mode="HTML",
- disable_web_page_preview=True,
- )
-
- await callback.answer(
- texts.t(
- "SUBSCRIPTION_HAPP_COPY_ALERT",
- "📋 Ссылка отправлена отдельным сообщением.",
- ),
- show_alert=False,
- )
-
-
async def handle_open_subscription_link(
callback: types.CallbackQuery,
db_user: User,
@@ -4645,37 +4611,21 @@ async def handle_open_subscription_link(
return
if settings.is_happ_cryptolink_mode():
- allowed_schemes = ("http://", "https://", "tg://", "ton://", "ftp://")
- link_supported = subscription_link.startswith(allowed_schemes)
-
- if link_supported:
- link_line = texts.t(
- "SUBSCRIPTION_HAPP_OPEN_LINK",
- "🔓 Открыть ссылку в Happ",
- ).format(subscription_link=subscription_link)
- else:
- link_line = texts.t(
- "SUBSCRIPTION_HAPP_OPEN_LINK_UNSUPPORTED",
- "🔓 Скопируйте ссылку из блока ниже и откройте её в Happ вручную.",
- )
-
happ_message = (
texts.t(
"SUBSCRIPTION_HAPP_OPEN_TITLE",
"🔗 Подключение через Happ",
)
+ "\n\n"
- + link_line
+ + 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)
- + "\n\n"
- + texts.t(
- "SUBSCRIPTION_HAPP_OPEN_COPY_HINT",
- "📋 Нажмите кнопку ниже, чтобы получить ссылку одним нажатием.",
- )
)
keyboard = get_happ_cryptolink_keyboard(subscription_link, db_user.language)
@@ -5416,16 +5366,11 @@ def register_handlers(dp: Dispatcher):
F.data == "happ_download_back"
)
- dp.callback_query.register(
- handle_happ_copy_subscription_link,
- F.data == "happ_copy_link"
- )
-
dp.callback_query.register(
handle_connect_subscription,
F.data == "subscription_connect"
)
-
+
dp.callback_query.register(
handle_device_guide,
F.data.startswith("device_guide_")
diff --git a/app/keyboards/inline.py b/app/keyboards/inline.py
index 92b4345b..01e79ce4 100644
--- a/app/keyboards/inline.py
+++ b/app/keyboards/inline.py
@@ -2,7 +2,6 @@ from typing import List, Optional
from aiogram import types
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from datetime import datetime
-from urllib.parse import urlparse
from app.database.models import User
from sqlalchemy.ext.asyncio import AsyncSession
@@ -255,74 +254,49 @@ def get_happ_download_button_row(texts) -> Optional[List[InlineKeyboardButton]]:
]
-def _is_supported_inline_button_url(url: str) -> bool:
- try:
- parsed = urlparse(url)
- except ValueError:
- return False
-
- if not parsed.scheme:
- return False
-
- return parsed.scheme.lower() in {"http", "https", "tg", "ton", "ftp"}
-
-
def get_happ_cryptolink_keyboard(
subscription_link: str,
language: str = DEFAULT_LANGUAGE,
) -> InlineKeyboardMarkup:
texts = get_texts(language)
- buttons = []
-
- if _is_supported_inline_button_url(subscription_link):
- buttons.append([
+ buttons = [
+ [
InlineKeyboardButton(
text=texts.t("CONNECT_BUTTON", "🔗 Подключиться"),
url=subscription_link,
)
- ])
- else:
- buttons.append([
- InlineKeyboardButton(
- text=texts.t("HAPP_COPY_LINK_BUTTON", "📋 Получить ссылку"),
- callback_data="happ_copy_link",
- )
- ])
-
- buttons.extend(
+ ],
[
- [
- InlineKeyboardButton(
- text=texts.t("HAPP_PLATFORM_IOS", "🍎 iOS"),
- callback_data="happ_download_ios",
- )
- ],
- [
- InlineKeyboardButton(
- text=texts.t("HAPP_PLATFORM_ANDROID", "🤖 Android"),
- callback_data="happ_download_android",
- )
- ],
- [
- InlineKeyboardButton(
- text=texts.t("HAPP_PLATFORM_MACOS", "🖥️ Mac OS"),
- callback_data="happ_download_macos",
- )
- ],
- [
- InlineKeyboardButton(
- text=texts.t("HAPP_PLATFORM_WINDOWS", "💻 Windows"),
- callback_data="happ_download_windows",
- )
- ],
- [
- InlineKeyboardButton(
- text=texts.t("BACK_TO_MAIN_MENU_BUTTON", "⬅️ В главное меню"),
- callback_data="back_to_menu",
- )
- ],
- ]
- )
+ InlineKeyboardButton(
+ text=texts.t("HAPP_PLATFORM_IOS", "🍎 iOS"),
+ callback_data="happ_download_ios",
+ )
+ ],
+ [
+ InlineKeyboardButton(
+ text=texts.t("HAPP_PLATFORM_ANDROID", "🤖 Android"),
+ callback_data="happ_download_android",
+ )
+ ],
+ [
+ InlineKeyboardButton(
+ text=texts.t("HAPP_PLATFORM_MACOS", "🖥️ Mac OS"),
+ callback_data="happ_download_macos",
+ )
+ ],
+ [
+ InlineKeyboardButton(
+ text=texts.t("HAPP_PLATFORM_WINDOWS", "💻 Windows"),
+ callback_data="happ_download_windows",
+ )
+ ],
+ [
+ InlineKeyboardButton(
+ text=texts.t("BACK_TO_MAIN_MENU_BUTTON", "⬅️ В главное меню"),
+ callback_data="back_to_menu",
+ )
+ ],
+ ]
return InlineKeyboardMarkup(inline_keyboard=buttons)
diff --git a/locales/en.json b/locales/en.json
index ca7bde2b..84a68c61 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -26,7 +26,6 @@
"HAPP_PLATFORM_ANDROID": "🤖 Android",
"HAPP_PLATFORM_MACOS": "🖥️ Mac OS",
"HAPP_PLATFORM_WINDOWS": "💻 Windows",
- "HAPP_COPY_LINK_BUTTON": "📋 Get link",
"HAPP_PLATFORM_PC": "💻 PC",
"HAPP_DOWNLOAD_LINK_MESSAGE": "⬇️ Download Happ for {platform}:",
"HAPP_DOWNLOAD_LINK_NOT_SET": "❌ Download link for this device is not configured",
@@ -409,11 +408,7 @@
"SUBSCRIPTION_DEVICE_GUIDE_TITLE": "📱 Setup for {device_name}",
"SUBSCRIPTION_HAPP_OPEN_TITLE": "🔗 Connect via Happ",
"SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Open link in Happ",
- "SUBSCRIPTION_HAPP_OPEN_LINK_UNSUPPORTED": "🔓 Copy the link from the block below and open it in Happ manually.",
"SUBSCRIPTION_HAPP_OPEN_HINT": "💡 If the link doesn't open automatically, copy it manually: {subscription_link}",
- "SUBSCRIPTION_HAPP_OPEN_COPY_HINT": "📋 Use the button below to get the link in one tap.",
- "SUBSCRIPTION_HAPP_COPY_MESSAGE": "🔗 Happ link:\n{subscription_link}",
- "SUBSCRIPTION_HAPP_COPY_ALERT": "📋 The link was sent as a separate message.",
"SUBSCRIPTION_DEVICE_LINK_TITLE": "🔗 Subscription link:",
"SUBSCRIPTION_DEVICE_FEATURED_APP": "📋 Recommended app: {app_name}",
"SUBSCRIPTION_DEVICE_STEP_INSTALL_TITLE": "Step 1 - Install:",
diff --git a/locales/ru.json b/locales/ru.json
index b0eb4e59..b1498e4e 100644
--- a/locales/ru.json
+++ b/locales/ru.json
@@ -189,7 +189,6 @@
"HAPP_PLATFORM_ANDROID": "🤖 Android",
"HAPP_PLATFORM_MACOS": "🖥️ Mac OS",
"HAPP_PLATFORM_WINDOWS": "💻 Windows",
- "HAPP_COPY_LINK_BUTTON": "📋 Получить ссылку",
"HAPP_PLATFORM_PC": "💻 ПК",
"HAPP_DOWNLOAD_LINK_MESSAGE": "⬇️ Скачайте Happ для {platform}:",
"HAPP_DOWNLOAD_LINK_NOT_SET": "❌ Ссылка для этого устройства не настроена",
@@ -409,11 +408,7 @@
"SUBSCRIPTION_DEVICE_GUIDE_TITLE": "📱 Настройка для {device_name}",
"SUBSCRIPTION_HAPP_OPEN_TITLE": "🔗 Подключение через Happ",
"SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Открыть ссылку в Happ",
- "SUBSCRIPTION_HAPP_OPEN_LINK_UNSUPPORTED": "🔓 Скопируйте ссылку из блока ниже и откройте её в Happ вручную.",
"SUBSCRIPTION_HAPP_OPEN_HINT": "💡 Если ссылка не открывается автоматически, скопируйте её вручную: {subscription_link}",
- "SUBSCRIPTION_HAPP_OPEN_COPY_HINT": "📋 Нажмите кнопку ниже, чтобы получить ссылку одним нажатием.",
- "SUBSCRIPTION_HAPP_COPY_MESSAGE": "🔗 Ссылка для Happ:\n{subscription_link}",
- "SUBSCRIPTION_HAPP_COPY_ALERT": "📋 Ссылка отправлена отдельным сообщением.",
"SUBSCRIPTION_DEVICE_LINK_TITLE": "🔗 Ссылка подписки:",
"SUBSCRIPTION_DEVICE_FEATURED_APP": "📋 Рекомендуемое приложение: {app_name}",
"SUBSCRIPTION_DEVICE_STEP_INSTALL_TITLE": "Шаг 1 - Установка:",