diff --git a/handlers/subscriptions.py b/handlers/subscriptions.py index 8c0db44..53b12e6 100644 --- a/handlers/subscriptions.py +++ b/handlers/subscriptions.py @@ -290,10 +290,6 @@ async def cb_sub_cfg(callback: types.CallbackQuery): @router.callback_query(lambda c: c.data.startswith("sub_renew:")) async def cb_sub_renew(callback: types.CallbackQuery): - """ - Кнопка 'Продлить' в карточке подписки. - По факту — повторный /subscription/buy с тем же планом. - """ sub_id = callback.data.split(":", maxsplit=1)[ 1] if ":" in callback.data else None user, subs = await _fetch_user_and_subs(callback.from_user.id) @@ -309,8 +305,8 @@ async def cb_sub_renew(callback: types.CallbackQuery): await callback.answer() return - plan_id = target.get("plan_name") - if not plan_id: + plan_name = target.get("plan_name") + if not plan_name: await callback.message.answer("Не удалось определить тариф для продления.") await callback.answer() return @@ -318,10 +314,9 @@ async def cb_sub_renew(callback: types.CallbackQuery): result = await call_api( "POST", "/subscription/buy", - {"telegram_id": str(callback.from_user.id), "plan_id": plan_id}, + {"telegram_id": str(callback.from_user.id), "plan_name": plan_name}, ) - # Ошибки backend (detail) if result == "ERROR" or not isinstance(result, dict): await callback.message.answer("Ошибка при продлении. Попробуй позже.") await callback.answer() @@ -341,19 +336,16 @@ async def cb_sub_renew(callback: types.CallbackQuery): await callback.answer() return - # Успех — backend вернёт message с URI uri = result.get("message") if isinstance(uri, str) and uri: - escaped_uri = escape_markdown_v2(uri) await callback.message.answer( "Подписка успешно продлена.\n" - f"Твой конфиг:\n```{escaped_uri}```", - parse_mode=ParseMode.MARKDOWN_V2, + f"Твой конфиг:\n{uri}", + parse_mode=ParseMode.HTML, ) else: await callback.message.answer("Подписка успешно продлена.") - # Перерисовать карточку (обновлённый список) await _show_subscriptions_view( msg=callback.message, telegram_id=callback.from_user.id, @@ -362,9 +354,9 @@ async def cb_sub_renew(callback: types.CallbackQuery): ) await callback.answer() - # ===== Меню покупки подписки (Basic / Pro / Family) ===== + @router.callback_query(lambda callback: callback.data == "buy_subscription") async def buy_subscription_callback_handler(callback: types.CallbackQuery): """ @@ -456,13 +448,10 @@ async def lark_tariff_callback_handler(callback: types.CallbackQuery): @router.callback_query(lambda callback: callback.data.startswith("confirm:")) async def confirm_callback_handler(callback: types.CallbackQuery): - """ - Подтверждение покупки тарифа. - """ try: data = callback.data.split(":", maxsplit=1)[1] name, classif, amount_str = data.split("_") - plan_id = f"{name}_{classif}_{amount_str}" + plan_name = f"{name}_{classif}_{amount_str}" except Exception: await callback.message.edit_text("Некорректные данные тарифа.") await callback.answer() @@ -471,7 +460,7 @@ async def confirm_callback_handler(callback: types.CallbackQuery): result = await call_api( "POST", "/subscription/buy", - {"telegram_id": str(callback.from_user.id), "plan_id": plan_id}, + {"telegram_id": str(callback.from_user.id), "plan_name": plan_name}, ) if result == "ERROR" or not isinstance(result, dict): @@ -498,12 +487,10 @@ async def confirm_callback_handler(callback: types.CallbackQuery): uri = result.get("message", "") if uri: - escaped_uri = escape_markdown_v2(uri) - answer_text = f"Подписка успешно оформлена!\n\nТвой конфиг:\n```{escaped_uri}```" await callback.message.edit_text("Подписка успешно оформлена.") await callback.message.answer( - answer_text, - parse_mode=ParseMode.MARKDOWN_V2, + f"Подписка успешно оформлена!\n\nТвой конфиг:\n{uri}", + parse_mode=ParseMode.HTML, ) else: await callback.message.edit_text("Подписка успешно оформлена.")