feat: update admin panel keyboard structure and registration button logic

- Updated admin panel keyboard to match admin_panel.py handlers
- Changed registration button logic: show only for unregistered non-admins
- Added missing methods to IBotController interface
- Updated get_main_keyboard to accept is_registered parameter
- Simplified admin panel structure with proper callback routing
- Removed test callback button from production UI
- Created ADMIN_PANEL_STRUCTURE.md and ADMIN_PANEL_TESTING.md documentation
This commit is contained in:
2025-11-17 07:50:08 +09:00
parent 0dc0ae8111
commit 0fdf01d1c7
8 changed files with 582 additions and 33 deletions

View File

@@ -8,14 +8,16 @@ from src.core.models import Lottery, Winner
class KeyboardBuilderImpl(IKeyboardBuilder):
"""Реализация построителя клавиатур"""
def get_main_keyboard(self, is_admin: bool = False):
def get_main_keyboard(self, is_admin: bool = False, is_registered: bool = False):
"""Получить главную клавиатуру"""
buttons = [
[InlineKeyboardButton(text="🎲 Активные розыгрыши", callback_data="active_lotteries")],
[InlineKeyboardButton(text="📝 Зарегистрироваться", callback_data="start_registration")],
[InlineKeyboardButton(text="🧪 ТЕСТ КОЛБЭК", callback_data="test_callback")]
[InlineKeyboardButton(text="🎲 Активные розыгрыши", callback_data="active_lotteries")]
]
# Показываем кнопку регистрации только незарегистрированным пользователям (не админам)
if not is_admin and not is_registered:
buttons.append([InlineKeyboardButton(text="📝 Зарегистрироваться", callback_data="start_registration")])
if is_admin:
buttons.extend([
[InlineKeyboardButton(text="⚙️ Админ панель", callback_data="admin_panel")],
@@ -27,18 +29,11 @@ class KeyboardBuilderImpl(IKeyboardBuilder):
def get_admin_keyboard(self):
"""Получить админскую клавиатуру"""
buttons = [
[
InlineKeyboardButton(text="👥 Пользователи", callback_data="user_management"),
InlineKeyboardButton(text="💳 Счета", callback_data="account_management")
],
[
InlineKeyboardButton(text="🎯 Розыгрыши", callback_data="lottery_management"),
InlineKeyboardButton(text="💬 Чат", callback_data="chat_management")
],
[
InlineKeyboardButton(text="📊 Статистика", callback_data="stats"),
InlineKeyboardButton(text="⚙️ Настройки", callback_data="settings")
],
[InlineKeyboardButton(text="🎲 Управление розыгрышами", callback_data="admin_lotteries")],
[InlineKeyboardButton(text="<EFBFBD> Управление участниками", callback_data="admin_participants")],
[InlineKeyboardButton(text="👑 Управление победителями", callback_data="admin_winners")],
[InlineKeyboardButton(text="📊 Статистика", callback_data="admin_stats")],
[InlineKeyboardButton(text="⚙️ Настройки", callback_data="admin_settings")],
[InlineKeyboardButton(text="🔙 Назад", callback_data="back_to_main")]
]
return InlineKeyboardMarkup(inline_keyboard=buttons)
@@ -46,18 +41,12 @@ class KeyboardBuilderImpl(IKeyboardBuilder):
def get_lottery_management_keyboard(self):
"""Получить клавиатуру управления розыгрышами"""
buttons = [
[
InlineKeyboardButton(text="📋 Все розыгрыши", callback_data="all_lotteries"),
InlineKeyboardButton(text="🎲 Активные", callback_data="active_lotteries_admin")
],
[
InlineKeyboardButton(text="✅ Завершенные", callback_data="completed_lotteries"),
InlineKeyboardButton(text=" Создать", callback_data="create_lottery")
],
[
InlineKeyboardButton(text="🎯 Провести розыгрыш", callback_data="conduct_lottery_admin"),
InlineKeyboardButton(text="🔄 Переросыгрыш", callback_data="admin_redraw")
],
[InlineKeyboardButton(text=" Создать розыгрыш", callback_data="admin_create_lottery")],
[InlineKeyboardButton(text="📝 Редактировать розыгрыш", callback_data="admin_edit_lottery")],
[InlineKeyboardButton(text="🎭 Настройка отображения победителей", callback_data="admin_winner_display_settings")],
[InlineKeyboardButton(text="📋 Список всех розыгрышей", callback_data="admin_list_all_lotteries")],
[InlineKeyboardButton(text="<EFBFBD> Завершить розыгрыш", callback_data="admin_finish_lottery")],
[InlineKeyboardButton(text="<EFBFBD> Удалить розыгрыш", callback_data="admin_delete_lottery")],
[InlineKeyboardButton(text="🔙 Назад", callback_data="admin_panel")]
]
return InlineKeyboardMarkup(inline_keyboard=buttons)