mirror of
https://github.com/FerraSoft/bottohelp.git
synced 2026-08-06 21:55:03 +00:00
265 lines
12 KiB
Markdown
265 lines
12 KiB
Markdown
# 🚀 УЛУЧШЕНИЕ АРХИТЕКТУРЫ ОБРАБОТЧИКОВ СООБЩЕНИЙ
|
||
|
||
## 📋 ПЛАН РАЗРАБОТКИ НОВОЙ СИСТЕМЫ
|
||
|
||
### 🎯 ЦЕЛИ ПРОЕКТА
|
||
- Добавить **контекстные меню** с учетом прав доступа пользователей
|
||
- **Разделить обработку сообщений** на типы (команды, обычные сообщения, медиа, 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%* |