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