Code Refactoring
This commit is contained in:
@@ -1,82 +1,172 @@
|
||||
from aiogram .utils .keyboard import InlineKeyboardBuilder ,InlineKeyboardButton
|
||||
from aiogram .types import InlineKeyboardMarkup ,WebAppInfo
|
||||
from typing import Optional ,List ,Any
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder, InlineKeyboardButton
|
||||
from aiogram.types import InlineKeyboardMarkup, WebAppInfo
|
||||
from typing import Optional, List, Any
|
||||
import math
|
||||
|
||||
from config .settings import Settings
|
||||
from config.settings import Settings
|
||||
|
||||
def get_admin_panel_keyboard (i18n_instance ,lang :str ,settings :Settings )->InlineKeyboardMarkup :
|
||||
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs )
|
||||
builder =InlineKeyboardBuilder ()
|
||||
builder .button (text =_ (key ="admin_stats_button"),callback_data ="admin_action:stats")
|
||||
builder .button (text =_ (key ="admin_broadcast_button"),callback_data ="admin_action:broadcast")
|
||||
builder .button (text =_ (key ="admin_create_promo_button"),callback_data ="admin_action:create_promo")
|
||||
builder .button (text =_ (key ="admin_view_promos_button"),callback_data ="admin_action:view_promos")
|
||||
builder .button (text =_ (key ="admin_ban_user_button"),callback_data ="admin_action:ban_user_prompt")
|
||||
builder .button (text =_ (key ="admin_unban_user_button"),callback_data ="admin_action:unban_user_prompt")
|
||||
builder .button (text =_ (key ="admin_view_banned_users_button"),callback_data ="admin_action:view_banned:0")
|
||||
builder .button (text =_ (key ="admin_view_logs_menu_button"),callback_data ="admin_action:view_logs_menu")
|
||||
builder .button (text =_ (key ="admin_sync_panel_button"),callback_data ="admin_action:sync_panel")
|
||||
builder .adjust (2 ,2 ,2 ,2 ,1 )
|
||||
return builder .as_markup ()
|
||||
|
||||
def get_logs_menu_keyboard (i18n_instance ,lang :str )->InlineKeyboardMarkup :
|
||||
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs )
|
||||
builder =InlineKeyboardBuilder ()
|
||||
builder .button (text =_ (key ="admin_view_all_logs_button"),callback_data ="admin_logs:view_all:0")
|
||||
builder .button (text =_ (key ="admin_view_user_logs_prompt_button"),callback_data ="admin_logs:prompt_user")
|
||||
builder .row (InlineKeyboardButton (text =_ (key ="back_to_admin_panel_button"),callback_data ="admin_action:main"))
|
||||
return builder .as_markup ()
|
||||
def get_admin_panel_keyboard(i18n_instance, lang: str,
|
||||
settings: Settings) -> InlineKeyboardMarkup:
|
||||
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.button(text=_(key="admin_stats_button"),
|
||||
callback_data="admin_action:stats")
|
||||
builder.button(text=_(key="admin_broadcast_button"),
|
||||
callback_data="admin_action:broadcast")
|
||||
builder.button(text=_(key="admin_create_promo_button"),
|
||||
callback_data="admin_action:create_promo")
|
||||
builder.button(text=_(key="admin_view_promos_button"),
|
||||
callback_data="admin_action:view_promos")
|
||||
builder.button(text=_(key="admin_ban_user_button"),
|
||||
callback_data="admin_action:ban_user_prompt")
|
||||
builder.button(text=_(key="admin_unban_user_button"),
|
||||
callback_data="admin_action:unban_user_prompt")
|
||||
builder.button(text=_(key="admin_view_banned_users_button"),
|
||||
callback_data="admin_action:view_banned:0")
|
||||
builder.button(text=_(key="admin_view_logs_menu_button"),
|
||||
callback_data="admin_action:view_logs_menu")
|
||||
builder.button(text=_(key="admin_sync_panel_button"),
|
||||
callback_data="admin_action:sync_panel")
|
||||
builder.adjust(2, 2, 2, 2, 1)
|
||||
return builder.as_markup()
|
||||
|
||||
def get_logs_pagination_keyboard (current_page :int ,total_pages :int ,base_callback_data :str ,i18n_instance ,lang :str ,back_to_logs_menu :bool =False )->InlineKeyboardMarkup :
|
||||
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs )
|
||||
builder =InlineKeyboardBuilder ()
|
||||
row_buttons =[]
|
||||
if current_page >0 :
|
||||
row_buttons .append (InlineKeyboardButton (text ="⬅️ "+_ ("prev_page_button",default ="Prev"),callback_data =f"{base_callback_data}:{current_page - 1}"))
|
||||
if current_page <total_pages -1 :
|
||||
row_buttons .append (InlineKeyboardButton (text =_ ("next_page_button",default ="Next")+" ➡️",callback_data =f"{base_callback_data}:{current_page + 1}"))
|
||||
|
||||
if row_buttons :builder .row (*row_buttons )
|
||||
def get_logs_menu_keyboard(i18n_instance, lang: str) -> InlineKeyboardMarkup:
|
||||
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.button(text=_(key="admin_view_all_logs_button"),
|
||||
callback_data="admin_logs:view_all:0")
|
||||
builder.button(text=_(key="admin_view_user_logs_prompt_button"),
|
||||
callback_data="admin_logs:prompt_user")
|
||||
builder.row(
|
||||
InlineKeyboardButton(text=_(key="back_to_admin_panel_button"),
|
||||
callback_data="admin_action:main"))
|
||||
return builder.as_markup()
|
||||
|
||||
if back_to_logs_menu :
|
||||
builder .row (InlineKeyboardButton (text =_ (key ="admin_logs_menu_title"),callback_data ="admin_action:view_logs_menu"))
|
||||
else :
|
||||
builder .row (InlineKeyboardButton (text =_ (key ="back_to_admin_panel_button"),callback_data ="admin_action:main"))
|
||||
return builder .as_markup ()
|
||||
|
||||
def get_banned_users_keyboard (users :List [Any ],current_page :int ,total_users_banned :int ,i18n_instance ,lang :str ,settings :Settings )->InlineKeyboardMarkup :
|
||||
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs );builder =InlineKeyboardBuilder ()
|
||||
page_size =settings .LOGS_PAGE_SIZE
|
||||
total_pages =math .ceil (total_users_banned /page_size )if page_size >0 else 1
|
||||
if total_users_banned ==0 :total_pages =1
|
||||
for user_row in users :
|
||||
user_display =user_row ['first_name']or f"ID: {user_row['user_id']}";
|
||||
if user_row ['username']:user_display +=f" (@{user_row['username']})"
|
||||
else :user_display =f"ID: {user_row['user_id']}"if not user_row ['first_name']else user_display
|
||||
builder .button (text =user_display ,callback_data =f"admin_user_card:{user_row['user_id']}:{current_page}")
|
||||
pagination_row =[]
|
||||
if current_page >0 :pagination_row .append (InlineKeyboardButton (text ="⬅️ "+_ ("prev_page_button",default ="Prev"),callback_data =f"admin_action:view_banned:{current_page - 1}"))
|
||||
if (current_page +1 )*page_size <total_users_banned :pagination_row .append (InlineKeyboardButton (text =_ ("next_page_button",default ="Next")+" ➡️",callback_data =f"admin_action:view_banned:{current_page + 1}"))
|
||||
if pagination_row :builder .row (*pagination_row )
|
||||
builder .row (InlineKeyboardButton (text =_ (key ="back_to_admin_panel_button"),callback_data ="admin_action:main"));builder .adjust (1 );return builder .as_markup ()
|
||||
def get_logs_pagination_keyboard(
|
||||
current_page: int,
|
||||
total_pages: int,
|
||||
base_callback_data: str,
|
||||
i18n_instance,
|
||||
lang: str,
|
||||
back_to_logs_menu: bool = False) -> InlineKeyboardMarkup:
|
||||
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
|
||||
builder = InlineKeyboardBuilder()
|
||||
row_buttons = []
|
||||
if current_page > 0:
|
||||
row_buttons.append(
|
||||
InlineKeyboardButton(
|
||||
text="⬅️ " + _("prev_page_button", default="Prev"),
|
||||
callback_data=f"{base_callback_data}:{current_page - 1}"))
|
||||
if current_page < total_pages - 1:
|
||||
row_buttons.append(
|
||||
InlineKeyboardButton(
|
||||
text=_("next_page_button", default="Next") + " ➡️",
|
||||
callback_data=f"{base_callback_data}:{current_page + 1}"))
|
||||
|
||||
def get_user_card_keyboard (user_id :int ,is_banned :bool ,i18n_instance ,lang :str ,banned_list_page :int =0 )->InlineKeyboardMarkup :
|
||||
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs );builder =InlineKeyboardBuilder ()
|
||||
if is_banned :builder .button (text =_ (key ="user_card_unban_button"),callback_data =f"admin_unban_confirm:{user_id}:{banned_list_page}")
|
||||
else :builder .button (text =_ (key ="user_card_ban_button"),callback_data =f"admin_ban_confirm:{user_id}:{banned_list_page}")
|
||||
builder .button (text =_ (key ="user_card_back_to_banned_list_button"),callback_data =f"admin_action:view_banned:{banned_list_page}")
|
||||
builder .button (text =_ (key ="back_to_admin_panel_button"),callback_data ="admin_action:main");builder .adjust (1 );return builder .as_markup ()
|
||||
if row_buttons: builder.row(*row_buttons)
|
||||
|
||||
def get_confirmation_keyboard (yes_callback_data :str ,no_callback_data :str ,i18n_instance ,lang :str )->InlineKeyboardMarkup :
|
||||
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs );builder =InlineKeyboardBuilder ()
|
||||
builder .button (text =_ (key ="yes_button"),callback_data =yes_callback_data );builder .button (text =_ (key ="no_button"),callback_data =no_callback_data );return builder .as_markup ()
|
||||
if back_to_logs_menu:
|
||||
builder.row(
|
||||
InlineKeyboardButton(text=_(key="admin_logs_menu_title"),
|
||||
callback_data="admin_action:view_logs_menu"))
|
||||
else:
|
||||
builder.row(
|
||||
InlineKeyboardButton(text=_(key="back_to_admin_panel_button"),
|
||||
callback_data="admin_action:main"))
|
||||
return builder.as_markup()
|
||||
|
||||
def get_broadcast_confirmation_keyboard (lang :str ,i18n_instance )->InlineKeyboardMarkup :
|
||||
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs );builder =InlineKeyboardBuilder ()
|
||||
builder .button (text =_ (key ="confirm_broadcast_send_button"),callback_data ="broadcast_final_action:send")
|
||||
builder .button (text =_ (key ="cancel_broadcast_button"),callback_data ="broadcast_final_action:cancel");builder .adjust (2 );return builder .as_markup ()
|
||||
|
||||
def get_back_to_admin_panel_keyboard (lang :str ,i18n_instance )->InlineKeyboardMarkup :
|
||||
_ =lambda key ,**kwargs :i18n_instance .gettext (lang ,key ,**kwargs );builder =InlineKeyboardBuilder ()
|
||||
builder .button (text =_ (key ="back_to_admin_panel_button"),callback_data ="admin_action:main");return builder .as_markup ()
|
||||
def get_banned_users_keyboard(users: List[Any], current_page: int,
|
||||
total_users_banned: int, i18n_instance,
|
||||
lang: str,
|
||||
settings: Settings) -> InlineKeyboardMarkup:
|
||||
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
|
||||
builder = InlineKeyboardBuilder()
|
||||
page_size = settings.LOGS_PAGE_SIZE
|
||||
total_pages = math.ceil(total_users_banned /
|
||||
page_size) if page_size > 0 else 1
|
||||
if total_users_banned == 0: total_pages = 1
|
||||
for user_row in users:
|
||||
user_display = user_row['first_name'] or f"ID: {user_row['user_id']}"
|
||||
if user_row['username']: user_display += f" (@{user_row['username']})"
|
||||
else:
|
||||
user_display = f"ID: {user_row['user_id']}" if not user_row[
|
||||
'first_name'] else user_display
|
||||
builder.button(text=user_display,
|
||||
callback_data=
|
||||
f"admin_user_card:{user_row['user_id']}:{current_page}")
|
||||
pagination_row = []
|
||||
if current_page > 0:
|
||||
pagination_row.append(
|
||||
InlineKeyboardButton(
|
||||
text="⬅️ " + _("prev_page_button", default="Prev"),
|
||||
callback_data=f"admin_action:view_banned:{current_page - 1}"))
|
||||
if (current_page + 1) * page_size < total_users_banned:
|
||||
pagination_row.append(
|
||||
InlineKeyboardButton(
|
||||
text=_("next_page_button", default="Next") + " ➡️",
|
||||
callback_data=f"admin_action:view_banned:{current_page + 1}"))
|
||||
if pagination_row: builder.row(*pagination_row)
|
||||
builder.row(
|
||||
InlineKeyboardButton(text=_(key="back_to_admin_panel_button"),
|
||||
callback_data="admin_action:main"))
|
||||
builder.adjust(1)
|
||||
return builder.as_markup()
|
||||
|
||||
|
||||
def get_user_card_keyboard(user_id: int,
|
||||
is_banned: bool,
|
||||
i18n_instance,
|
||||
lang: str,
|
||||
banned_list_page: int = 0) -> InlineKeyboardMarkup:
|
||||
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
|
||||
builder = InlineKeyboardBuilder()
|
||||
if is_banned:
|
||||
builder.button(
|
||||
text=_(key="user_card_unban_button"),
|
||||
callback_data=f"admin_unban_confirm:{user_id}:{banned_list_page}")
|
||||
else:
|
||||
builder.button(
|
||||
text=_(key="user_card_ban_button"),
|
||||
callback_data=f"admin_ban_confirm:{user_id}:{banned_list_page}")
|
||||
builder.button(
|
||||
text=_(key="user_card_back_to_banned_list_button"),
|
||||
callback_data=f"admin_action:view_banned:{banned_list_page}")
|
||||
builder.button(text=_(key="back_to_admin_panel_button"),
|
||||
callback_data="admin_action:main")
|
||||
builder.adjust(1)
|
||||
return builder.as_markup()
|
||||
|
||||
|
||||
def get_confirmation_keyboard(yes_callback_data: str, no_callback_data: str,
|
||||
i18n_instance,
|
||||
lang: str) -> InlineKeyboardMarkup:
|
||||
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.button(text=_(key="yes_button"), callback_data=yes_callback_data)
|
||||
builder.button(text=_(key="no_button"), callback_data=no_callback_data)
|
||||
return builder.as_markup()
|
||||
|
||||
|
||||
def get_broadcast_confirmation_keyboard(lang: str,
|
||||
i18n_instance) -> InlineKeyboardMarkup:
|
||||
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.button(text=_(key="confirm_broadcast_send_button"),
|
||||
callback_data="broadcast_final_action:send")
|
||||
builder.button(text=_(key="cancel_broadcast_button"),
|
||||
callback_data="broadcast_final_action:cancel")
|
||||
builder.adjust(2)
|
||||
return builder.as_markup()
|
||||
|
||||
|
||||
def get_back_to_admin_panel_keyboard(lang: str,
|
||||
i18n_instance) -> InlineKeyboardMarkup:
|
||||
_ = lambda key, **kwargs: i18n_instance.gettext(lang, key, **kwargs)
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.button(text=_(key="back_to_admin_panel_button"),
|
||||
callback_data="admin_action:main")
|
||||
return builder.as_markup()
|
||||
|
||||
@@ -1,119 +1,159 @@
|
||||
from aiogram .utils .keyboard import InlineKeyboardBuilder ,InlineKeyboardButton
|
||||
from aiogram .types import InlineKeyboardMarkup
|
||||
from typing import Dict ,Optional ,List
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder, InlineKeyboardButton
|
||||
from aiogram.types import InlineKeyboardMarkup
|
||||
from typing import Dict, Optional, List
|
||||
|
||||
from config .settings import Settings
|
||||
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 ()
|
||||
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()
|
||||
|
||||
|
||||
if show_trial_button and settings .TRIAL_ENABLED :
|
||||
builder .row (InlineKeyboardButton (text =_ (key ="menu_activate_trial_button"),callback_data ="main_action:request_trial"))
|
||||
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()
|
||||
|
||||
|
||||
builder .row (InlineKeyboardButton (text =_ (key ="menu_subscribe_inline"),callback_data ="main_action:subscribe"))
|
||||
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()
|
||||
|
||||
|
||||
builder .row (InlineKeyboardButton (text =_ (key ="menu_my_subscription_inline"),callback_data ="main_action:my_subscription"))
|
||||
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()
|
||||
|
||||
|
||||
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 )
|
||||
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()
|
||||
|
||||
|
||||
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 )
|
||||
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()
|
||||
|
||||
|
||||
if settings .SUPPORT_LINK :
|
||||
builder .row (InlineKeyboardButton (text =_ (key ="menu_support_button"),url =settings .SUPPORT_LINK ))
|
||||
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()
|
||||
|
||||
|
||||
|
||||
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 :
|
||||
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 ()
|
||||
_ = 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()
|
||||
|
||||
Reference in New Issue
Block a user