Перейти к содержанию

BotFlux

BotFlux — Java‑фреймворк для построения диалоговых систем и чат‑ботов, работающих в нескольких каналах (Telegram, VK, Web и др.) на едином ядре.

BotFlux позволяет писать бизнес‑логику быстрее, чем при прямой работе с SDK мессенджеров, и при этом сохранять строгую архитектуру, тестируемость и возможность роста проекта.


Что такое BotFlux

BotFlux — это не SDK конкретного мессенджера и не low‑code конструктор с жёсткими ограничениями.

Это runtime и архитектурный слой, который:

  • изолирует бизнес‑логику от конкретных каналов доставки сообщений
  • предоставляет единый жизненный цикл компонентов
  • позволяет запускать один и тот же код в нескольких каналах без переписывания логики
  • обеспечивает взаимозаменяемость компонентов (например, выбор или замена JSON-сериализатора, кэша, HTTP транспорта или других инфраструктурных компонентов без изменения бизнес-логики)

Ключевые идеи

  • Разделение ответственности

Gateway отвечает за интеграцию с внешним миром, Dispatcher — за обработку событий и бизнес‑логику.

  • Абстрактные действия и события

Отправка сообщений, кнопок и медиа описывается через выполнение действий, а приём сообщений, нажатий кнопок и других пользовательских взаимодействий — через события, без прямых вызовов API конкретных мессенджеров

  • Единый жизненный цикл

Все компоненты управляются централизованно и корректно запускаются и останавливаются.

  • Абстрактные медиа

Фото, видео, аудио, голосовые сообщения и видео-заметки представлены единым типом BotMedia, который можно принимать и отправлять, а также читать и записывать на диск в реактивном виде на основе Flux<ByteBuffer>.

  • Минимальный старт и тонкая настройка

Bootstrap автоматически обнаруживает компоненты через ServiceLoader, что позволяет запускать минимальный проект без дополнительной конфигурации, при этом сохраняя возможность явной настройки и замены каждого компонента при необходимости.

  • Graceful shutdown

Поддерживается корректное завершение работы с таймаутами ожидания для завершения обработки событий без потери сообщений.

  • Согласованное выполнение

BotFlux гарантирует согласованную работу всех gateway; при сбое одного из них BotFlux корректно останавливает остальные.


Минимальный пример

Простейший текстовый эхо-бот с одним gateway:

BotFluxBootstrap.go()
    .autoInfrastructure() // (1)!

    .dispatcherProvider(PipelineDispatcherProviderBuilder.builder() // (2)!
        .methodHandlerFlow(flow -> flow
        .when(n -> n // (3)!
        .into(BotFlowUtil::getText) // (4)!
                .then(BotFlowUtil::sendText)) // (5)!
        .execute()) // (6)!
        .build())

        .gateway(telegram() // (7)!
        .token(System.getenv("TELEGRAM_TOKEN")) // (8)!
        .intent())
        .commit() // (9)!

    .create() // (10)!

    .start(); // (11)!
  1. автоматический выбор компонентов инфраструктуры
  2. бизнес-логика
  3. вариант
  4. есть текст?
  5. вернём его (эхо-бот)
  6. конец вариантов
  7. телеграм шлюз
  8. телеграм токен из окружения
  9. последний шлюз
  10. создаём BF
  11. запускаем BF

В этом примере:

  • используется Telegram как канал доставки
  • логика не зависит от Telegram API
  • тот же dispatcher может быть запущен с другим gateway без изменений (добавить ещё один .gateway(...) перед вызовом .commit())

Что вы получаете из коробки

  • единый runtime для нескольких каналов
  • чёткие контракты между слоями системы
  • реактивную модель обработки событий
  • централизованный жизненный цикл компонентов
  • возможность graceful shutdown

Уровни использования

BotFlux не навязывает единый стиль разработки:

  • Быстрый старт

Минимальный объём кода, простые обработчики на лямбда-функциях, быстрый результат.

  • Структурированная логика

Несколько gateway, управление состояниями, виртуальный URI (для MVC-подобной организации логики), переиспользуемые сценарии.

  • Полный контроль

Конфигурация инфраструктурных компонентов (SSL, proxy, политики кэширования), собственные компоненты (HTTP/WS-транспорт, сериализатор, кэш), gateway для пользовательских платформ.


Куда идти дальше

  • Quick Start — запуск первого бота в браузере за несколько минут
  • Concepts — обзор внутреннего устройства BotFlux
  • Gateways — поддерживаемые каналы и их особенности
  • Testing — тестирование ботов и бизнес‑логики