Skip to content

📦 Base

⬅️ Back | 🏠 Docs Root

Модуль base определяет основные строительные блоки фреймворка codex-bot: иммутабельные DTO и абстрактный Оркестратор.


🧠 Почему так?

Иммутабельность (Immutability)

Все DTO в codex-bot заморожены (frozen=True). В асинхронной среде aiogram передача мутабельных объектов между сервисами может привести к непредсказуемым состояниям гонки (race conditions). Иммутабельность гарантирует, что после создания объекта его нельзя изменить, что упрощает отладку и понимание системы.

Stateless Оркестраторы

Оркестраторы — это сердце каждой фичи. Они спроектированы как Stateless Singletons. Это означает, что один экземпляр оркестратора обрабатывает запросы всех пользователей одновременно. Они не хранят данные пользователя в self. Весь контекст (user ID, chat ID, FSM state) передается через Director и payload.


🔄 Поток данных (The Flow)

  1. Вход: Хендлер получает событие Telegram и извлекает payload.
  2. Обработка: Director вызывает метод оркестратора render_content(payload, director).
  3. Выход: Оркестратор возвращает ViewResultDTO (текст + клавиатура).
  4. Сборка: Базовый класс оборачивает результат в UnifiedViewDTO, обогащая его метаданными роутинга (chat_id, session_key).

🗺️ Карта модуля

Компонент Описание
📄 API Reference Технические детали BaseBotOrchestrator и DTO.
📄 View DTOs UnifiedViewDTO, ViewResultDTO и MessageCoordsDTO.
📄 Context DTO BaseBotContext для нормализации данных события.

Последнее обновление: 2025-02-07