目前 API 仍在重构中,尚不稳定,随时可能发生不兼容的变化
Rust LibOneBot 可以帮助 OneBot 实现者快速在新的聊天机器人平台实现 OneBot v12 接口标准。
具体而言,Rust LibOneBot 通过 OneBot
、Config
、Action
、Event
等类型的抽象,让 OneBot 实现者只需编写少量代码即可完成一个 OneBot 实现,而无需关心过多 OneBot 标准所定义的通信方式的细节。
基于 LibOneBot 实现 OneBot 时,OneBot 实现者只需专注于编写与聊天机器人平台对接的逻辑,包括通过长轮询或 webhook 方式从机器人平台获得事件,并将其转换为 OneBot 事件,以及处理 OneBot 动作请求,并将其转换为对机器人平台 API 的调用。
一个 OneBot echo 实现:
use libonebot::{config::DefaultConfigFile, Event, Message, OneBot, Result, User};
#[tokio::main]
async fn main() -> Result<()> {
let onebot = OneBot::new("nothing"); // 创建 OneBot 实例
onebot.set_default_config(); // 创建默认 Config
onebot.register_action_handler("echo", |params| {
// 当收到的 json 为 {"action" : "echo", "params" : {"message" : a_string }} 时,返回“received: a_string”,否则返回空
if let serde_json::Value::Object(params) = params {
if let Some(message) = params.get("message") {
if let serde_json::Value::String(s) = message {
println!("received: {}", s);
return format!("received: {}", s);
}
}
}
format!("")
}
onebot.run().await?; // 运行 OneBot 实例
Ok(())
}
通过交互命令行输入“私聊消息”的实现:待实现。
关于上面示例中所涉及的类型、函数的更多细节,请等待 Rust doc 的发布。
- 感谢 @richardchien 提出了 OneBot 协议思路
- 感谢 @spacemeowx2 和 @bdbai 为本项目实现提供了一些建议