🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 脚本`Script` `Script` 脚本并没有提供太多开箱即用的脚本,除了一个`help`脚本,其他的需要开发者根据自己的需求去开发。 **help脚本用法**: `!help <script>`:查看脚本帮助信息,当命令不带脚本名称时会列出所有脚本帮助信息,带脚本名称只列出此脚本的帮助信息 ## 编写脚本 > 在框架下的 `scripts` 文件夹下有复杂应用案例,以下为脚本的简答介绍 ### hello world ```go package main import "github.com/ghaoo/rboot" func init() { // 注册脚本 rboot.RegisterScripts(`hello`, rboot.Script{ // 脚本处理函数 Action: func(bot *rboot.Robot, incoming *rboot.Message) []*rboot.Message { return rboot.NewMessages("Hello World!") }, Ruleset: map[string]string{`hello`: `^hello`}, // 脚本规则集 Usage: "hello`: say hello world", Description: `example 'Hello World' script for rboot`, }) } ``` 这就是一个简单的 `hello world` 脚本,在我们安装中创建的项目下创建一个 `hello.go` 文件,并将上面的代码复制进去,重新编译运行,输入 `hello` 试试看。 ### 脚本剖析 **rboot.RegisterScripts** `RegisterScripts` 方法是用来注册脚本的,它需要两个参数,脚本名称和一个包含脚本信息的`rboot.Script` **rboot.Script** `Script`定义了一个完整的脚本结构,具体如下: ```go type Script struct { Action SetupFunc // 脚本解析函数 Ruleset map[string]string // 脚本规则集合 Usage string // 脚本帮助信息 Description string // 脚本简介 } ``` **Ruleset** 脚本规则集合,规则匹配器支持脚本包含多条匹配规则,一个脚本可以定义一系列规则,我们可以把一个脚本扩展成一类功能的脚本集。 **SetupFunc** `SetupFunc` 是脚本的解析函数,它有两个参数,Robot实体`*Robot` 和 传入消息(incoming)`*Message`,输出为 `[]*Message`,在此方法里,我们可以利用Robot实体和传入消息实现我们想要的功能。 输出消息为 `[]*Message`,方便一次发送多条消息。 在消息转接器将消息(Incoming Message)发送给机器人,并经过规则匹配器找到匹配的脚本后,机器人会把消息发送给脚本处理函数,并将脚本的`规则名称`和`正则匹配参数`一并通过`Header`附加到消息中。 `规则名称`和`正则匹配参数`的获取方法为: ```go ... ... func setup(bot *rboot.Robot, in *rboot.Message) []*rboot.Message { rule := in.Header.Get("rule") // 规则名称 args := in.Header["args"] // 正则匹配参数 ... ... } ``` **Usage**:脚本的使用说明 **Description**:脚本简介 ## 发送消息 发送消息除了在脚本函数中返回消息,也可以使用 `SendText` 和 `Outgoing` 方法 使用方法: ```go // SendText 为发送文本消息,需指定接收人 bot.SendText("Hello World!", "zhangsan") // Outgoing 为发送消息结构体 msg := &rboot.Message{...} bot.Outgoing(msg) ```