Skip to main content

Crate botkit

Crate botkit 

Source
Expand description

§botkit

botkit is a Rust library for building chat bots with one handler model across multiple platforms.

The botkit crate is the facade entrypoint for the workspace. It re-exports botkit-core by default and exposes platform adapters behind explicit feature flags.

§Installation

Use the facade crate when you want one dependency with opt-in platforms:

[dependencies]
botkit = { version = "0.1.0", features = ["telegram"] }

Available facade features:

  • discord enables botkit::discord and the DiscordBot re-exports.
  • telegram enables botkit::telegram and the TelegramBot re-exports.
  • matrix enables botkit::matrix and the MatrixBot re-exports.
  • full enables all platform adapters.

You can also depend on the smaller crates directly:

  • botkit-core provides the shared bot abstractions, extractors, handlers, and response types.
  • botkit-discord provides the Discord integration.
  • botkit-telegram provides the Telegram integration.
  • botkit-matrix provides the Matrix integration.

§Design goals

  • Reuse the same handler style across platforms.
  • Keep the core abstractions transport-agnostic.
  • Support async-first bot execution.
  • Keep platform adapters opt-in instead of forcing heavy dependencies by default.
  • Expose platform crates separately instead of hiding everything behind type erasure.

§Crates

§botkit

Facade crate that re-exports the core API and feature-gated platform integrations.

§botkit-core

Shared building blocks:

  • Bot and BotBuilder
  • extractor-based handlers such as User, CommandArgs, and MessageContent
  • unified Response and file response types

§botkit-discord

Discord support built around gateway events and command/button handlers.

§botkit-telegram

Telegram support for webhook-style handling and bot client operations.

§botkit-matrix

Matrix support built on top of matrix-sdk, including encrypted room support.

§Status

This project is a library workspace under active development. The API surface is still evolving.

Re-exports§

pub use botkit_core as core;

Modules§

action
prelude
types

Structs§

BotBuilder
Builder for constructing bots with handlers
BotHandle
Handle to control a running bot
ButtonId
Button/callback ID extractor
Channel
Channel information extractor
ChatActionGuard
RAII guard that keeps a chat action active until dropped
CommandArgs
Command arguments extractor (Telegram-style string args)
CommandName
Command name extractor
Context
Context for handling bot events
FileResponse
File response data
MessageContent
Message content extractor
Response
Unified bot response builder
Typing
Typing indicator extractor
User
User information extractor

Enums§

BotError
Main error type for bot operations
ChatAction
Chat action types for platform indicators
HandlerPattern
OptionValue
Command option value

Traits§

Bot
Unified Bot trait that hides connection mode differences
ChatActionSender
Trait for sending chat actions to a channel
ContextData
Trait implemented by platform-specific context data
FromContext
Trait for extracting typed data from bot context
Handler
Trait for bot event handlers
IntoHandler
Trait to convert functions into handlers
IntoResponse
Trait for converting types into bot responses

Type Aliases§

BoxedHandler
Boxed handler for storage