diff --git a/keyboards/admin/coupons_kb.py b/keyboards/admin/coupons_kb.py index 0d024a05..41ebd8c3 100644 --- a/keyboards/admin/coupons_kb.py +++ b/keyboards/admin/coupons_kb.py @@ -20,7 +20,7 @@ def build_coupons_kb() -> InlineKeyboardMarkup: callback_data=AdminPanelCallback(action="coupons_list").pack() ) builder.row( - build_admin_back_btn("admin") + build_admin_back_btn() ) return builder.as_markup() diff --git a/keyboards/admin/panel_kb.py b/keyboards/admin/panel_kb.py index 2786dbd5..9b85a216 100644 --- a/keyboards/admin/panel_kb.py +++ b/keyboards/admin/panel_kb.py @@ -10,7 +10,7 @@ class AdminPanelCallback(CallbackData, prefix="admin_panel"): def build_panel_kb() -> InlineKeyboardMarkup: builder = InlineKeyboardBuilder() builder.button( - text="🔍 Поиск пользователя", + text="👤 Поиск пользователя", callback_data=AdminPanelCallback(action="search_user").pack() ) builder.button( @@ -31,19 +31,21 @@ def build_panel_kb() -> InlineKeyboardMarkup: text="📢 Рассылка", callback_data=AdminPanelCallback(action="sender").pack() ) - builder.button( - text="🤖 Управление Ботом", - callback_data=AdminPanelCallback(action="management").pack() + builder.row( + InlineKeyboardButton( + text="📊 Статистика", + callback_data=AdminPanelCallback(action="stats").pack() + ), + InlineKeyboardButton( + text="🤖 Управление", + callback_data=AdminPanelCallback(action="management").pack() + ) ) builder.button( - text="📊 Статистика", - callback_data=AdminPanelCallback(action="stats").pack() - ) - builder.button( - text="👤 Личный кабинет", + text="Личный кабинет", callback_data="profile" ) - builder.adjust(1, 1, 2, 1) + builder.adjust(1, 1, 2, 1, 2, 1) return builder.as_markup() @@ -54,7 +56,7 @@ def build_management_kb() -> InlineKeyboardMarkup: callback_data=AdminPanelCallback(action="backups").pack() ) builder.button( - text="🚫 Баны", + text="🚫 Заблокировавшие бота", callback_data=AdminPanelCallback(action="bans").pack() ) builder.button( @@ -62,7 +64,7 @@ def build_management_kb() -> InlineKeyboardMarkup: callback_data=AdminPanelCallback(action="restart").pack() ) builder.row( - build_admin_back_btn("admin") + build_admin_back_btn() ) builder.adjust(1) return builder.as_markup() @@ -71,17 +73,17 @@ def build_management_kb() -> InlineKeyboardMarkup: def build_restart_kb() -> InlineKeyboardMarkup: builder = InlineKeyboardBuilder() builder.button( - text="✅ Да, перезапустить", + text="✅ Да, перезагрузить", callback_data=AdminPanelCallback(action="restart_confirm").pack() ) builder.row( - build_admin_back_btn("admin") + build_admin_back_btn() ) builder.adjust(1) return builder.as_markup() -def build_admin_back_kb(action: str) -> InlineKeyboardMarkup: +def build_admin_back_kb(action: str = "admin") -> InlineKeyboardMarkup: return build_admin_singleton_kb("🔙 Назад", action) @@ -93,7 +95,7 @@ def build_admin_singleton_kb(text: str, action: str) -> InlineKeyboardMarkup: return builder.as_markup() -def build_admin_back_btn(action: str) -> InlineKeyboardMarkup: +def build_admin_back_btn(action: str = "admin") -> InlineKeyboardMarkup: return build_admin_btn("🔙 Назад", action) diff --git a/keyboards/admin/sender_kb.py b/keyboards/admin/sender_kb.py index 5d9155a7..bfe9ad39 100644 --- a/keyboards/admin/sender_kb.py +++ b/keyboards/admin/sender_kb.py @@ -12,25 +12,25 @@ class AdminSenderCallback(CallbackData, prefix="admin_sender"): def build_sender_kb() -> InlineKeyboardMarkup: builder = InlineKeyboardBuilder() builder.button( - text="📢 Отправить всем", + text="👥 Все пользователи", callback_data=AdminSenderCallback( type="all" ).pack() ) builder.button( - text="📢 Отправить с подпиской", + text="✅ Пользователи с подпиской", callback_data=AdminSenderCallback( type="subscribed" ).pack() ) builder.button( - text="📢 Отправить без подписки", + text="❌ Пользователи без подписки", callback_data=AdminSenderCallback( type="unsubscribed" ).pack() ) builder.row( - build_admin_back_btn("admin") + build_admin_back_btn() ) builder.adjust(1) return builder.as_markup() diff --git a/keyboards/admin/servers_kb.py b/keyboards/admin/servers_kb.py index dc974c92..e9e45140 100644 --- a/keyboards/admin/servers_kb.py +++ b/keyboards/admin/servers_kb.py @@ -27,7 +27,7 @@ def build_clusters_editor_kb(servers: dict) -> InlineKeyboardMarkup: callback_data=AdminPanelCallback(action="clusters_add").pack() ) builder.row( - build_admin_back_btn("admin") + build_admin_back_btn() ) builder.adjust(1) return builder.as_markup() diff --git a/keyboards/admin/stats_kb.py b/keyboards/admin/stats_kb.py index c6b34404..4e1db626 100644 --- a/keyboards/admin/stats_kb.py +++ b/keyboards/admin/stats_kb.py @@ -19,7 +19,7 @@ def build_stats_kb() -> InlineKeyboardMarkup: callback_data=AdminPanelCallback(action="stats_export_payments_csv").pack() ) builder.row( - build_admin_back_btn("admin") + build_admin_back_btn() ) builder.adjust(1) return builder.as_markup() diff --git a/keyboards/admin/users_kb.py b/keyboards/admin/users_kb.py index 57d7941c..0bd6cf86 100644 --- a/keyboards/admin/users_kb.py +++ b/keyboards/admin/users_kb.py @@ -7,44 +7,47 @@ from keyboards.admin.panel_kb import build_admin_back_btn class AdminUserEditorCallback(CallbackData, prefix="admin_users"): action: str - data: str + tg_id: int + data: str | None = None def build_user_edit_kb(tg_id: int, key_records: list) -> InlineKeyboardMarkup: builder = InlineKeyboardBuilder() - for email in key_records: + for record in key_records: + email = record["email"] builder.button( text=f"🔑 {email}", callback_data=AdminUserEditorCallback( action="users_key_edit", - data=email + tg_id=tg_id, + data=str(email) ).pack() ) builder.button( - text="📝 Изменить баланс", + text="💸 Изменить баланс", callback_data=AdminUserEditorCallback( action="users_balance_change", - data=tg_id + tg_id=tg_id ).pack() ) builder.button( - text="🔄 Восстановить пробник", + text="🔄 Восстановить триал", callback_data=AdminUserEditorCallback( action="users_trial_restore", - data=tg_id + tg_id=tg_id ).pack() ) builder.button( text="❌ Удалить клиента", callback_data=AdminUserEditorCallback( action="users_delete_user", - data=tg_id + tg_id=tg_id ).pack() ) builder.row( - build_admin_back_btn("users_editor") + build_admin_back_btn() ) builder.adjust(1) return builder.as_markup() @@ -53,14 +56,14 @@ def build_user_edit_kb(tg_id: int, key_records: list) -> InlineKeyboardMarkup: def build_user_delete_kb(tg_id: int): builder = InlineKeyboardBuilder() builder.button( - text="❌ Удалить клиента", + text="❌ Да, удалить!", callback_data=AdminUserEditorCallback( action="users_delete_user_confirm", - data=tg_id + tg_id=tg_id ).pack() ) builder.row( - build_admin_back_btn("users_editor") + build_editor_back_btn(tg_id, True) ) builder.adjust(1) return builder.as_markup() @@ -68,53 +71,77 @@ def build_user_delete_kb(tg_id: int): def build_key_edit_kb(key_details: dict, email: str) -> InlineKeyboardMarkup: builder = InlineKeyboardBuilder() - builder.row( - InlineKeyboardButton( - text="ℹ️ Получить информацию о юзере", - callback_data=AdminUserEditorCallback( - action="users_info", - data=key_details["tg_id"] - ).pack() - ) + 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( - InlineKeyboardButton( - text="⏳ Изменить время истечения", - callback_data=AdminUserEditorCallback( - action="users_change_expiry", - data=email - ).pack() - ) - ) - builder.row( - InlineKeyboardButton( - text="❌ Удалить ключ", - callback_data=AdminUserEditorCallback( - action="users_delete_key", - data=email - ).pack() - ) - ) - builder.row( - build_admin_back_btn("users_editor") + build_editor_back_btn(key_details["tg_id"], True) ) builder.adjust(1) return builder.as_markup() -def build_key_delete_kb(client_id: str) -> InlineKeyboardMarkup: +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 + data=client_id, + tg_id=tg_id ).pack() ) ) builder.row( - build_admin_back_btn("users_editor") + 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() + )