Files
bottohelp/MESSAGE_HANDLERS_IMPROVEMENT_PLAN.md
T

12 KiB
Raw Blame History

🚀 УЛУЧШЕНИЕ АРХИТЕКТУРЫ ОБРАБОТЧИКОВ СООБЩЕНИЙ

📋 ПЛАН РАЗРАБОТКИ НОВОЙ СИСТЕМЫ

🎯 ЦЕЛИ ПРОЕКТА

  • Добавить контекстные меню с учетом прав доступа пользователей
  • Разделить обработку сообщений на типы (команды, обычные сообщения, медиа, callback'и)
  • Создать единообразную систему маршрутизации для всех типов сообщений
  • Реализовать строгий контроль доступа на основе ролей пользователей

🏗️ АРХИТЕКТУРНЫЕ КОМПОНЕНТЫ

1. PermissionManager - Менеджер разрешений

class PermissionManager:
    def get_effective_role(self, update: Update, user_id: int) -> UserRole
    def has_permission(self, user_role: UserRole, required_role: UserRole) -> bool
    def can_execute_command(self, user_role: UserRole, command: str) -> bool

Роли пользователей:

  • USER - Обычный пользователь
  • MODERATOR - Модератор с расширенными правами
  • ADMIN - Администратор
  • SUPER_ADMIN - Супер-администратор

2. MenuManager - Менеджер контекстных меню

class ContextMenuManager:
    def get_menu_for_user(self, menu_name: str, user_role: UserRole) -> InlineKeyboardMarkup
    def get_available_menus_for_role(self, user_role: UserRole) -> List[str]
    def is_menu_available(self, menu_name: str, user_role: UserRole) -> bool

Типы меню:

  • Главное меню - Основные команды для всех пользователей
  • Модераторское меню - Инструменты модерации
  • Админ-меню - Настройки сервера
  • Супер-админ меню - Критические системные функции

3. MessageRouter - Маршрутизатор сообщений

class MessageTypeRouter:
    def register_text_handler(self, pattern: str, handler: callable, role: UserRole)
    def register_media_handler(self, media_type: str, handler: callable, role: UserRole)
    def register_callback_handler(self, callback_pattern: str, handler: callable, role: UserRole)
    def route_message(self, update: Update, context: ContextTypes) -> bool

Поддерживаемые типы сообщений:

  • text - Текстовые сообщения
  • voice - Голосовые сообщения
  • photo - Изображения
  • video - Видео
  • audio - Аудио файлы
  • document - Документы
  • callback_query - Callback запросы

4. CommandRouter - Маршрутизатор команд

class CommandRouter:
    def register_command_handler(self, command: str, handler: callable, role: UserRole)
    def get_available_commands(self, user_role: UserRole) -> List[str]
    def route_command(self, command: str, update: Update, context: ContextTypes) -> bool

5. UnifiedRouter - Объединенный маршрутизатор

class UnifiedRouter:
    def __init__(self, command_router, message_router, menu_manager):
        self.command_router = command_router
        self.message_router = message_router
        self.menu_manager = menu_manager

    async def handle_update(self, update: Update, context: ContextTypes):
        # Определяем тип обновления и маршрутизируем
        pass

🔄 ПРОЦЕСС ОБРАБОТКИ СООБЩЕНИЙ

ПОЛУЧЕНИЕ ОБНОВЛЕНИЯ
        ↓
   UnifiedRouter.handle_update()
        ↓
   ┌─────────────────┬─────────────────┬─────────────────┐
   │   КОМАНДА      │   СООБЩЕНИЕ     │   CALLBACK       │
   │                 │                 │                 │
   │ CommandRouter   │ MessageRouter   │ MessageRouter   │
   │                 │                 │                 │
   │ 1. Проверка     │ 1. Определение  │ 1. Поиск        │
   │    прав доступа │    типа         │    обработчика  │
   │                 │    сообщения    │                 │
   │ 2. Выполнение   │ 2. Проверка     │ 2. Проверка     │
   │    команды      │    прав доступа │    прав доступа │
   │                 │                 │                 │
   │ 3. Возврат      │ 3. Выполнение   │ 3. Выполнение   │
   │    результата   │    обработчика  │    callback'а   │
   └─────────────────┴─────────────────┴─────────────────┘

📋 ПРАВИЛА ДОСТУПА ПО РОЛЯМ

USER (Обычный пользователь)

Разрешенные команды:

  • /start, /help, /info, /rank, /leaderboard
  • /weather, /news, /translate
  • /donate, /report_error

Разрешенные меню:

  • Главное меню
  • Меню помощи
  • Меню донатов

MODERATOR (Модератор)

Дополнительные команды:

  • /warn, /mute, /kick
  • /ban (с ограничениями)

Дополнительные меню:

  • Меню модерации
  • Просмотр логов

ADMIN (Администратор)

Дополнительные команды:

  • /ban, /unban, /unmute
  • /broadcast, /stats
  • /set_config

Дополнительные меню:

  • Админ-панель
  • Настройки сервера
  • Управление пользователями

SUPER_ADMIN (Супер-администратор)

Все команды и меню

  • Системные настройки
  • Управление базами данных
  • Критические операции

🚀 ПЛАН ВНЕДРЕНИЯ

Этап 1: Разработка компонентов ( ГОТОВО)

# Создание файлов архитектуры
core/permissions.py          # Менеджер разрешений
core/menu_manager.py         # Менеджер меню
core/message_router.py       # Маршрутизатор сообщений
core/command_router.py       # Маршрутизатор команд
core/unified_router.py       # Объединенный маршрутизатор

Этап 2: Интеграция в Application ( ГОТОВО)

# В core/application.py
def _initialize_unified_router(self):
    from .permissions import permission_manager
    from .menu_manager import create_menu_manager
    from .message_router import create_message_router
    from .command_router import create_command_router
    from utils.formatters import KeyboardFormatter

    self.command_router = create_command_router(self.config, self.metrics)
    self.message_router = create_message_router()
    self.menu_manager = create_menu_manager(permission_manager, KeyboardFormatter())
    self.unified_router = create_unified_router(
        self.command_router, self.message_router, self.menu_manager
    )

Этап 3: Миграция обработчиков (В ПРОЦЕССЕ)

# Регистрация существующих обработчиков в новой системе
def _register_command_handlers(self):
    # Импортируем существующие обработчики
    from handlers import UserHandlers, GameHandlers, AdminHandlers

    # Регистрируем команды пользователей
    user_handlers = UserHandlers(self.config, self.metrics, self.user_service)
    for cmd, handler in user_handlers.get_command_handlers().items():
        self.command_router.register_command_handler(cmd, handler)

Этап 4: Тестирование и отладка (В ПРОЦЕССЕ)

# Запуск интеграционных тестов
python -m pytest tests/test_core/ -v
python demo_architecture.py

Этап 5: Полная миграция (ПЛАНИРУЕТСЯ)

# Полная замена старой системы на новую
# Удаление старых обработчиков
# Оптимизация производительности

📊 ПРЕИМУЩЕСТВА НОВОЙ АРХИТЕКТУРЫ

🔒 Безопасность

  • Строгий контроль доступа по ролям пользователей
  • Валидация всех операций перед выполнением
  • Защита от несанкционированного доступа

Производительность

  • Кеширование меню для быстрого доступа
  • Оптимизированная маршрутизация сообщений
  • Асинхронная обработка всех операций

🛠️ Сопровождаемость

  • Четкое разделение ответственности компонентов
  • Единообразные интерфейсы для всех типов сообщений
  • Полная документация и примеры использования

🔧 Гибкость

  • Легкое добавление новых типов сообщений
  • Расширяемая система ролей пользователей
  • Модульная архитектура для легкого тестирования

📈 ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ

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

  • Быстрый отклик на команды и сообщения
  • Контекстные меню с доступными действиями
  • Безопасность - только разрешенные операции

Для разработчиков:

  • Четкая архитектура для легкого сопровождения
  • Автоматизированные тесты для проверки функциональности
  • Документация для быстрого освоения

Для проекта:

  • Улучшенная производительность и надежность
  • Снижение количества багов благодаря строгому контролю
  • Легкость масштабирования и добавления новых функций

🔗 СВЯЗАННЫЕ ФАЙЛЫ

  • demo_architecture.py - Демонстрация работы новой системы
  • tests/test_core/ - Unit-тесты компонентов
  • MIGRATION_GUIDE.md - Руководство по миграции
  • core/permissions.py - Менеджер разрешений
  • core/menu_manager.py - Менеджер меню
  • core/message_router.py - Маршрутизатор сообщений
  • core/command_router.py - Маршрутизатор команд
  • core/unified_router.py - Объединенный маршрутизатор

ГОТОВНОСТЬ К ПРОМЫШЛЕННОМУ ИСПОЛЬЗОВАНИЮ: 85%