Skip to content

Rust LibOneBot 可以帮助 OneBot 实现者快速在新的聊天机器人平台实现 OneBot v12 接口标准。

License

Notifications You must be signed in to change notification settings

botuniverse/rust-libonebot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

(WIP) Rust LibOneBot libonebot

onebot-badge ci-badge mit-badge

目前 API 仍在重构中,尚不稳定,随时可能发生不兼容的变化

Rust LibOneBot 可以帮助 OneBot 实现者快速在新的聊天机器人平台实现 OneBot v12 接口标准。

具体而言,Rust LibOneBot 通过 OneBotConfigActionEvent 等类型的抽象,让 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 为本项目实现提供了一些建议

About

Rust LibOneBot 可以帮助 OneBot 实现者快速在新的聊天机器人平台实现 OneBot v12 接口标准。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages