# 🚀 УЛУЧШЕНИЕ АРХИТЕКТУРЫ ОБРАБОТЧИКОВ СООБЩЕНИЙ ## 📋 ПЛАН РАЗРАБОТКИ НОВОЙ СИСТЕМЫ ### 🎯 ЦЕЛИ ПРОЕКТА - Добавить **контекстные меню** с учетом прав доступа пользователей - **Разделить обработку сообщений** на типы (команды, обычные сообщения, медиа, callback'и) - Создать **единообразную систему маршрутизации** для всех типов сообщений - Реализовать **строгий контроль доступа** на основе ролей пользователей --- ## 🏗️ АРХИТЕКТУРНЫЕ КОМПОНЕНТЫ ### 1. **PermissionManager** - Менеджер разрешений ```python 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** - Менеджер контекстных меню ```python 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** - Маршрутизатор сообщений ```python 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** - Маршрутизатор команд ```python 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** - Объединенный маршрутизатор ```python 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: Разработка компонентов (✅ ГОТОВО) ```bash # Создание файлов архитектуры core/permissions.py # Менеджер разрешений core/menu_manager.py # Менеджер меню core/message_router.py # Маршрутизатор сообщений core/command_router.py # Маршрутизатор команд core/unified_router.py # Объединенный маршрутизатор ``` ### Этап 2: Интеграция в Application (✅ ГОТОВО) ```python # В 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: Миграция обработчиков (В ПРОЦЕССЕ) ```python # Регистрация существующих обработчиков в новой системе 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: Тестирование и отладка (В ПРОЦЕССЕ) ```bash # Запуск интеграционных тестов python -m pytest tests/test_core/ -v python demo_architecture.py ``` ### Этап 5: Полная миграция (ПЛАНИРУЕТСЯ) ```python # Полная замена старой системы на новую # Удаление старых обработчиков # Оптимизация производительности ``` --- ## 📊 ПРЕИМУЩЕСТВА НОВОЙ АРХИТЕКТУРЫ ### 🔒 Безопасность - **Строгий контроль доступа** по ролям пользователей - **Валидация всех операций** перед выполнением - **Защита от несанкционированного доступа** ### ⚡ Производительность - **Кеширование меню** для быстрого доступа - **Оптимизированная маршрутизация** сообщений - **Асинхронная обработка** всех операций ### 🛠️ Сопровождаемость - **Четкое разделение ответственности** компонентов - **Единообразные интерфейсы** для всех типов сообщений - **Полная документация** и примеры использования ### 🔧 Гибкость - **Легкое добавление новых типов** сообщений - **Расширяемая система ролей** пользователей - **Модульная архитектура** для легкого тестирования --- ## 📈 ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ ### Для пользователей: - ✅ **Быстрый отклик** на команды и сообщения - ✅ **Контекстные меню** с доступными действиями - ✅ **Безопасность** - только разрешенные операции ### Для разработчиков: - ✅ **Четкая архитектура** для легкого сопровождения - ✅ **Автоматизированные тесты** для проверки функциональности - ✅ **Документация** для быстрого освоения ### Для проекта: - ✅ **Улучшенная производительность** и надежность - ✅ **Снижение количества багов** благодаря строгому контролю - ✅ **Легкость масштабирования** и добавления новых функций --- ## 🔗 СВЯЗАННЫЕ ФАЙЛЫ - `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%*