Начало работы с codex-bot
Этот гайд поможет вам пройти путь от настройки окружения до создания первой фичи с использованием лучших практик codex-bot.
💎 Философия: Универсальный конструктор
codex-bot — это эволюционирующий конструктор с «батарейками внутри». Он спроектирован как гибкий инструмент, который кратно ускоряет разработку сложных систем, предлагая готовые архитектурные решения для типовых задач.
Фреймворк поддерживает самые разные сценарии использования:
- Автономный бот: Вся бизнес-логика реализуется непосредственно внутри бота.
- Умный клиент: Бот выступает в роли интерфейса, который запрашивает данные через API и визуализирует их для пользователя.
- Событийный шлюз: Прием внешних хуков от вашего бэкенда для мгновенной отправки уведомлений в каналы или личные сообщения.
- Цифровой ассистент: Сопровождение пользователя по сложным сценариям с сохранением контекста и синхронизацией состояний.
Главная сила codex-bot раскрывается в работе в составе комплексных экосистем (в связке с сайтами, воркерами и API), где он становится надежным мостом между вашим бэкендом и пользователем в Telegram.
🚀 Шаг 1: Подготовка окружения
Для чистоты и порядка всегда используйте виртуальное окружение.
-
Создайте папку вашего проекта:
bash mkdir my_project && cd my_project -
Создайте и активируйте виртуальное окружение:
bash python -m venv venv # Для Windows: venv\Scripts\activate # Для Linux/macOS: source venv/bin/activate -
Установите фреймворк:
bash pip install codex-bot
🛠️ Шаг 2: Инициализация проекта
Запустите команду инициализации прямо из корня вашего проекта. CLI развернет необходимую инфраструктуру в текущей папке, а код бота изолирует в директории src/.
codex-bot startproject my_bot
Что произойдет:
- В корне появятся файлы управления:
pyproject.toml,manage.py,.env. - В папке
src/my_bot/будет создан скелет кода вашего бота. - Если вы запускаете команду в существующем проекте (Django, FastAPI), CLI предложит режим Smart Merge, создав конфиги с суффиксом
.bot.
После генерации установите зависимости вашего проекта:
pip install -e .
🧩 Шаг 3: Создание первой фичи
Фичи — это независимые модули вашего бота. Давайте создадим фичу "Профиль":
codex-bot create-feature profile
CLI создаст папку src/my_bot/features/telegram/profile/ с полной структурой: Handlers, Logic, UI. Добавьте её в INSTALLED_FEATURES в файле settings.py.
✍️ Шаг 4: Написание логики (Best Practices)
В logic/orchestrator.py мы рекомендуем использовать встроенные "батарейки": StateManager и Smart Resolver.
async def render_content(self, payload: Any, director: Director) -> ViewResultDTO:
# 1. Изолированное состояние фичи
fsm = ProfileStateManager(director.state)
# 2. Умный запрос данных (авто-навигация от бэкенда)
raw_data = await director.container.api.get_profile(director.user_id)
data = await director.resolve(raw_data)
if isinstance(data, UnifiedViewDTO):
return data # Редирект на другую сцену
# 3. Чистый UI слой
return self.ui.render_main(data)
🏁 Шаг 5: Запуск
Запустите бота через сгенерированный скрипт:
python manage.py run
🔍 Что дальше?
- Узнайте, как Director управляет переходами.
- Изучите концепцию Stateless UI в ViewSender.
- Посмотрите, как работают Redis Streams для фоновых задач.