33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
from typing import Any
|
|
|
|
from aiogram.types import InlineKeyboardButton
|
|
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from handlers.payments.currency_rates import format_for_user
|
|
|
|
|
|
async def add_tariff_button_generic(
|
|
builder: InlineKeyboardBuilder,
|
|
tariff: dict[str, Any],
|
|
session: AsyncSession,
|
|
tg_id: int,
|
|
language_code: str | None,
|
|
callback_prefix: str,
|
|
):
|
|
"""Добавляет кнопку тарифа с учётом конфигуратора."""
|
|
is_configurable = bool(tariff.get("configurable"))
|
|
if is_configurable:
|
|
button_text = tariff["name"]
|
|
else:
|
|
price_rub = float(tariff.get("price_rub") or 0)
|
|
price_text = await format_for_user(session, tg_id, price_rub, language_code)
|
|
button_text = f"{tariff['name']} — {price_text}"
|
|
|
|
builder.row(
|
|
InlineKeyboardButton(
|
|
text=button_text,
|
|
callback_data=f"{callback_prefix}|{tariff['id']}",
|
|
)
|
|
)
|