Files
Solo_bot/handlers/admin/management/keyboard.py
T

138 lines
4.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from aiogram.types import InlineKeyboardMarkup
from aiogram.utils.keyboard import InlineKeyboardBuilder
from middlewares import maintenance
from ..panel.keyboard import AdminPanelCallback, build_admin_back_btn
def build_management_kb(admin_role: str) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
if admin_role == "superadmin":
builder.button(
text="👑 Управление админами",
callback_data=AdminPanelCallback(action="admins").pack(),
)
builder.button(
text="💾 Создать резервную копию",
callback_data=AdminPanelCallback(action="backups").pack(),
)
builder.button(
text="📛 Управление банами",
callback_data=AdminPanelCallback(action="bans").pack(),
)
builder.button(
text="🔄 Перезагрузить бота",
callback_data=AdminPanelCallback(action="restart").pack(),
)
builder.button(
text="🌐 Сменить домен",
callback_data=AdminPanelCallback(action="change_domain").pack(),
)
builder.button(
text="🔑 Восстановить пробники",
callback_data=AdminPanelCallback(action="restore_trials").pack(),
)
maintenance_text = (
"🛠️ Выключить тех. работы"
if maintenance.maintenance_mode
else "🛠️ Включить тех. работы"
)
builder.button(
text=maintenance_text,
callback_data=AdminPanelCallback(action="toggle_maintenance").pack(),
)
builder.row(build_admin_back_btn())
builder.adjust(1)
return builder.as_markup()
def build_admins_kb(admins: list[tuple[int, str]]) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
for tg_id, role in admins:
builder.button(
text=f"🧑 {tg_id} ({role})",
callback_data=AdminPanelCallback(action=f"admin_menu|{tg_id}").pack()
)
builder.button(
text=" Добавить админа",
callback_data=AdminPanelCallback(action="add_admin").pack()
)
builder.row(build_admin_back_btn())
builder.adjust(1)
return builder.as_markup()
def build_single_admin_menu(tg_id: int, role: str = "moderator") -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(
text="✏ Изменить роль",
callback_data=AdminPanelCallback(action=f"edit_role|{tg_id}").pack()
)
builder.button(
text="🗑 Удалить админа",
callback_data=AdminPanelCallback(action=f"delete_admin|{tg_id}").pack()
)
if role == "superadmin":
builder.button(
text="🎟 Выпустить токен",
callback_data=AdminPanelCallback(action=f"generate_token|{tg_id}").pack()
)
builder.button(
text="🔙 Назад",
callback_data=AdminPanelCallback(action="admins").pack()
)
builder.adjust(1)
return builder.as_markup()
def build_role_selection_kb(tg_id: int) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(
text="👑 superadmin",
callback_data=AdminPanelCallback(action=f"set_role|{tg_id}|superadmin").pack()
)
builder.button(
text="🛡 moderator",
callback_data=AdminPanelCallback(action=f"set_role|{tg_id}|moderator").pack()
)
builder.button(
text="🔙 Назад",
callback_data=AdminPanelCallback(action=f"admin_menu|{tg_id}").pack()
)
builder.adjust(1)
return builder.as_markup()
def build_admin_back_kb_to_admins() -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(
text="🔙 Назад",
callback_data=AdminPanelCallback(action="admins").pack()
)
builder.adjust(1)
return builder.as_markup()
def build_token_result_kb(token: str) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(
text="📋 Скопировать токен",
switch_inline_query_current_chat=token
)
builder.button(
text="🔙 Назад",
callback_data=AdminPanelCallback(action="admins").pack()
)
builder.adjust(1)
return builder.as_markup()