插件文档

WARNING

到目前为止,本页上所有插件都只支持 toml 格式的配置文件。

longpolling-client-tgbot

这个插件通过长轮询Telegram Bot API 拉取更新,将更新送入网关中。

配置文件格式

配置项名称 默认配置文件中的值 说明
token (必填) Telegram Bot Token
adapter_name Telegram 适配器名称:如果你开了两个这个插件(如你用两个功能完全相同机器人账号进行负载均衡),可以通过适配器名称来区分
timeout 60 长轮询超时时间
limit 100 长轮询单次拉取的消息上限
channel_uuid 插件用于注册频道的 UUID,可为空

这是一个生产者,它生产的的头为

from to format.api format.version format.method format.protocol
adapter_name telegram-bot-api 4.1 update http

它生产的的体的类型为 APIResponse,其中 Result 为 Update[]

http-client-tgbot

这个插件用于请求 Telegram Bot API

配置文件格式

配置项名称 默认配置文件中的值 说明
token (必填) Telegram Bot Token
adapter_name Telegram 适配器名称:如果你开了两个这个插件(如你用两个功能完全相同机器人账号进行负载均衡),可以通过适配器名称来区分
channel_uuid 插件用于注册频道的 UUID

这是一个消费者,它接受的的头为

from to format.api format.version format.method format.protocol
.* adapter_name telegram-bot-api >=3 apirequest http

它接受的的体的类型为 HTTPRequest

这是一个生产者,它生产的的头为

from to format.api format.version format.method format.protocol
adapter_name 回复的包的 from telegram-bot-api 4.1 apiresponse http

它生产的的体的类型为 APIResponse

websocket-client-cqhttp

这个插件与 CoolQ HTTP API 建立正向 WebSocket 连接, 接收事件上报和进行 API 请求。

配置文件格式

配置项名称 默认配置文件中的值 说明
adapter_name QQ 适配器名称:如果你开了两个这个插件(如你用两个功能完全相同机器人账号进行负载均衡),可以通过适配器名称来区分
channel_uuid 插件用于注册频道的 UUID
cqhttp_access_token CoolQ HTTP API 的 access_token
cqhttp_websocket_addr ws://localhost:6700 CoolQ HTTP API 正向 WebSocket 地址
cqhttp_version 4.5.0 CoolQ HTTP API 版本

这是一个消费者,它接受的的头为

from to format.api format.version format.method format.protocol
.* adapter_name coolq-http-api >=3 apirequest websocket

它接受的的体的类型为 APIRequest

这是一个生产者,它生产的的头为

from to format.api format.version format.method format.protocol
adapter_name coolq-http-api cqhttp_version event websocket

它生产的的体的类型为 Update

这是一个生产者,它生产的的头为

from to format.api format.version format.method format.protocol
adapter_name 回复的包的 from coolq-http-api cqhttp_version apiresponse websocket

它生产的的体的类型为 APIResponse

tgbot-ubm-conv

这个插件能够将包在 telegram-bot-api 格式和 ubm-api 格式之间转换。

配置文件格式

配置项名称 默认配置文件中的值 说明
telegram_adapters Telegram 转换的包可能来自的适配器名(正则表达式)
adapter_name TGBot-UBM-Converter 适配器名称
fetch_file true 是否拉取 file_path 作为 URL
api_response_timeout 5s 拉取 file_pathself 的最长等待时间
channel_uuid 插件用于注册频道的 UUID,可为空

支持转换的格式

from.api from.version from.method from.protocol to.api to.version to.method to.protocol
telegram-bot-api >=3 update http ubm-api 1.0 receive (不限)
ubm-api 1.0 send (不限) telegram-bot-api 4.1 apirequest http

cqhttp-ubm-conv

这个插件能够将包在 coolq-http-api 格式和 ubm-api 格式之间转换。

配置文件格式

配置项名称 默认配置文件中的值 说明
qq_adapters QQ 转换的包可能来自的适配器名(正则表达式)
adapter_name CQHTTP-UBM-Converter 适配器名称
api_response_timeout 5s 拉取 self 的最长等待时间
channel_uuid 插件用于注册频道的 UUID,可为空
cqhttp_version 4.5.0 CoolQ HTTP API 版本

支持转换的格式

from.api from.version from.method from.protocol to.api to.version to.method to.protocol
coolq-http-api >=3 event websocket ubm-api 1.0 receive (不限)
ubm-api 1.0 send (不限) coolq-http-api 4.5.0 apirequest websocket

TIP

头中定义的格式与体中数据结构的关系可以通过查询格式对照表找到。

jsonrpc-server-any

这个插件提供一个基于 TCP 的 JSON RPC 服务。用户可以通过这个插件建立频道,自定义路由规则,发送和接收任意格式的包。

配置文件格式

配置项名称 默认配置文件中的值 说明
port 4700 服务监听端口
channel_lifetime 2h 用户断线后频道最长保存时间
garbage_collection_interval 5m 垃圾回收检查周期

Broker.InitChannel

创建频道。

请求参数

字段名 数据类型 说明
uuid string 频道 UUID
producer bool 是否建立生产者频道
consumer bool 是否建立消费者频道
accept RoutingRule[] 消费者频道接受的路由规则(只在 consumer 为 true 时有效)

响应内容

字段名 数据类型 说明
uuid string 建立的频道的 UUID(如果请求的 UUID 不合法,将会生成一个)
code int 响应码

Broker.Send

发送包。

请求参数

字段名 数据类型 说明
uuid string 频道 UUID
packet Packet 要发送的包

响应内容

字段名 数据类型 说明
code int 响应码

Broker.GetUpdates

通过长轮询接收包。

请求参数

字段名 数据类型 说明
uuid string 频道 UUID
timeout string 没有收到消息时的最大超时时长,例如:"5s"
limit int 单次请求最多返回的包数量(1-100)

响应内容

字段名 数据类型 说明
code int 响应码
packets Packet[]

响应码

响应码 说明
10000 收到长轮询更新包
10001 成功建立了频道
10002 包发送成功
10004 长轮询没有收到消息超时返回
10040 长轮询超时时长不合法
10042 建立频道时 producer 和 consumer 都是 false
10044 要发往/接收的频道不存在
10048 要发往的频道不是一个生产者

客户端 SDK

语言 包管理器 SDK 名称 示例代码
Go go github.com/projectriri/bot-gateway/adapters/jsonrpc-server-any/client/golang main.go
Python pip3 ldbg-jsonrpc main.py

yohane

这个插件接收 ubm-api 格式的包,将符合命令格式要求的消息解析为命令,并送回到网关中。

命令和命令参数

命令和命令参数之间以 Unicode 空白字符 分隔。 使用引号('"`)引起来的内容不会被断开。 转义字符 \ 后面所接的字符会直接作为命令或命令参数的内容,失去其特殊含义(如空格、引号、\ 本身等)。

设置命令前缀和响应模式

yohane 生产的命令格式如下,

{
  "api": "cmd",
  "version": "1.0",
  "method":   "cmd",
  "protocol": "{\"command_prefix\":[\"/\"],\"response_mode\":6}"
}

接收方需要通过接收格式的 protocol 字段来设置命令前缀和响应模式,protocol 是一个 JSON 字符串。

命令前缀

命令前缀 command_prefix 是一个字符串数组。 命令解析器工作时,对于一条图文消息,会首先在 command_prefix 中从前向后依次匹配。 如果一条消息的前缀匹配 command_prefix 中的元素,它会被当作一条命令,同时命令前缀会被删除。

TIP

空的 command_prefix 数组或者数组中包含空字符串将导致所有图文消息被当作命令。

响应模式

5 4 3 2 1
名称 args_str args_txt args cmd_str cmd

response_mode 是一个范围在 0~31 的整数,它的各位代表启用 CMD 中的各项。 如果某位设置为 1 那么插件生产的命令报文中则会有此项。 例如设置 response_mode 为 26,即 11010,则表示启用 args_str、args_txt、cmd_str 三项。

接收和发送包说明

这是一个消费者,它接受的的头为

from to format.api format.version format.method format.protocol
.* .* ubm-api 1.0 receive

它接受的的体的类型为 UBM

这是一个生产者,它生产的的头为

from to format.api format.version format.method format.protocol
原始消息包的 from 原始消息包的 to cmd 1.0 cmd 路由接收方指定的 protocol

它生产的的体的类型为 CMD

配置文件格式

配置项名称 默认配置文件中的值 说明
command_prefix ["/"] 所有可能的命令前缀,是一个字符串数组。
channel_uuid 插件用于注册频道的 UUID,可为空
yohane_command_prefix "!!" 插件本身监听的命令前缀(aliasunalias 命令)
command_alias_path "data/command_alias.json" 用于持久化命令别名表的文件存储位置

设置命令别名

TIP

下文都按照 yohane_command_prefix 为默认值来描述,如果你修改了 yohane_command_prefix, 你自行替换命令前缀 !! 为其它。

设置 sayecho 的别名(仅在当前聊天内生效)

!!alias say echo

设置所有匹配正则 say 的消息为 echo 的别名(仅在当前聊天内生效)

!!alias -e say echo

设置 sayecho 的别名(在所有聊天内生效)

!!alias -g say echo

移除当前聊天的别名 say

!!unalias say

移除当前聊天的正则别名 ^say

!!unalias -e say

移除全局别名 say

!!unalias -g say