{"repo":"niuhuan/runbot","free":true,"listed":false,"github":"https://github.com/niuhuan/runbot","clone":"git clone https://github.com/niuhuan/runbot.git","description":"Rust onebot v11 lib","language":"Rust","stars":21,"topics":["bot","qq","mirai","mirai-bot","oicq","qq-protocol","qqbot","rust"],"license":"MPL-2.0","category":"workflow-automation","readme_excerpt":"RUNBOT ====== Rust one bot v11 协议 （ 正向ws / 反向ws ）实现。 - 开箱即用, 使用过程宏定义功能和模块, 轻松实现机器人。 - 具有极高的自由度, 支持模块多层嵌套。 桌面聊天客户端demo: runbot-desktop 命令行机器人demo: runbot-mybot 开始 以下代码来自 runbot/examples/client.rs , 您可以直接跟踪查看。 - 您可以clone项目并运行 cargo run --example client 运行正向WS事例 - 您可以clone项目并运行 cargo run --example server 运行反向WS事例 0. 引入依赖 1. 定义事件处理器 2. 连接bot add processor 的功能或模块会依次调用, 直至返回true或者返回Error, 会停止链路. 关闭bot 指南 发送消息以及消息链 (文字以及图片) 确保消息发送成功、获取消息ID、撤回消息 反向WS 机器人命令 - 使用 #[processor(command = \"...\")] 定义命令 - 必须以 bot ctx: Arc , message: &Message 开头 - 中括号匹配结尾需要为冒号和英文字符 - {:n} 会截从文本开始截取文字 规则为 \\d+(\\.\\d+)? , 截取下的文本以及剩余文本会被trim space - {:s} 开始截取文字 规则为 \\W+ , 截取下的文本以及剩余文本会被trim space - {:e} impl take [\\W\\w]+ , 截取下的文本以及剩余文本会被trim space - 如果需要赋值给变量, 那么在冒号前加入变量名 {name:s} , 最后应用 let some = From::str(截取到的内容), 若成功转换则 赋值name给 - {}? {}+ {} : 括号结束的后一位特殊符号分别代表: 可选,至少重复1次,重复0或者多次 - ?结尾要使用Option类型当参数, +和 需要使用Vec当作参数 同样会应用FromStr - [] 表示文字枚举, 使用 分割, 同样在前面加入变量名 [name:] 可以赋值给变量, 支持 + 和 和 ? - Tips: - 如果@不是全体成员可以映射成数字类型 - {:s}+ 会一直匹配到结束, 因为数字型属于字符串 模块 - 声明模块无需定义struct直接定义一个impl。 - name / help / processors 对应着模块的 名称 / 帮助文本 / 模块功能。 - 以上参数可以从module宏中省略, name 和 help 会默认为Struct的名称, processors会默认空数组。 - 可以在impl模块中函数实现trait中的方法, 对函数进行覆盖。 - 模块也是一个功能(processor), 可以嵌套。 - ExampleMod代表直接使用字符串, help()代表调用help方法获取, 多个功能用 + 连接 - 机器人不包含菜单功能, 您可以直接使用 BotContext.processors() 获得所有功能, 自由实现您的菜单, 无论是打印还是绘制图片。 特性 引用: - https://napcat.apifox.cn/ - https://llonebot.apifox.cn/ - https://github.com/botuniverse/onebot-11/blob/master/api/public.md ","default_branch":null,"files":null,"tree":[],"storefront":"/r/niuhuan","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/niuhuan/runbot/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}