6 releases
0.1.5 | Sep 10, 2024 |
---|---|
0.1.4 | Sep 9, 2024 |
0.1.1 | Aug 20, 2024 |
#42 in Robotics
Used in 2 crates
60KB
1.5K
SLoC
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 Event
s 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
Event
s 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 Bot
s, Filter
s, and Handler
s.
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
Dependencies
~9–20MB
~273K SLoC