From 71facd9624ecc270c140ab10cff8a25bf94ea388 Mon Sep 17 00:00:00 2001 From: gy9vin Date: Thu, 18 Dec 2025 08:45:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=BA=D1=82=D0=B8=D0=B2=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=BF=D0=BE=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B1=D0=B0=D0=BB=D0=B0?= =?UTF-8?q?=D0=BD=D1=81=D0=B0!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 4 ++++ app/config.py | 2 ++ app/handlers/menu.py | 17 +++++++++++++++++ app/keyboards/inline.py | 6 ++++++ 4 files changed, 29 insertions(+) diff --git a/.env.example b/.env.example index e2fc368c..a8d57a98 100644 --- a/.env.example +++ b/.env.example @@ -509,6 +509,10 @@ BOT_RUN_MODE=polling # polling, webhook или both CONTESTS_ENABLED=false CONTESTS_BUTTON_VISIBLE=false +# ===== КНОПКА АКТИВАЦИИ ===== +ACTIVATE_BUTTON_VISIBLE=false +# ACTIVATE_BUTTON_TEXT=активировать + # ===== ЕДИНЫЙ ВЕБ-СЕРВЕР ===== WEB_API_ENABLED=false WEB_API_HOST=0.0.0.0 diff --git a/app/config.py b/app/config.py index d6e70776..a87c8dd0 100644 --- a/app/config.py +++ b/app/config.py @@ -239,6 +239,8 @@ class Settings(BaseSettings): # Отключение превью ссылок в сообщениях бота DISABLE_WEB_PAGE_PREVIEW: bool = False + ACTIVATE_BUTTON_VISIBLE: bool = False + ACTIVATE_BUTTON_TEXT: str = "активировать" PAYMENT_BALANCE_DESCRIPTION: str = "Пополнение баланса" PAYMENT_SUBSCRIPTION_DESCRIPTION: str = "Оплата подписки" PAYMENT_SERVICE_NAME: str = "Интернет-сервис" diff --git a/app/handlers/menu.py b/app/handlers/menu.py index a4301d73..cc690071 100644 --- a/app/handlers/menu.py +++ b/app/handlers/menu.py @@ -1223,6 +1223,18 @@ async def get_main_menu_text(user, texts, db: AsyncSession): return base_text +async def handle_activate_button( + callback: types.CallbackQuery, + db_user: User, + db: AsyncSession +): + texts = get_texts(db_user.language) + await callback.answer( + texts.t("ACTIVATION_SUCCESS", "✅ Активация выполнена!"), + show_alert=True, + ) + + def register_handlers(dp: Dispatcher): dp.callback_query.register( @@ -1295,3 +1307,8 @@ def register_handlers(dp: Dispatcher): handle_add_traffic, F.data == "buy_traffic" ) + + dp.callback_query.register( + handle_activate_button, + F.data == "activate_button" + ) diff --git a/app/keyboards/inline.py b/app/keyboards/inline.py index f9db008b..e34f5d29 100644 --- a/app/keyboards/inline.py +++ b/app/keyboards/inline.py @@ -461,6 +461,12 @@ def get_main_menu_keyboard( InlineKeyboardButton(text=texts.MENU_SUPPORT, callback_data="menu_support") ) + # Добавляем кнопку активации + if settings.ACTIVATE_BUTTON_VISIBLE: + paired_buttons.append( + InlineKeyboardButton(text=settings.ACTIVATE_BUTTON_TEXT, callback_data="activate_button") + ) + paired_buttons.append( InlineKeyboardButton( text=texts.t("MENU_INFO", "ℹ️ Инфо"),