Files
bottohelp/MESSAGE_HANDLERS_IMPROVEMENT_PLAN.md
T

265 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚀 УЛУЧШЕНИЕ АРХИТЕКТУРЫ ОБРАБОТЧИКОВ СООБЩЕНИЙ
## 📋 ПЛАН РАЗРАБОТКИ НОВОЙ СИСТЕМЫ
### 🎯 ЦЕЛИ ПРОЕКТА
- Добавить **контекстные меню** с учетом прав доступа пользователей
- **Разделить обработку сообщений** на типы (команды, обычные сообщения, медиа, 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%*