148 lines
4.2 KiB
Python
148 lines
4.2 KiB
Python
from aiogram.filters.callback_data import CallbackData
|
|
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
|
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
|
|
|
from keyboards.admin.panel_kb import build_admin_back_btn
|
|
|
|
|
|
class AdminUserEditorCallback(CallbackData, prefix="admin_users"):
|
|
action: str
|
|
tg_id: int
|
|
data: str | None = None
|
|
|
|
|
|
def build_user_edit_kb(tg_id: int, key_records: list) -> InlineKeyboardMarkup:
|
|
builder = InlineKeyboardBuilder()
|
|
|
|
for record in key_records:
|
|
email = record["email"]
|
|
builder.button(
|
|
text=f"🔑 {email}",
|
|
callback_data=AdminUserEditorCallback(
|
|
action="users_key_edit",
|
|
tg_id=tg_id,
|
|
data=str(email)
|
|
).pack()
|
|
)
|
|
|
|
builder.button(
|
|
text="💸 Изменить баланс",
|
|
callback_data=AdminUserEditorCallback(
|
|
action="users_balance_change",
|
|
tg_id=tg_id
|
|
).pack()
|
|
)
|
|
builder.button(
|
|
text="🔄 Восстановить триал",
|
|
callback_data=AdminUserEditorCallback(
|
|
action="users_trial_restore",
|
|
tg_id=tg_id
|
|
).pack()
|
|
)
|
|
builder.button(
|
|
text="❌ Удалить клиента",
|
|
callback_data=AdminUserEditorCallback(
|
|
action="users_delete_user",
|
|
tg_id=tg_id
|
|
).pack()
|
|
)
|
|
builder.row(
|
|
build_admin_back_btn()
|
|
)
|
|
builder.adjust(1)
|
|
return builder.as_markup()
|
|
|
|
|
|
def build_user_delete_kb(tg_id: int):
|
|
builder = InlineKeyboardBuilder()
|
|
builder.button(
|
|
text="❌ Да, удалить!",
|
|
callback_data=AdminUserEditorCallback(
|
|
action="users_delete_user_confirm",
|
|
tg_id=tg_id
|
|
).pack()
|
|
)
|
|
builder.row(
|
|
build_editor_back_btn(tg_id, True)
|
|
)
|
|
builder.adjust(1)
|
|
return builder.as_markup()
|
|
|
|
|
|
def build_key_edit_kb(key_details: dict, email: str) -> InlineKeyboardMarkup:
|
|
builder = InlineKeyboardBuilder()
|
|
builder.button(
|
|
text="ℹ️ Получить информацию о юзере",
|
|
callback_data=AdminUserEditorCallback(
|
|
action="users_info",
|
|
tg_id=key_details["tg_id"]
|
|
).pack()
|
|
)
|
|
builder.button(
|
|
text="⏳ Изменить время истечения",
|
|
callback_data=AdminUserEditorCallback(
|
|
action="users_change_expiry",
|
|
data=email,
|
|
tg_id=key_details["tg_id"]
|
|
).pack()
|
|
)
|
|
builder.button(
|
|
text="❌ Удалить ключ",
|
|
callback_data=AdminUserEditorCallback(
|
|
action="users_delete_key",
|
|
data=email,
|
|
tg_id=key_details["tg_id"]
|
|
).pack()
|
|
)
|
|
builder.row(
|
|
build_editor_back_btn(key_details["tg_id"], True)
|
|
)
|
|
builder.adjust(1)
|
|
return builder.as_markup()
|
|
|
|
|
|
def build_key_delete_kb(tg_id: int, client_id: str) -> InlineKeyboardMarkup:
|
|
builder = InlineKeyboardBuilder()
|
|
builder.row(
|
|
InlineKeyboardButton(
|
|
text="✅ Да, удалить",
|
|
callback_data=AdminUserEditorCallback(
|
|
action="users_delete_key_confirm",
|
|
data=client_id,
|
|
tg_id=tg_id
|
|
).pack()
|
|
)
|
|
)
|
|
builder.row(
|
|
build_editor_back_btn(tg_id)
|
|
)
|
|
builder.adjust(1)
|
|
return builder.as_markup()
|
|
|
|
|
|
def build_editor_kb(tg_id: int, edit: bool = False) -> InlineKeyboardMarkup:
|
|
return build_editor_singleton_kb("🔙 Назад", tg_id, edit)
|
|
|
|
|
|
def build_editor_singleton_kb(text: str, tg_id: int, edit: bool = False) -> InlineKeyboardMarkup:
|
|
builder = InlineKeyboardBuilder()
|
|
builder.row(
|
|
build_editor_btn(text, tg_id, edit)
|
|
)
|
|
return builder.as_markup()
|
|
|
|
|
|
def build_editor_back_btn(tg_id: int, edit: bool = False) -> InlineKeyboardButton:
|
|
return build_editor_btn("🔙 Назад", tg_id, edit)
|
|
|
|
|
|
def build_editor_btn(text: str, tg_id: int, edit: bool = False) -> InlineKeyboardButton:
|
|
return InlineKeyboardButton(
|
|
text=text,
|
|
callback_data=AdminUserEditorCallback(
|
|
action="users_editor",
|
|
data="" if edit else "edit",
|
|
tg_id=tg_id
|
|
).pack()
|
|
)
|