Files
new_lottery_bot/ADMIN_PANEL_STRUCTURE.md
Andrew K. Choi 0fdf01d1c7 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
2025-11-17 07:50:08 +09:00

8.2 KiB
Raw Permalink Blame History

Структура Админ Панели

Главное меню бота

Для всех пользователей:

  • 🎲 Активные розыгрыши (active_lotteries) - Просмотр всех активных розыгрышей
  • 📝 Зарегистрироваться (start_registration) - Регистрация в системе (скрывается для зарегистрированных и админов)

Для администраторов:

  • ⚙️ Админ панель (admin_panel) - Вход в админ панель
  • Создать розыгрыш (create_lottery) - Быстрое создание розыгрыша

Админ панель (admin_panel)

Основные разделы:

1. 🎲 Управление розыгрышами (admin_lotteries)

Раздел для полного управления розыгрышами.

Доступные действия:

  • Создать розыгрыш (admin_create_lottery) - Создание нового розыгрыша (пошаговый процесс)
  • 📝 Редактировать розыгрыш (admin_edit_lottery) - Редактирование существующих розыгрышей
  • 🎭 Настройка отображения победителей (admin_winner_display_settings) - Настройка способа отображения победителей (номер счета/имя)
  • 📋 Список всех розыгрышей (admin_list_all_lotteries) - Просмотр всех розыгрышей (активные и завершенные)
  • 🏁 Завершить розыгрыш (admin_finish_lottery) - Принудительное завершение розыгрыша
  • 🗑️ Удалить розыгрыш (admin_delete_lottery) - Удаление розыгрыша из системы

Состояния (FSM):

  • lottery_title - Ввод названия розыгрыша
  • lottery_description - Ввод описания
  • lottery_prizes - Ввод списка призов
  • lottery_confirm - Подтверждение создания

2. 👥 Управление участниками (admin_participants)

Раздел для управления участниками розыгрышей.

Доступные действия:

  • Добавить участника (admin_add_participant) - Добавление одного участника вручную
  • 📥 Массовое добавление (ID) (admin_bulk_add_participant) - Массовое добавление по Telegram ID
  • 🏦 Массовое добавление (счета) (admin_bulk_add_accounts) - Массовое добавление по номерам счетов
  • Удалить участника (admin_remove_participant) - Удаление одного участника
  • 📤 Массовое удаление (ID) (admin_bulk_remove_participant) - Массовое удаление по Telegram ID
  • 🏦 Массовое удаление (счета) (admin_bulk_remove_accounts) - Массовое удаление по номерам счетов
  • 👥 Все участники (admin_list_all_participants) - Список всех зарегистрированных участников
  • 🔍 Поиск участников (admin_search_participants) - Поиск участников по критериям
  • 📊 Участники по розыгрышам (admin_participants_by_lottery) - Просмотр участников конкретного розыгрыша
  • 📈 Отчет по участникам (admin_participants_report) - Детальный отчет об участии

Состояния (FSM):

  • add_participant_lottery - Выбор розыгрыша для добавления
  • add_participant_user - Выбор пользователя
  • add_participant_bulk - Массовый ввод ID
  • add_participant_bulk_accounts - Массовый ввод счетов
  • remove_participant_lottery - Выбор розыгрыша для удаления
  • remove_participant_user - Выбор пользователя для удаления
  • participant_search - Поиск участников

3. 👑 Управление победителями (admin_winners)

Раздел для управления победителями розыгрышей.

Доступные действия:

  • 👑 Установить победителя (admin_set_manual_winner) - Ручная установка победителя (без розыгрыша)
  • 📝 Изменить победителя (admin_edit_winner) - Изменение данных победителя
  • Удалить победителя (admin_remove_winner) - Удаление победителя
  • 📋 Список победителей (admin_list_winners) - Просмотр всех победителей
  • 🎲 Провести розыгрыш (admin_conduct_draw) - Автоматическое проведение розыгрыша

Состояния (FSM):

  • set_winner_lottery - Выбор розыгрыша для установки победителя
  • set_winner_place - Выбор места (1, 2, 3...)
  • set_winner_user - Выбор пользователя-победителя

4. 📊 Статистика (admin_stats)

Раздел с общей статистикой системы.

Показывает:

  • Количество пользователей
  • Количество зарегистрированных пользователей
  • Общее количество розыгрышей
  • Количество активных розыгрышей
  • Количество завершенных розыгрышей
  • Общее количество участий

Кнопки:

  • 🔄 Обновить (admin_stats) - Обновление статистики
  • 🔙 Назад (admin_panel) - Возврат в главное меню админ панели

5. ⚙️ Настройки (admin_settings)

Раздел с настройками системы и утилитами.

Доступные действия:

  • Настройки отображения
  • Управление базой данных
  • Экспорт данных
  • Системные настройки

Навигация

Кнопки возврата:

  • 🔙 Назад (admin_panel) - Возврат в главное меню админ панели
  • 🔙 Назад (back_to_main) - Возврат в главное меню бота

Кнопки отмены:

  • Отмена - Отмена текущей операции и возврат в предыдущее меню

Обработка callback'ов

Главный роутер (main.py):

  • admin_panel - Открытие админ панели (через контроллер)
  • back_to_main - Возврат в главное меню

Админ роутер (admin_panel.py):

  • Все callback'и начинающиеся с admin_*
  • Вся логика управления розыгрышами, участниками, победителями
  • FSM состояния для многошаговых операций

Порядок подключения роутеров:

  1. router (main) - команды /start, /help, основные callback'и
  2. admin_router - все админские операции
  3. registration_router - регистрация пользователей
  4. chat_router (ПОСЛЕДНИЙ) - обработка всех необработанных сообщений

Проверка прав доступа

Все админские handler'ы проверяют права доступа:

if not is_admin(callback.from_user.id):
    await callback.answer("❌ Недостаточно прав", show_alert=True)
    return

ID администраторов хранятся в src/core/config.py в переменной ADMIN_IDS.