rboot
是一个使用 golang
写的,简单、高效的聊天机器人框架,易于扩展,它可以工作在不同的聊天服务上,并通过扩展脚本可实现 聊天
、工作助手
、服务监控
、警报触发
等功能。
golang v1.13+
$ go get github.com/ghaoo/rboot
$ cd $GOPATH/github.com/ghaoo/rboot/robot
$ go build
$ ./robot
消息转接器是用来监听消息的传入和传出,通过消息转接器可以将聊天客户端的消息发送到机器人,经过脚本处理后返回消息发送给客户端。
rboot
提供了 命令行cli
微信网页版
企业微信
钉钉
倍洽
聊天转接器的简单实现。
Plugin
并没有提供太多开箱即用的插件,除了一个help
插件,其他的需要开发者根据自己的需求去开发。
help插件用法:
!help <plugin>
:查看插件帮助信息,当命令不带插件名称时会列出所有插件帮助信息,带插件名称只列出此插件的帮助信息。
在文件夹
robot/plugins
下有简单的插件案例,开发者可查看插件编写方法。
Plugin
不仅可以使用golang编写插件,也可以使用脚本插件来执行系统命令或使用脚本语言编写的插件文件。
脚本插件是用来解析脚本语言的Plugin
插件,它是rboot插件的一个扩展。通过yaml
配置文件来执行系统命令或脚本。
因为脚本插件是建立在
Plugin
基础之上的,每个脚本都会被注册到Plugin
之中,所以确保插件之间名称不要重叠,否则可能先注册的插件会被后注册的插件替换!
PLUGIN_DIR
:脚本插件配置文件存放的文件夹,若不配置默认为scripts
我们可以通过创建一个yaml
文件来创建一个脚本插件,通过文件中的配置选项来实现对脚本插件的配置。比如我们创建一个 hello.yml
文件,它的内容如下:
name: hello
version: 0.1.0
ruleset:
hello: "^hello"
usage:
hi: echo hello world and 你好
description: 脚本插件示例
command:
-
cmd:
- echo hi
- echo hello world
-
dir: plugins
cmd:
- echo 你好
这个插件使用的是系统命令 echo
。它的意思是:当我们输入“hello”后,脚本会返回 hi
,hello world
和 你好
三条信息。
配置中各个字段的含义:
配置 | 必须 | 意义 |
---|---|---|
name | 是 | 插件名称 |
ruleset | 是 | 规则集合 |
version | 否 | 插件版本 |
usage | 否 | 插件用法 |
description | 否 | 插件简介 |
command | 是 | 插件命令集 |
--- | --- | --- |
dir | 否 | 命令执行文件夹 |
cmd | 是 | 插件命令 |
command
可配置多个命令集,执行顺序为从上到下依次执行
cmd
可配置多条命令,执行顺序为从上到下依次执行
脚本插件支持系统命令
和脚本语言
。系统命令模式如上面的hello.yml
,只需在文件中填写文件夹和系统命令,当你发出命令后,机器人就会从上到下依次执行。
脚本语言是建立在系统命令模式之上的执行方式,我们可以使用系统命令调用语言脚本,从而执行比较复杂的脚本。比如我们使用python输出“hello robot”。
我们的python脚本如下:
#!/usr/bin/env python
print("Hello, robot! i am a python script")
我们的配置文件如下:
name: pyscript
version: 0.1.0
ruleset:
py: "^hello python"
usage:
py: execute python script
description: python插件示例
command:
dir: script
cmd:
- ./hello.py
当我们输入 hello python
时,机器人会调用 hello.py
脚本,脚本输出"Hello, robot! i am a python script"并通过机器人展示给我们。
在不同操作系统下请确认
目录分隔符
是否符合当前系统设置。windows
下请使用\
unix
下请使用/