This project is under active development

Build chat bots.
It's simple for Telegram VK Web Any gateway

Features

Included in the core runtime

The following capabilities are available out of the box.

Multi-gateway support

Support for multiple gateways allows the same bot logic to run across different platforms.

Business logic abstraction

Business logic is isolated from transport and platform-specific APIs.

Centralized error handling

Errors are handled through a centralized and configurable exception handling pipeline.

BotFlow DSL

BotFlow provides a DSL for describing chatbot logic as explicit and composable flows.

Media abstractions

Unified abstractions for working with media independently of the underlying platform.

Reactive execution model

Built on Project Reactor for non-blocking and asynchronous message processing.

Component lifecycle management

All core components follow an explicit and controlled lifecycle model.

Graceful shutdown

The runtime supports graceful shutdown with proper resource cleanup.

Zero-config default setup

The default configuration works out of the box and does not require manual setup for a quick.

From dependency to running bot

Step 1: Add Maven dependencies

Include the required BotFlux modules using Maven. The core runtime and selected gateways are added as regular project dependencies.

Step 2: Configure infrastructure

Initialize the runtime infrastructure with a minimal configuration. The default setup requires only a few lines of code and works without manual tuning.

Step 3: Define bot logic with BotFlow

Describe the bot behavior using the BotFlow DSL. Flows are explicit, composable, and independent of the delivery platform.

Step 4: Run the application

Start the runtime and connect the configured gateways. The same logic becomes available across all enabled channels.

Code example

A simple text echo bot with a single gateway.
BotFluxBootstrap.go()
    .autoInfrastructure() 

    .dispatcherProvider(PipelineDispatcherProviderBuilder.builder() 
        .methodHandlerFlow(flow -> flow
            .when(n -> n 
            .into(BotFlowUtil::getText) 
            .then(BotFlowUtil::sendText)) 
        .execute()) 
        .build())

    .gateway(telegram() 
        .token(System.getenv("TELEGRAM_TOKEN")) 
        .intent())
    .commit() 

    .create() 

    .start();

Are you ready?

Make your first bot at 10 minutes and 15 LoC.