diff --git a/.env.example b/.env.example
index 4e295c71..d129df68 100644
--- a/.env.example
+++ b/.env.example
@@ -194,6 +194,7 @@ CRYPTOBOT_INVOICE_EXPIRES_HOURS=24
# guide - открывает гайд подключения (режим 1)
# miniapp_subscription - открывает ссылку подписки в мини-приложении (режим 2)
# miniapp_custom - открывает заданную ссылку в мини-приложении (режим 3)
+# link - открывает ссылку подписки напрямую (режим 4)
CONNECT_BUTTON_MODE=guide
# URL для режима miniapp_custom (обязателен при CONNECT_BUTTON_MODE=miniapp_custom)
diff --git a/README.md b/README.md
index ebc0678a..a225d92b 100644
--- a/README.md
+++ b/README.md
@@ -362,6 +362,7 @@ PAYMENT_SUBSCRIPTION_TEMPLATE={service_name} - {description}
# guide - открывает гайд подключения (режим 1)
# miniapp_subscription - открывает ссылку подписки в мини-приложении (режим 2)
# miniapp_custom - открывает заданную ссылку в мини-приложении (режим 3)
+# link - открывает ссылку подписки напрямую (режим 4)
CONNECT_BUTTON_MODE=guide
# URL для режима miniapp_custom (обязателен при CONNECT_BUTTON_MODE=miniapp_custom)
diff --git a/app/handlers/subscription.py b/app/handlers/subscription.py
index 0f1fa72e..dce7148b 100644
--- a/app/handlers/subscription.py
+++ b/app/handlers/subscription.py
@@ -416,6 +416,12 @@ async def activate_trial(
[InlineKeyboardButton(text="📱 Моя подписка", callback_data="menu_subscription")],
[InlineKeyboardButton(text="⬅️ В главное меню", callback_data="back_to_menu")],
])
+ elif connect_mode == "link":
+ connect_keyboard = InlineKeyboardMarkup(inline_keyboard=[
+ [InlineKeyboardButton(text="🔗 Подключиться", url=subscription.subscription_url)],
+ [InlineKeyboardButton(text="📱 Моя подписка", callback_data="menu_subscription")],
+ [InlineKeyboardButton(text="⬅️ В главное меню", callback_data="back_to_menu")],
+ ])
else:
connect_keyboard = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text="🔗 Подключиться", callback_data="subscription_connect")],
@@ -1920,6 +1926,12 @@ async def confirm_purchase(
[InlineKeyboardButton(text="📱 Моя подписка", callback_data="menu_subscription")],
[InlineKeyboardButton(text="⬅️ В главное меню", callback_data="back_to_menu")],
])
+ elif connect_mode == "link":
+ connect_keyboard = InlineKeyboardMarkup(inline_keyboard=[
+ [InlineKeyboardButton(text="🔗 Подключиться", url=subscription.subscription_url)],
+ [InlineKeyboardButton(text="📱 Моя подписка", callback_data="menu_subscription")],
+ [InlineKeyboardButton(text="⬅️ В главное меню", callback_data="back_to_menu")],
+ ])
else:
connect_keyboard = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text="🔗 Подключиться", callback_data="subscription_connect")],
@@ -2687,7 +2699,30 @@ async def handle_connect_subscription(
reply_markup=keyboard,
parse_mode="HTML"
)
-
+
+ elif connect_mode == "link":
+ keyboard = InlineKeyboardMarkup(inline_keyboard=[
+ [
+ InlineKeyboardButton(
+ text="🔗 Подключиться",
+ url=subscription.subscription_url
+ )
+ ],
+ [
+ InlineKeyboardButton(text="⬅️ Назад", callback_data="menu_subscription")
+ ]
+ ])
+
+ await callback.message.edit_text(
+ f"""
+🚀 Подключить подписку
+
+🔗 Нажмите кнопку ниже, чтобы открыть ссылку подписки:
+ """,
+ reply_markup=keyboard,
+ parse_mode="HTML"
+ )
+
else:
device_text = f"""
📱 Подключить подписку
diff --git a/app/keyboards/inline.py b/app/keyboards/inline.py
index 7ab3e675..7ea02102 100644
--- a/app/keyboards/inline.py
+++ b/app/keyboards/inline.py
@@ -163,6 +163,10 @@ def get_subscription_keyboard(
keyboard.append([
InlineKeyboardButton(text="🔗 Подключиться", callback_data="subscription_connect")
])
+ elif connect_mode == "link":
+ keyboard.append([
+ InlineKeyboardButton(text="🔗 Подключиться", url=subscription.subscription_url)
+ ])
else:
keyboard.append([
InlineKeyboardButton(text="🔗 Подключиться", callback_data="subscription_connect")