- Changed logic to split input by space: left = club card number, right = account number - Updated add_participants_by_accounts_bulk() to handle '2521 12-64-89-29-62-40-74' format - Updated remove_participants_by_accounts_bulk() with same logic - Now shows club card number in details: 'Name (card: 2521, account: 12-64-89-29-62-40-74)' - Backwards compatible: still works with just account number (no space)
5.1 KiB
5.1 KiB
Результаты очистки кода
Дата: 17 ноября 2025 г.
Выполненные действия:
1. Удалены дублирующиеся обработчики из main.py
Удалено:
test_callback_handler- тестовый callback (не используется в продакшене)admin_panel_handler- дублируется с admin_panel.pylottery_management_handler- дублируется с admin_panel.pyconduct_lottery_admin_handler- дублируется с admin_panel.pyconduct_specific_lottery_handler- дублируется с admin_panel.py
Оставлено:
cmd_start- обработчик команды /startcmd_admin- упрощен, теперь напрямую показывает админ панельactive_lotteries_handler- показ активных розыгрышейback_to_main_handler- возврат в главное меню
2. Очищены методы BotController
Удалено из src/controllers/bot_controller.py:
handle_admin_panel()- перенесено в admin_panel.pyhandle_lottery_management()- перенесено в admin_panel.pyhandle_conduct_lottery_admin()- перенесено в admin_panel.pyhandle_conduct_lottery()- перенесено в admin_panel.py
Оставлено:
handle_start()- обработка команды /starthandle_active_lotteries()- показ активных розыгрышейis_admin()- проверка прав администратора
3. Упрощены клавиатуры в ui.py
Удалено из src/components/ui.py:
get_lottery_management_keyboard()- используется локальная версия в admin_panel.pyget_lottery_keyboard()- не используетсяget_conduct_lottery_keyboard()- не используется
Оставлено:
get_main_keyboard()- главная клавиатура ботаget_admin_keyboard()- админская панель
4. Упрощены интерфейсы
IBotController (src/interfaces/base.py):
- Было: 6 методов
- Стало: 2 метода
handle_start()handle_active_lotteries()
IKeyboardBuilder (src/interfaces/base.py):
- Было: 5 методов
- Стало: 2 метода
get_main_keyboard()get_admin_keyboard()
5. Централизация логики
Теперь вся админская логика находится в одном месте:
src/handlers/admin_panel.py- все обработчики админ панели- Создание розыгрышей
- Управление участниками
- Управление победителями
- Статистика
- Настройки
Разделение ответственности:
main.py - основной роутер:
- Команды
/start,/admin - Базовые callback'и (
active_lotteries,back_to_main)
admin_panel.py - админ роутер:
- Все callback'и начинающиеся с
admin_* - FSM состояния для многошаговых операций
- Вся логика управления
bot_controller.py - бизнес-логика:
- Работа с сервисами
- Форматирование данных
- Проверка прав доступа
ui.py - UI компоненты:
- Построение клавиатур
- Форматирование сообщений
6. Результаты
Статистика удалений:
- Удалено строк кода: 202
- Добавлено строк: 21
- Чистый результат: -181 строка
Улучшения:
✅ Нет дублирующегося кода ✅ Четкое разделение ответственности ✅ Упрощенные интерфейсы ✅ Лучшая поддерживаемость ✅ Меньше потенциальных багов
Тестирование:
✅ Бот запускается без ошибок (PID: 802748) ✅ Все роутеры подключены правильно ✅ Логика админ панели централизована
7. Коммиты
0fdf01d- feat: update admin panel keyboard structure and registration button logic43d46ea- refactor: clean up unused code and duplicate handlers
8. Следующие шаги (рекомендации)
- Протестировать все кнопки админ панели через Telegram
- Использовать
ADMIN_PANEL_TESTING.mdкак чек-лист - Проверить работу FSM состояний
- Убедиться в корректности навигации
9. Примечания
- Все изменения обратно совместимы
- Логика работы не изменилась, только структура
- Бот работает стабильно
- Код стал чище и понятнее