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