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 - Установка:",