Source code for buttons
"""
Module of the create button for the menu and Bot in general.
"""
from aiogram.utils.keyboard import InlineKeyboardBuilder
from aiogram import types
from manager_cw_bot_api.handler_db_sub_operations import HandlerDB
from manager_cw_bot_api.handler_email_sender import SenderEmail
[docs]class Buttons:
"""
Class for get the buttons in chats.
"""
[docs] @staticmethod
async def get_email() -> InlineKeyboardBuilder:
"""
Builder-button (Inline) of the help.
:return: Builder-buttons.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Go", url="t.me/aleksandr_work")
builder.add(var1)
return builder
[docs] @staticmethod
async def get_add_new_email() -> InlineKeyboardBuilder:
"""
Get menu for add a new email for user / admin.
:return: builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ Add ๐ง",
callback_data="add_new_email"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ Cancel",
callback_data="back_on_main"
)
builder.row(var1).row(var2)
return builder
[docs] @staticmethod
async def get_add_new_email_try_again() -> InlineKeyboardBuilder:
"""
Get menu for add a new email for user / admin again.
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Try again ๐ง",
callback_data="add_new_email"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ Cancel",
callback_data="back_on_main"
)
builder.row(var1).row(var2)
return builder
[docs] @staticmethod
async def get_add_new_email_or_check_ver_code_try_again() -> InlineKeyboardBuilder:
"""
Get menu for add a new email for user / admin again or again check the ver. code.
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Try again | VERIFY CODE #๏ธโฃ",
callback_data="check_verify_code_again"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Try again | Add EMail ๐ง",
callback_data="add_new_email"
)
var3: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ Cancel",
callback_data="back_on_main"
)
builder.row(var1).row(var2).row(var3)
return builder
[docs] @staticmethod
async def get_var_giga_version(
message: types.Message | types.CallbackQuery
) -> InlineKeyboardBuilder:
"""
Builder-button (Inline) of the choose version of the GigaChatAI
for the user.
:param message: Message.
:return: Builder-buttons.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
result: bool | tuple = await HandlerDB.check_subscription(message)
if result[0] is True:
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ก GigaChatLight", callback_data="gigachat_version_light"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โก GigaChatPRO", callback_data="gigachat_version_pro"
)
var3: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Back to AI-Menu", callback_data="ai_two_in_one_main_menu"
)
var4: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Main", callback_data="back_on_main"
)
builder.row(var1).row(var2).row(var3).row(var4)
elif result[0] is False:
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ก GigaChatLight", callback_data="gigachat_version_light"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โก GigaChatPRO", callback_data="get_or_lk_premium"
)
var3: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Back to AI-Menu", callback_data="ai_two_in_one_main_menu"
)
var4: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Main", callback_data="back_on_main"
)
builder.row(var1).row(var2).row(var3).row(var4)
return builder
[docs] @staticmethod
async def get_user_tickets(tg_id: int) -> tuple:
"""
Builder-button (Inline) of the Bot
for the user's history of "TICKETS".
:param tg_id: User's id -- tg_id.
:return: Tuple with data.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
response: tuple = tuple()
result: InlineKeyboardBuilder | tuple = await HandlerDB.get_ticket_data(tg_id, builder)
if type(result) is InlineKeyboardBuilder:
response = (False, "Not Found. Please, click on the '๐ Main' / '๐ TicketSystem' - "
"button.")
builder: InlineKeyboardBuilder = result
elif (type(result) is tuple) and result[0] is True:
response = (True, result[1], result[2])
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ
Allow",
callback_data="allow_send_email_ticket_data_user"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ No, just show available data",
callback_data="not_allow_send_email_ticket_data_user"
)
var3: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ฃ Answer to the admin",
callback_data="explore_answer_to_admin"
)
var4: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ TicketSystem",
callback_data="explore_user_tickets_menu"
)
var5: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Main",
callback_data="back_on_main"
)
builder.row(var1).row(var2).row(var3).row(var4).row(var5)
elif (type(result) is tuple) and result[0] is False:
response = (False, result[1])
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ฃ Answer to the admin",
callback_data="explore_answer_to_admin"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ TicketSystem",
callback_data="explore_user_tickets_menu"
)
var3: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Main",
callback_data="back_on_main"
)
builder.row(var1).row(var2).row(var3)
results: tuple = (response, builder)
return results
[docs] @staticmethod
async def get_users_tickets_for_admin() -> tuple:
"""
Builder-button (Inline) of the Bot
for the admin history of "TICKETS" of the users.
:return: tuple of the tickets and Builder-buttons.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
response: tuple = tuple()
result: tuple | InlineKeyboardBuilder = await HandlerDB.get_users_tickets_for_admin()
if type(result) is InlineKeyboardBuilder:
builder: InlineKeyboardBuilder = result
elif (type(result) is tuple) and result[0] is True:
response = (True, result[1], result[2])
elif (type(result) is tuple) and result[0] is False:
response = (False, result[1])
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ
Allow",
callback_data="allow_send_email_ticket_data_admin"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ No, just show available data",
callback_data="not_allow_send_email_ticket_data_admin"
)
var3: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Main",
callback_data="back_on_main"
)
builder.row(var1).row(var2).row(var3)
results: tuple = (response, builder)
return results
[docs] @staticmethod
async def sure_refund() -> InlineKeyboardBuilder:
"""
Get Builder-keyboard for 'sure' refund by admin.
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ
I'm sure", callback_data="refund"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ Cancel", callback_data="back_on_main"
)
builder.row(var1).row(var2)
return builder
[docs] @staticmethod
async def sure_refund_confirmation() -> InlineKeyboardBuilder:
"""
Get Builder-keyboard for 'sure' refund by admin | Confirmation.
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ
I'm sure 100%", callback_data="refund_confirmation"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ Cancel", callback_data="back_on_main"
)
builder.row(var1).row(var2)
return builder
[docs] @staticmethod
async def sure_emergency_refund_confirmation() -> InlineKeyboardBuilder:
"""
Get Builder-keyboard for 'sure' emergency refund by admin | Confirmation.
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ
Emergency Refund | I'm sure!", callback_data="emergency_refund_confirmation"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ Cancel", callback_data="back_on_main"
)
builder.row(var1).row(var2)
return builder
[docs] @staticmethod
async def sure_apply_promo() -> InlineKeyboardBuilder:
"""
Get Builder-keyboard for 'sure' apply a promo code by user.
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ
Yes, apply it. I'm sure 100%", callback_data="apply_promo"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ Cancel", callback_data="back_on_main"
)
builder.row(var1).row(var2)
return builder
[docs] @staticmethod
async def sure_add_new_promo() -> InlineKeyboardBuilder:
"""
Get Builder-keyboard for 'sure' add a promo code by ADMIN | Admin control.
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ
Yes, add! I'm sure.", callback_data="add_new_promo_confirmation"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ Cancel", callback_data="show_menu_promo_admin"
)
builder.row(var1).row(var2)
return builder
[docs] @staticmethod
async def sure_delete_promo() -> InlineKeyboardBuilder:
"""
Get Builder-keyboard for 'sure' delete a promo code by ADMIN | Admin control.
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ
Yes, delete! I'm sure 100%.", callback_data="delete_promo_confirmation"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ Cancel", callback_data="show_menu_promo_admin"
)
builder.row(var1).row(var2)
return builder
[docs] @staticmethod
async def try_again_add_new_promo_or_back_on_main() -> InlineKeyboardBuilder:
"""
Get Builder-keyboard for attempt add a new promo data or return in PROMO Menu.
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Try again", callback_data="try_again_add_new_promo"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Back", callback_data="show_menu_promo_admin"
)
var3: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Main", callback_data="back_on_main"
)
builder.row(var1).row(var2).row(var3)
return builder
[docs] @staticmethod
async def try_again_delete_promo_or_back_on_main() -> InlineKeyboardBuilder:
"""
Get Builder-keyboard for attempt delete a promo data or return in PROMO Menu.
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Try again", callback_data="try_again_delete_promo"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Back", callback_data="show_menu_promo_admin"
)
var3: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Main", callback_data="back_on_main"
)
builder.row(var1).row(var2).row(var3)
return builder
[docs] @staticmethod
async def generate_image() -> InlineKeyboardBuilder:
"""
Get Builder-keyboard for generate image by GigaChat | V3 | For premium-user.
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var1: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ
I'm sure", callback_data="generate"
)
var2: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="โ Cancel", callback_data="back_on_main"
)
builder.row(var1).row(var2)
return builder
[docs] @staticmethod
async def back_on_main() -> InlineKeyboardBuilder:
"""
Get Builder-keyboard for return in main menu (on main).
:return: Builder.
"""
builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
var: types.InlineKeyboardButton = types.InlineKeyboardButton(
text="๐ Main", callback_data="back_on_main"
)
builder.row(var)
return builder