Files
remnawave-minishop/bot/keyboards/inline/user_keyboards.py
T
2025-05-14 08:11:59 +00:00

119 lines
5.8 KiB
Python

from aiogram .utils .keyboard import InlineKeyboardBuilder ,InlineKeyboardButton
from aiogram .types import InlineKeyboardMarkup
from typing import Dict ,Optional ,List
from config .settings import Settings
def get_main_menu_inline_keyboard (
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"))
builder .row (InlineKeyboardButton (text =_ (key ="menu_subscribe_inline"),callback_data ="main_action:subscribe"))
builder .row (InlineKeyboardButton (text =_ (key ="menu_my_subscription_inline"),callback_data ="main_action:my_subscription"))
referral_button =InlineKeyboardButton (text =_ (key ="menu_referral_inline"),callback_data ="main_action:referral")
promo_button =InlineKeyboardButton (text =_ (key ="menu_apply_promo_button"),callback_data ="main_action:apply_promo")
builder .row (referral_button ,promo_button )
language_button =InlineKeyboardButton (text =_ (key ="menu_language_settings_inline"),callback_data ="main_action: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 ))
if status_button_list :
builder .row (language_button ,*status_button_list )
else :
builder .row (language_button )
if settings .SUPPORT_LINK :
builder .row (InlineKeyboardButton (text =_ (key ="menu_support_button"),url =settings .SUPPORT_LINK ))
return builder .as_markup ()
def get_language_selection_keyboard (i18n_instance ,current_lang :str )->InlineKeyboardMarkup :
_ =lambda key ,**kwargs :i18n_instance .gettext (current_lang ,key ,**kwargs )
builder =InlineKeyboardBuilder ()
builder .button (text =f"🇬🇧 English {'✅' if current_lang == 'en' else ''}",callback_data ="set_lang_en")
builder .button (text =f"🇷🇺 Русский {'✅' if current_lang == 'ru' else ''}",callback_data ="set_lang_ru")
builder .button (text =_ (key ="back_to_main_menu_button"),callback_data ="main_action:back_to_main")
builder .adjust (1 )
return builder .as_markup ()
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 .adjust (1 )
return builder .as_markup ()
def get_subscription_options_keyboard (subscription_options :Dict [int ,Optional [int ]],currency_symbol_val :str ,lang :str ,i18n_instance )->InlineKeyboardMarkup :
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs )
builder =InlineKeyboardBuilder ()
if subscription_options :
for months ,price in subscription_options .items ():
if price is not None :
button_text =_ ("subscribe_for_months_button",months =months ,price =price ,currency_symbol =currency_symbol_val )
builder .button (text =button_text ,callback_data =f"subscribe_period:{months}")
builder .adjust (1 )
builder .row (InlineKeyboardButton (text =_ (key ="back_to_main_menu_button"),callback_data ="main_action:back_to_main"))
return builder .as_markup ()
def get_confirm_subscription_keyboard (months :int ,price :float ,currency_symbol_val :str ,lang :str ,i18n_instance )->InlineKeyboardMarkup :
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs )
builder =InlineKeyboardBuilder ()
confirm_text =_ (key ="confirm_payment_button",price =price ,currency_symbol =currency_symbol_val )
builder .button (text =confirm_text ,callback_data =f"confirm_sub:{months}:{price}")
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 )->InlineKeyboardMarkup :
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs )
builder =InlineKeyboardBuilder ()
builder .button (text =_ (key ="pay_button"),url =payment_url )
builder .button (text =_ (key ="back_to_main_menu_button"),callback_data ="main_action:back_to_main")
builder .adjust (1 )
return builder .as_markup ()
def get_referral_link_keyboard (lang :str ,i18n_instance )->InlineKeyboardMarkup :
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs )
builder =InlineKeyboardBuilder ()
builder .button (text =_ (key ="back_to_main_menu_button"),callback_data ="main_action:back_to_main")
return builder .as_markup ()
def get_back_to_main_menu_markup (lang :str ,i18n_instance )->InlineKeyboardMarkup :
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs )
builder =InlineKeyboardBuilder ()
builder .button (text =_ (key ="back_to_main_menu_button"),callback_data ="main_action:back_to_main")
return builder .as_markup ()
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 )
builder =InlineKeyboardBuilder ()
builder .button (text =_ (key ="contact_support_button"),url =support_link )
return builder .as_markup ()