diff --git a/handlers/commands.py b/handlers/commands.py index e7e227d..5e8779a 100644 --- a/handlers/commands.py +++ b/handlers/commands.py @@ -27,7 +27,7 @@ from managers.task_manager import TaskManager, TaskParams from services.browser_service import BrowserService from services.browser_pool import BrowserPool from services.visit_service import VisitScheduler -from utils.helpers import parse_range, format_range, extract_domain +from utils.helpers import parse_range, format_range, extract_domain, fmt_price from utils.telegram import send_message_safe, send_visit_result from managers.storage import TaskStorage, ChatStorage, BalanceStorage, RubleBalanceStorage, PaymentStorage, PaymentHistoryStorage from services.payment_service import HelketPayment @@ -694,7 +694,7 @@ class BotInterface: # Пополнение рублёвого баланса new_rub = await interface.rub_storage.add_balance(uid, payment["rub"]) builder = InlineKeyboardBuilder() - builder.row(InlineKeyboardButton(text=f"🛒 Купить переходы ({settings.CLICK_PRICE_RUB:.0f} ₽/шт)", callback_data="visit_shop")) + builder.row(InlineKeyboardButton(text=f"🛒 Купить переходы ({fmt_price(settings.CLICK_PRICE_RUB)} ₽/шт)", callback_data="visit_shop")) builder.row(InlineKeyboardButton(text="🔙 В кабинет", callback_data="my_balance")) await callback.message.edit_text( f"✅ Баланс пополнен!\n\n" @@ -748,7 +748,7 @@ class BotInterface: builder.row(InlineKeyboardButton(text="❌ Отмена", callback_data="cancel_pay_input")) await callback.message.edit_text( f"🛒 Купить переходы\n\n" - f"Цена: {price:.0f} ₽ за 1 переход", + f"Цена: {fmt_price(price)} ₽ за 1 переход", reply_markup=builder.as_markup() ) interface._menu_msg[uid] = callback.message.message_id @@ -770,7 +770,7 @@ class BotInterface: await callback.message.edit_text( f"🛒 Подтвердите покупку\n\n" - f"🔢 {clicks} переходов × {settings.CLICK_PRICE_RUB:.0f} ₽ = {cost} ₽" + f"🔢 {clicks} переходов × {fmt_price(settings.CLICK_PRICE_RUB)} ₽ = {cost} ₽" + (f"\n\n🪙 Ваш баланс: {rub_bal} ₽" if rub_bal > 0 else ""), reply_markup=builder.as_markup() ) @@ -819,7 +819,7 @@ class BotInterface: builder.row(InlineKeyboardButton(text="❌ Отмена", callback_data="cancel_pay_input")) await callback.message.edit_text( f"✏️ Введите количество переходов\n\n" - f"Цена: {settings.CLICK_PRICE_RUB:.0f} ₽ за 1 переход", + f"Цена: {fmt_price(settings.CLICK_PRICE_RUB)} ₽ за 1 переход", reply_markup=builder.as_markup() ) interface._menu_msg[uid] = callback.message.message_id @@ -967,7 +967,7 @@ class BotInterface: await callback.message.edit_text( f"Счёт создан\n\n" - f"🔢 {clicks} переходов × {settings.CLICK_PRICE_RUB:.0f} ₽ = {rub} ₽\n\n" + f"🔢 {clicks} переходов × {fmt_price(settings.CLICK_PRICE_RUB)} ₽ = {rub} ₽\n\n" f"{body}", reply_markup=builder.as_markup() ) @@ -2504,7 +2504,7 @@ class BotInterface: else: builder.row( InlineKeyboardButton(text="💳 Пополнить криптой", callback_data="topup_main"), - InlineKeyboardButton(text=f"🛒 Купить переходы ({settings.CLICK_PRICE_RUB:.0f} ₽/шт)", callback_data="visit_shop"), + InlineKeyboardButton(text=f"🛒 Купить переходы ({fmt_price(settings.CLICK_PRICE_RUB)} ₽/шт)", callback_data="visit_shop"), ) builder.row(InlineKeyboardButton(text="🧾 История платежей", callback_data="payment_history")) builder.row(InlineKeyboardButton(text="🔑 Режим администратора", callback_data="enter_admin_mode")) diff --git a/utils/helpers.py b/utils/helpers.py index a45cd60..9da73e3 100644 --- a/utils/helpers.py +++ b/utils/helpers.py @@ -1,5 +1,10 @@ """Utility helper functions.""" + +def fmt_price(price: float) -> str: + """Форматирует цену: убирает лишние нули (1.4 → '1.4', 2.0 → '2').""" + return f"{price:g}" + def parse_range(value: str, default_min: int = 5) -> tuple: """Парсит строку диапазона 'мин-макс' или одиночное число.""" # Очищаем от кавычек и пробелов