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