Nonebot-rs 简称 nbrs,是一个基于 Nonebot2 思路的 Onebot 协议机器人框架 Rust 实现。 本框架的基本目标是实现比较便利的 Rust Onebot 机器人搭建。长期目标是以本项目为基础, 开发与其他脚本语言(比如:Python、Lua)互通的 Onebot 机器人平台(如果我能坚持下去 的话)。
基于本框架实现的机器人,可以由一下几部分组成:nbrs 核心、Matcher 插件、启动文件, 每个部分均可独立为单个 crate ,通过启动文件向 nbrs 注册 Matcher 后编译启动的方式 构建一个机器人实例。
API文档地址:Docs.rs
nbrs 启动后,将读取设置文件、并注册 Matchers(其实这一步已经在编译时硬编码),当接 收到 WebSocket 连接后,将新建一个 Bot 实例,接受 Event 后,由 Bot 负责逐渐匹配分发 到各个 Matcher ,Matcher 处理后,通过 channel 将数据传递回 WebSocket 发送。每个 Event 的匹配与 Matcher 的处理均为独立协程,以此提高并发性能。
当第一次运行 nbrs 时将会自动创建 Nonebotrs.toml 配置文件。
```toml [global] // 全局设置 host = "127.0.0.1" // 监听 host port = 8088 // 监听 port debug = true // 开启 debug log superusers = ["YourID"] // 全局管理员账号 nicknames = ["nickname"] // 全局 Bot 昵称 command_starts = ["/"] // 全局命令起始符
[bots.BotID] // Bot 设置 superusers = ["YourID"] // 管理员账户 nicknames = ["nickname"] // Bot 昵称 command_starts = ["/"] // 命令起始符 ```
最小运行实例:
rust
fn main() {
let mut nb = nonebot_rs::Nonebot::new(); // 新建 Nonebot
nb.matchers
.add_message_matcher(nonebot_rs::builtin::echo::echo()) // 注册 echo Matcher
.add_message_matcher(nonebot_rs::builtin::rcnb::rcnb()); // 注册 rcnb Matcher
nb.run() // 运行 Nonebot
}
Matcher 开发:
```rust use nonebotrs::builtin; use nonebotrs::event::MessageEvent; use nonebotrs::matcher::{Handler, Matcher}; use nonebotrs::oncommand; use nonebotrs::asynctrait; use rcnbrs::encode;
pub struct Rcnb {} // 定义 handler struct,可以在该结构体容纳静态数据
impl Handler
// Matcher 的构建函数
pub fn rcnb() -> Matcher