chore: run lint and prettifier

This commit is contained in:
3252a8
2026-05-12 21:54:12 +03:00
parent f31540afdb
commit 11187487b4
174 changed files with 12383 additions and 6688 deletions
+266 -154
View File
@@ -1,15 +1,14 @@
from aiogram.utils.keyboard import InlineKeyboardBuilder, InlineKeyboardButton
from typing import Any, Dict, List, Optional, Tuple
from aiogram.types import InlineKeyboardMarkup, WebAppInfo
from typing import Dict, Optional, List, Tuple, Any
from aiogram.utils.keyboard import InlineKeyboardBuilder, InlineKeyboardButton
from config.settings import Settings
def get_main_menu_inline_keyboard(
lang: str,
i18n_instance,
settings: Settings,
show_trial_button: bool = False) -> InlineKeyboardMarkup:
lang: str, i18n_instance, settings: Settings, show_trial_button: bool = False
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
@@ -29,35 +28,37 @@ def get_main_menu_inline_keyboard(
)
builder.row(
InlineKeyboardButton(text=_(key="menu_bot_interface_button"),
callback_data="main_action:bot_interface"))
InlineKeyboardButton(
text=_(key="menu_bot_interface_button"), callback_data="main_action:bot_interface"
)
)
if settings.SUPPORT_LINK:
builder.row(
InlineKeyboardButton(text=_(key="menu_support_button"),
url=settings.SUPPORT_LINK))
InlineKeyboardButton(text=_(key="menu_support_button"), url=settings.SUPPORT_LINK)
)
user_agreement_url = settings.USER_AGREEMENT_URL or settings.TERMS_OF_SERVICE_URL
if settings.PRIVACY_POLICY_URL or user_agreement_url:
builder.row(
InlineKeyboardButton(text=_(key="menu_info_button"),
callback_data="main_action:info"))
InlineKeyboardButton(text=_(key="menu_info_button"), callback_data="main_action:info")
)
return builder.as_markup()
def get_bot_interface_inline_keyboard(
lang: str,
i18n_instance,
settings: Settings,
show_trial_button: bool = False) -> InlineKeyboardMarkup:
lang: str, i18n_instance, settings: Settings, show_trial_button: bool = False
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
if show_trial_button and settings.TRIAL_ENABLED:
builder.row(
InlineKeyboardButton(text=_(key="menu_activate_trial_button"),
callback_data="main_action:request_trial"))
InlineKeyboardButton(
text=_(key="menu_activate_trial_button"), callback_data="main_action:request_trial"
)
)
if settings.SUBSCRIPTION_MINI_APP_URL:
builder.row(
@@ -68,8 +69,10 @@ def get_bot_interface_inline_keyboard(
)
builder.row(
InlineKeyboardButton(text=_(key="menu_subscribe_inline"),
callback_data="main_action:bot_subscribe"))
InlineKeyboardButton(
text=_(key="menu_subscribe_inline"), callback_data="main_action:bot_subscribe"
)
)
builder.row(
InlineKeyboardButton(
text=_(key="menu_my_subscription_inline"),
@@ -78,22 +81,24 @@ def get_bot_interface_inline_keyboard(
)
referral_button = InlineKeyboardButton(
text=_(key="menu_referral_inline"),
callback_data="main_action:bot_referral")
text=_(key="menu_referral_inline"), callback_data="main_action:bot_referral"
)
promo_button = InlineKeyboardButton(
text=_(key="menu_apply_promo_button"),
callback_data="main_action:bot_apply_promo")
text=_(key="menu_apply_promo_button"), callback_data="main_action:bot_apply_promo"
)
builder.row(referral_button)
builder.row(promo_button)
language_button = InlineKeyboardButton(
text=_(key="menu_language_settings_inline"),
callback_data="main_action:bot_language")
text=_(key="menu_language_settings_inline"), callback_data="main_action:bot_language"
)
status_button_list = []
if settings.SERVER_STATUS_URL:
status_button_list.append(
InlineKeyboardButton(text=_(key="menu_server_status_button"),
url=settings.SERVER_STATUS_URL))
InlineKeyboardButton(
text=_(key="menu_server_status_button"), url=settings.SERVER_STATUS_URL
)
)
if status_button_list:
builder.row(language_button, *status_button_list)
@@ -102,81 +107,93 @@ def get_bot_interface_inline_keyboard(
if settings.SUPPORT_LINK:
builder.row(
InlineKeyboardButton(text=_(key="menu_support_button"),
url=settings.SUPPORT_LINK))
InlineKeyboardButton(text=_(key="menu_support_button"), url=settings.SUPPORT_LINK)
)
user_agreement_url = settings.USER_AGREEMENT_URL or settings.TERMS_OF_SERVICE_URL
if settings.PRIVACY_POLICY_URL or user_agreement_url:
builder.row(
InlineKeyboardButton(text=_(key="menu_info_button"),
callback_data="main_action:bot_info"))
InlineKeyboardButton(
text=_(key="menu_info_button"), callback_data="main_action:bot_info"
)
)
builder.row(
InlineKeyboardButton(text=_(key="back_to_main_menu_button"),
callback_data="main_action:back_to_main"))
InlineKeyboardButton(
text=_(key="back_to_main_menu_button"), callback_data="main_action:back_to_main"
)
)
return builder.as_markup()
def get_information_links_keyboard(
lang: str,
i18n_instance,
privacy_policy_url: Optional[str],
user_agreement_url: Optional[str],
back_callback: str = "main_action:back_to_main") -> InlineKeyboardMarkup:
lang: str,
i18n_instance,
privacy_policy_url: Optional[str],
user_agreement_url: Optional[str],
back_callback: str = "main_action:back_to_main",
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
if privacy_policy_url:
builder.row(
InlineKeyboardButton(text=_(key="privacy_policy_button"),
url=privacy_policy_url))
InlineKeyboardButton(text=_(key="privacy_policy_button"), url=privacy_policy_url)
)
if user_agreement_url:
builder.row(
InlineKeyboardButton(text=_(key="user_agreement_button"),
url=user_agreement_url))
InlineKeyboardButton(text=_(key="user_agreement_button"), url=user_agreement_url)
)
builder.row(
InlineKeyboardButton(text=_(key="back_to_main_menu_button"),
callback_data=back_callback))
InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data=back_callback)
)
return builder.as_markup()
def get_language_selection_keyboard(i18n_instance,
current_lang: str,
back_callback: str = "main_action:back_to_main") -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(current_lang, key, **kwargs
)
def get_language_selection_keyboard(
i18n_instance, current_lang: str, back_callback: str = "main_action:back_to_main"
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(current_lang, key, **kwargs)
callback_suffix = ":bot" if back_callback == "main_action:bot_interface" else ""
builder = InlineKeyboardBuilder()
builder.button(text=f"🇬🇧 English {'' if current_lang == 'en' else ''}",
callback_data=f"set_lang_en{callback_suffix}")
builder.button(text=f"🇷🇺 Русский {'' if current_lang == 'ru' else ''}",
callback_data=f"set_lang_ru{callback_suffix}")
builder.button(text=_(key="back_to_main_menu_button"),
callback_data=back_callback)
builder.button(
text=f"🇬🇧 English {'' if current_lang == 'en' else ''}",
callback_data=f"set_lang_en{callback_suffix}",
)
builder.button(
text=f"🇷🇺 Русский {'' if current_lang == 'ru' else ''}",
callback_data=f"set_lang_ru{callback_suffix}",
)
builder.button(text=_(key="back_to_main_menu_button"), callback_data=back_callback)
builder.adjust(1)
return builder.as_markup()
def get_trial_confirmation_keyboard(lang: str,
i18n_instance) -> InlineKeyboardMarkup:
def get_trial_confirmation_keyboard(lang: str, i18n_instance) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
builder.button(text=_(key="trial_confirm_activate_button"),
callback_data="trial_action:confirm_activate")
builder.button(text=_(key="cancel_button"),
callback_data="main_action:back_to_main")
builder.button(
text=_(key="trial_confirm_activate_button"), callback_data="trial_action:confirm_activate"
)
builder.button(text=_(key="cancel_button"), callback_data="main_action:back_to_main")
builder.adjust(1)
return builder.as_markup()
def get_subscription_options_keyboard(subscription_options: Dict[
float, Optional[float]], currency_symbol_val: str, lang: str,
i18n_instance, traffic_mode: bool = False,
back_callback: str = "main_action:back_to_main") -> InlineKeyboardMarkup:
def get_subscription_options_keyboard(
subscription_options: Dict[float, Optional[float]],
currency_symbol_val: str,
lang: str,
i18n_instance,
traffic_mode: bool = False,
back_callback: str = "main_action:back_to_main",
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
def _format_gb(val: float) -> str:
return str(int(val)) if float(val).is_integer() else f"{val:g}"
if subscription_options:
for months, price in subscription_options.items():
if price is not None:
@@ -189,21 +206,24 @@ def get_subscription_options_keyboard(subscription_options: Dict[
)
callback_data = f"subscribe_period:{_format_gb(months)}"
else:
button_text = _("subscribe_for_months_button",
months=months,
price=price,
currency_symbol=currency_symbol_val)
button_text = _(
"subscribe_for_months_button",
months=months,
price=price,
currency_symbol=currency_symbol_val,
)
callback_data = f"subscribe_period:{months}"
builder.button(text=button_text,
callback_data=callback_data)
builder.button(text=button_text, callback_data=callback_data)
builder.adjust(1)
builder.row(
InlineKeyboardButton(text=_(key="back_to_main_menu_button"),
callback_data=back_callback))
InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data=back_callback)
)
return builder.as_markup()
def get_tariff_catalog_keyboard(tariffs: List[Any], lang: str, i18n_instance) -> InlineKeyboardMarkup:
def get_tariff_catalog_keyboard(
tariffs: List[Any], lang: str, i18n_instance
) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
for tariff in tariffs:
label = tariff.name(lang)
@@ -217,11 +237,17 @@ def get_tariff_catalog_keyboard(tariffs: List[Any], lang: str, i18n_instance) ->
label = f"{label} от {package.price:g} / {package.gb:g} GB"
builder.row(InlineKeyboardButton(text=label, callback_data=f"tariff:select:{tariff.key}"))
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder.row(InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data="main_action:back_to_main"))
builder.row(
InlineKeyboardButton(
text=_(key="back_to_main_menu_button"), callback_data="main_action:back_to_main"
)
)
return builder.as_markup()
def get_tariff_periods_keyboard(tariff: Any, lang: str, i18n_instance, settings: Settings) -> InlineKeyboardMarkup:
def get_tariff_periods_keyboard(
tariff: Any, lang: str, i18n_instance, settings: Settings
) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
for months in tariff.enabled_periods:
@@ -229,53 +255,98 @@ def get_tariff_periods_keyboard(tariff: Any, lang: str, i18n_instance, settings:
if rub_price and rub_price > 0:
builder.row(
InlineKeyboardButton(
text=_("subscribe_for_months_button", months=months, price=rub_price, currency_symbol=settings.DEFAULT_CURRENCY_SYMBOL),
text=_(
"subscribe_for_months_button",
months=months,
price=rub_price,
currency_symbol=settings.DEFAULT_CURRENCY_SYMBOL,
),
callback_data=f"tariff:period:{tariff.key}:{months}",
)
)
builder.row(InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data="main_action:subscribe"))
builder.row(
InlineKeyboardButton(
text=_(key="back_to_main_menu_button"), callback_data="main_action:subscribe"
)
)
return builder.as_markup()
def get_tariff_packages_keyboard(tariff: Any, packages: List[Any], lang: str, i18n_instance, back_callback: str = "main_action:subscribe") -> InlineKeyboardMarkup:
def get_tariff_packages_keyboard(
tariff: Any,
packages: List[Any],
lang: str,
i18n_instance,
back_callback: str = "main_action:subscribe",
) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
for package in packages:
builder.row(
InlineKeyboardButton(
text=_("buy_traffic_package_button", traffic_gb=f"{package.gb:g}", price=package.price, currency_symbol="RUB"),
text=_(
"buy_traffic_package_button",
traffic_gb=f"{package.gb:g}",
price=package.price,
currency_symbol="RUB",
),
callback_data=f"tariff:package:{tariff.key}:{package.gb:g}",
)
)
builder.row(InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data=back_callback))
builder.row(
InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data=back_callback)
)
return builder.as_markup()
def get_hwid_device_packages_keyboard(tariff: Any, packages: List[Any], lang: str, i18n_instance, settings: Settings, back_callback: str = "main_action:my_subscription") -> InlineKeyboardMarkup:
def get_hwid_device_packages_keyboard(
tariff: Any,
packages: List[Any],
lang: str,
i18n_instance,
settings: Settings,
back_callback: str = "main_action:my_subscription",
) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
for package in packages:
builder.row(
InlineKeyboardButton(
text=_("buy_hwid_devices_button", count=package.count, price=package.price, currency_symbol=settings.DEFAULT_CURRENCY_SYMBOL),
text=_(
"buy_hwid_devices_button",
count=package.count,
price=package.price,
currency_symbol=settings.DEFAULT_CURRENCY_SYMBOL,
),
callback_data=f"hwid_devices:package:{tariff.key}:{package.count}",
)
)
builder.row(InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data=back_callback))
builder.row(
InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data=back_callback)
)
return builder.as_markup()
def get_payment_method_keyboard(months: int, price: float,
stars_price: Optional[int],
currency_symbol_val: str, lang: str,
i18n_instance, settings: Settings, sale_mode: str = "subscription") -> InlineKeyboardMarkup:
def get_payment_method_keyboard(
months: int,
price: float,
stars_price: Optional[int],
currency_symbol_val: str,
lang: str,
i18n_instance,
settings: Settings,
sale_mode: str = "subscription",
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
def _format_value(val: float) -> str:
return str(int(val)) if float(val).is_integer() else f"{val:g}"
value_str = _format_value(months)
mode_suffix = f":{sale_mode}"
import logging as _kbd_logging
_kbd_logging.info(
"payment_method_keyboard build: order=%s | platega_enabled=%s sbp=%s crypto=%s",
settings.payment_methods_order,
@@ -299,7 +370,11 @@ def get_payment_method_keyboard(months: int, price: float,
text=_("pay_with_platega_sbp_button"),
callback_data=f"pay_platega_sbp:{value_str}:{price}{mode_suffix}",
)
elif method == "platega_crypto" and settings.PLATEGA_ENABLED and settings.PLATEGA_CRYPTO_ENABLED:
elif (
method == "platega_crypto"
and settings.PLATEGA_ENABLED
and settings.PLATEGA_CRYPTO_ENABLED
):
builder.button(
text=_("pay_with_platega_crypto_button"),
callback_data=f"pay_platega_crypto:{value_str}:{price}{mode_suffix}",
@@ -319,26 +394,27 @@ def get_payment_method_keyboard(months: int, price: float,
text=_("pay_with_cryptopay_button"),
callback_data=f"pay_crypto:{value_str}:{price}{mode_suffix}",
)
builder.button(text=_(key="cancel_button"),
callback_data="main_action:subscribe")
builder.button(text=_(key="cancel_button"), callback_data="main_action:subscribe")
builder.adjust(1)
return builder.as_markup()
def get_payment_url_keyboard(payment_url: str,
lang: str,
i18n_instance,
back_callback: Optional[str] = None,
back_text_key: str = "back_to_main_menu_button"
) -> InlineKeyboardMarkup:
def get_payment_url_keyboard(
payment_url: str,
lang: str,
i18n_instance,
back_callback: Optional[str] = None,
back_text_key: str = "back_to_main_menu_button",
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
builder.button(text=_(key="pay_button"), url=payment_url)
if back_callback:
builder.button(text=_(key=back_text_key), callback_data=back_callback)
else:
builder.button(text=_(key="back_to_main_menu_button"),
callback_data="main_action:back_to_main")
builder.button(
text=_(key="back_to_main_menu_button"), callback_data="main_action:back_to_main"
)
builder.adjust(1)
return builder.as_markup()
@@ -355,8 +431,10 @@ def get_yk_autopay_choice_keyboard(
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
price_str = str(price)
def _format_value(val: float) -> str:
return str(int(val)) if float(val).is_integer() else f"{val:g}"
value_str = _format_value(months)
suffix = f":{sale_mode}"
if has_saved_cards:
@@ -398,8 +476,10 @@ def get_yk_saved_cards_keyboard(
start = page * per_page
end = min(total, start + per_page)
price_str = str(price)
def _format_value(val: float) -> str:
return str(int(val)) if float(val).is_integer() else f"{val:g}"
value_str = _format_value(months)
suffix = f":{sale_mode}"
@@ -416,14 +496,14 @@ def get_yk_saved_cards_keyboard(
nav_buttons.append(
InlineKeyboardButton(
text="⬅️",
callback_data=f"pay_yk_saved_list:{value_str}:{price_str}:{page-1}{suffix}",
callback_data=f"pay_yk_saved_list:{value_str}:{price_str}:{page - 1}{suffix}",
)
)
if end < total:
nav_buttons.append(
InlineKeyboardButton(
text="➡️",
callback_data=f"pay_yk_saved_list:{value_str}:{price_str}:{page+1}{suffix}",
callback_data=f"pay_yk_saved_list:{value_str}:{price_str}:{page + 1}{suffix}",
)
)
if nav_buttons:
@@ -444,43 +524,43 @@ def get_yk_saved_cards_keyboard(
return builder.as_markup()
def get_referral_link_keyboard(lang: str,
i18n_instance,
back_callback: str = "main_action:back_to_main") -> InlineKeyboardMarkup:
def get_referral_link_keyboard(
lang: str, i18n_instance, back_callback: str = "main_action:back_to_main"
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
builder.button(text=_(key="referral_share_message_button"),
callback_data="referral_action:share_message")
builder.button(text=_(key="back_to_main_menu_button"),
callback_data=back_callback)
builder.button(
text=_(key="referral_share_message_button"), callback_data="referral_action:share_message"
)
builder.button(text=_(key="back_to_main_menu_button"), callback_data=back_callback)
builder.adjust(1)
return builder.as_markup()
def get_back_to_main_menu_markup(lang: str,
i18n_instance,
callback_data: Optional[str] = None) -> InlineKeyboardMarkup:
def get_back_to_main_menu_markup(
lang: str, i18n_instance, callback_data: Optional[str] = None
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
if callback_data:
builder.button(text=_(key="back_to_main_menu_button"),
callback_data=callback_data)
builder.button(text=_(key="back_to_main_menu_button"), callback_data=callback_data)
else:
builder.button(text=_(key="back_to_main_menu_button"),
callback_data="main_action:back_to_main")
builder.button(
text=_(key="back_to_main_menu_button"), callback_data="main_action:back_to_main"
)
return builder.as_markup()
def get_subscribe_only_markup(lang: str, i18n_instance) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
builder.button(text=_(key="menu_subscribe_inline"),
callback_data="main_action:subscribe")
builder.button(text=_(key="menu_subscribe_inline"), callback_data="main_action:subscribe")
return builder.as_markup()
def get_user_banned_keyboard(support_link: Optional[str], lang: str,
i18n_instance) -> Optional[InlineKeyboardMarkup]:
def get_user_banned_keyboard(
support_link: Optional[str], lang: str, i18n_instance
) -> Optional[InlineKeyboardMarkup]:
if not support_link:
return None
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
@@ -490,10 +570,8 @@ def get_user_banned_keyboard(support_link: Optional[str], lang: str,
def get_channel_subscription_keyboard(
lang: str,
i18n_instance,
channel_link: Optional[str],
include_check_button: bool = True) -> Optional[InlineKeyboardMarkup]:
lang: str, i18n_instance, channel_link: Optional[str], include_check_button: bool = True
) -> Optional[InlineKeyboardMarkup]:
"""
Return keyboard with buttons to open the required channel and trigger a subscription re-check.
"""
@@ -527,21 +605,20 @@ def get_channel_subscription_keyboard(
def get_connect_and_main_keyboard(
lang: str,
i18n_instance,
settings: Settings,
config_link: Optional[str],
connect_button_url: Optional[str] = None,
preserve_message: bool = False) -> InlineKeyboardMarkup:
lang: str,
i18n_instance,
settings: Settings,
config_link: Optional[str],
connect_button_url: Optional[str] = None,
preserve_message: bool = False,
) -> InlineKeyboardMarkup:
"""Keyboard with a connect button and a back to main menu button."""
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
button_target = connect_button_url or config_link
if button_target:
builder.row(
InlineKeyboardButton(text=_("connect_button"), url=button_target)
)
builder.row(InlineKeyboardButton(text=_("connect_button"), url=button_target))
elif settings.SUBSCRIPTION_MINI_APP_URL:
builder.row(
InlineKeyboardButton(
@@ -557,7 +634,9 @@ def get_connect_and_main_keyboard(
)
)
back_callback = "main_action:back_to_main_keep" if preserve_message else "main_action:back_to_main"
back_callback = (
"main_action:back_to_main_keep" if preserve_message else "main_action:back_to_main"
)
builder.row(
InlineKeyboardButton(
text=_("back_to_main_menu_button"),
@@ -568,7 +647,9 @@ def get_connect_and_main_keyboard(
return builder.as_markup()
def get_payment_methods_manage_keyboard(lang: str, i18n_instance, has_card: bool) -> InlineKeyboardMarkup:
def get_payment_methods_manage_keyboard(
lang: str, i18n_instance, has_card: bool
) -> InlineKeyboardMarkup:
"""Deprecated in favor of get_payment_methods_list_keyboard. Kept for backward compatibility."""
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
@@ -576,7 +657,9 @@ def get_payment_methods_manage_keyboard(lang: str, i18n_instance, has_card: bool
InlineKeyboardButton(text=_(key="payment_method_bind_button"), callback_data="pm:bind")
)
builder.row(
InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data="main_action:back_to_main")
InlineKeyboardButton(
text=_(key="back_to_main_menu_button"), callback_data="main_action:back_to_main"
)
)
return builder.as_markup()
@@ -599,26 +682,32 @@ def get_payment_methods_list_keyboard(
start = page * per_page
end = start + per_page
for pm_id, title in cards[start:end]:
builder.row(
InlineKeyboardButton(text=title, callback_data=f"pm:view:{pm_id}")
)
builder.row(InlineKeyboardButton(text=title, callback_data=f"pm:view:{pm_id}"))
# Pagination controls if needed
nav_buttons: List[InlineKeyboardButton] = []
if start > 0:
nav_buttons.append(InlineKeyboardButton(text="⬅️", callback_data=f"pm:list:{page-1}"))
nav_buttons.append(InlineKeyboardButton(text="⬅️", callback_data=f"pm:list:{page - 1}"))
if end < total:
nav_buttons.append(InlineKeyboardButton(text="➡️", callback_data=f"pm:list:{page+1}"))
nav_buttons.append(InlineKeyboardButton(text="➡️", callback_data=f"pm:list:{page + 1}"))
if nav_buttons:
builder.row(*nav_buttons)
# Bind new card and back
builder.row(InlineKeyboardButton(text=_(key="payment_method_bind_button"), callback_data="pm:bind"))
builder.row(InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data="main_action:back_to_main"))
builder.row(
InlineKeyboardButton(text=_(key="payment_method_bind_button"), callback_data="pm:bind")
)
builder.row(
InlineKeyboardButton(
text=_(key="back_to_main_menu_button"), callback_data="main_action:back_to_main"
)
)
return builder.as_markup()
def get_payment_method_delete_confirm_keyboard(pm_id: str, lang: str, i18n_instance) -> InlineKeyboardMarkup:
def get_payment_method_delete_confirm_keyboard(
pm_id: str, lang: str, i18n_instance
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
builder.row(
@@ -628,14 +717,20 @@ def get_payment_method_delete_confirm_keyboard(pm_id: str, lang: str, i18n_insta
return builder.as_markup()
def get_payment_method_details_keyboard(pm_id: str, lang: str, i18n_instance) -> InlineKeyboardMarkup:
def get_payment_method_details_keyboard(
pm_id: str, lang: str, i18n_instance
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
builder.row(
InlineKeyboardButton(text=_(key="payment_method_tx_history_title"), callback_data=f"pm:history:{pm_id}")
InlineKeyboardButton(
text=_(key="payment_method_tx_history_title"), callback_data=f"pm:history:{pm_id}"
)
)
builder.row(
InlineKeyboardButton(text=_(key="payment_method_delete_button"), callback_data=f"pm:delete_confirm:{pm_id}")
InlineKeyboardButton(
text=_(key="payment_method_delete_button"), callback_data=f"pm:delete_confirm:{pm_id}"
)
)
builder.row(
InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data="pm:list:0")
@@ -655,15 +750,23 @@ def get_bind_url_keyboard(bind_url: str, lang: str, i18n_instance) -> InlineKeyb
def get_back_to_payment_methods_keyboard(lang: str, i18n_instance) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
builder.row(InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data="pm:list:0"))
builder.row(
InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data="pm:list:0")
)
return builder.as_markup()
def get_back_to_payment_method_details_keyboard(pm_id: str, lang: str, i18n_instance) -> InlineKeyboardMarkup:
def get_back_to_payment_method_details_keyboard(
pm_id: str, lang: str, i18n_instance
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
# Back one step: return to specific payment method details
builder.row(InlineKeyboardButton(text=_(key="back_to_main_menu_button"), callback_data=f"pm:view:{pm_id}"))
builder.row(
InlineKeyboardButton(
text=_(key="back_to_main_menu_button"), callback_data=f"pm:view:{pm_id}"
)
)
return builder.as_markup()
@@ -671,19 +774,28 @@ def get_autorenew_cancel_keyboard(lang: str, i18n_instance) -> InlineKeyboardMar
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
builder.row(
InlineKeyboardButton(text=_(key="autorenew_disable_button"), callback_data="autorenew:cancel")
InlineKeyboardButton(
text=_(key="autorenew_disable_button"), callback_data="autorenew:cancel"
)
)
builder.row(
InlineKeyboardButton(text=_(key="menu_my_subscription_inline"), callback_data="main_action:my_subscription")
InlineKeyboardButton(
text=_(key="menu_my_subscription_inline"), callback_data="main_action:my_subscription"
)
)
return builder.as_markup()
def get_autorenew_confirm_keyboard(enable: bool, sub_id: int, lang: str, i18n_instance) -> InlineKeyboardMarkup:
def get_autorenew_confirm_keyboard(
enable: bool, sub_id: int, lang: str, i18n_instance
) -> InlineKeyboardMarkup:
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
builder = InlineKeyboardBuilder()
builder.row(
InlineKeyboardButton(text=_(key="yes_button"), callback_data=f"autorenew:confirm:{sub_id}:{1 if enable else 0}"),
InlineKeyboardButton(
text=_(key="yes_button"),
callback_data=f"autorenew:confirm:{sub_id}:{1 if enable else 0}",
),
InlineKeyboardButton(text=_(key="no_button"), callback_data="main_action:my_subscription"),
)
return builder.as_markup()