From 779f13b98ec0898209f873fdebcc83c5d49502f3 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 25 Nov 2025 07:55:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=91?= =?UTF-8?q?=D0=BD=20=D0=BF=D1=80=D0=BE=D1=84=D0=B8=D0=BB=D1=8C=20=D0=B8=20?= =?UTF-8?q?=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20=D0=B2=D1=8B=D0=B1=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=20=D1=81=D0=BF=D0=BE=D1=81=D0=BE=D0=B1=D0=B0=20?= =?UTF-8?q?=D0=BE=D0=BF=D0=BB=D0=B0=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handlers/profile.py | 71 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 16 deletions(-) diff --git a/handlers/profile.py b/handlers/profile.py index cf005da..bd10299 100644 --- a/handlers/profile.py +++ b/handlers/profile.py @@ -15,6 +15,7 @@ from keyboard.keyboards import ( confirm_popup_keyboard, guide_keyboard, balance_keyboard, + payment_methods_keyboard, ) locale.setlocale(locale.LC_TIME, "ru_RU.UTF-8") @@ -57,7 +58,7 @@ async def call_api(method, endpoint, data=None): async def profile_callback_handler(callback: CallbackQuery): """ Профиль пользователя. - Логика работы с API сохранена, изменён только текст/визуал (как в профиле Михаила). + Логика работы с API сохранена, изменён только текст/визуал. """ try: user_data = await call_api("GET", f"/user/{callback.from_user.id}") @@ -78,7 +79,7 @@ async def profile_callback_handler(callback: CallbackQuery): username = callback.from_user.username or "-" balance = user_data.get("balance", 0) - # Определяем статус подписки + # Статус подписки: Активна / Нет активных sub_status = "⚫ Нет активных" if sub_data: @@ -206,27 +207,65 @@ async def tranhist_callback_handler(callback: CallbackQuery): @router.callback_query(lambda callback: callback.data.startswith("popup:")) async def popup_confirm_callback_handler(callback: CallbackQuery): """ - Обработчик подтверждения пополнения баланса. + После выбора суммы показываем варианты оплаты. + Реального списания пока нет — только выбор метода. """ - data = callback.data.split(":") - popup_info = data[1] - result = await call_api( - "POST", - f"/user/{callback.from_user.id}/balance/{float(popup_info)}", - ) - if result == "ERROR": - await callback.message.answer( - "Произошла ошибка, попробуйте позже или свяжитесь с администрацией." - ) + try: + data = callback.data.split(":") + amount_str = data[1] + amount = int(float(amount_str)) + except Exception: + await callback.message.answer("Некорректная сумма пополнения.") await callback.answer() return text = ( - f"✅ Баланс пополнен на {popup_info} ₽. " - "Спасибо, что остаёшься с Lark." + f"💰 Сумма пополнения: {amount} ₽\n\n" + "Выбери способ оплаты:" ) + await callback.message.edit_text( - text=text, reply_markup=confirm_popup_keyboard() + text=text, + reply_markup=payment_methods_keyboard(amount), + ) + await callback.answer() + + +@router.callback_query(lambda callback: callback.data.startswith("method_stars_")) +async def method_stars_handler(callback: CallbackQuery): + """ + Заглушка: оплата через Telegram Stars. + """ + amount = callback.data.split("_")[-1] + await callback.message.edit_text( + f"⭐ Оплата через Telegram Stars на {amount} ₽ пока в разработке.\n\n" + "Позже сюда подвяжем реальный платёж.", + ) + await callback.answer() + + +@router.callback_query(lambda callback: callback.data.startswith("method_ykassa_")) +async def method_ykassa_handler(callback: CallbackQuery): + """ + Заглушка: оплата через YooKassa. + """ + amount = callback.data.split("_")[-1] + await callback.message.edit_text( + f"💵 Оплата через YooKassa на {amount} ₽ пока в разработке.\n\n" + "Функционал появится после настройки биллинга.", + ) + await callback.answer() + + +@router.callback_query(lambda callback: callback.data.startswith("method_crypto_")) +async def method_crypto_handler(callback: CallbackQuery): + """ + Заглушка: оплата через CryptoBot. + """ + amount = callback.data.split("_")[-1] + await callback.message.edit_text( + f"🪙 Оплата через CryptoBot на {amount} ₽ пока в разработке.\n\n" + "Платёжный шлюз будет добавлен позже.", ) await callback.answer()