Skip to content

canxin121/oxidebot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oxidebot

Oxidebot is a lightweight yet powerful chatbot framework based on Rust and the Tokio runtime. It aims to provide developers with a flexible and extensible environment for bot development through modular design.

Available Bots

Available Handlers

Example Usage

Core Concepts

Bot

Bot is the core component of the framework, responsible for providing Events and offering basic API methods for developers to call. It serves as the bridge between the framework and external platforms (such as QQ, Telegram, etc.).

Event

Event is the object that the framework processes, representing the various events received by the bot. Event types include:

  • MessageEvent: Message events
  • NoticeEvent: Notification events
  • RequestEvent: Request events
  • MetaEvent: Meta events
  • AnyEvent: Generalized events

Matcher

Matcher is an abstraction over Bot and Event, simplifying event handling and API calls. It provides convenient methods to extract key information from events (such as users, messages, groups) and easily call related APIs.

Handler

Handler is the core component for event processing, divided into two types:

  • EventHandler: Handles incoming Events and is triggered only when an event occurs.
  • ActiveHandler: Suitable for proactive processing scenarios, it can run continuously, execute scheduled tasks, or perform other background operations.

A Handler can include either an EventHandler or an ActiveHandler, or both.

Filter

Filter is a global event filter used to process and intercept events before they reach the Handler. The Filter has a higher priority than the Handler.

OxideBotManager

OxideBotManager is the manager of the framework, the entry point for starting and running the bot. Developers should call its run_block method at the end of the main function to launch the entire framework along with all registered Bots, Filters, and Handlers.

Auxiliary Tools for Handler Writer

Wait

Include a restricted BroadcastSender that can only use subscribe fn in your handler

pub struct WaitHandler {
    pub broadcast_sender: BroadcastSender,
}

And then use wait in you HandlerTrait impl. You can find all the wait method in utils::wait or define a new one youself.

    let (number, matcher) = wait_user_text_generic::<u8>(
        &matcher,
        &self.broadcast_sender,
        Duration::from_secs(30),
        3,
        Some("Please send a unsigned int8".to_string()),
    )
    .await?;

License

MIT OR Apache-2.0

About

Lightweight yet powerful chatbot framework

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages