使用教程

功能简介

小恶魔机器人网关能够将不同即时通讯平台的 API 转换为统一的 API, 从而使得机器人开发者无须关心多个平台的 API 适配, 用统一的 API 来调用不同平台,从而更加专注于业务代码。

小恶魔机器人网关同时拥有可靠的消息路由功能, 你的机器人可以分为多个程序,使用不同的语言编写, 而无须定义不同程序之间的调用协议:它们可以统一接入网关来实现通信。

与其他解决方案对比

Bot-SDK

Bot-SDK 是另一个跨聊天平台的 Bot 解决方案。小恶魔机器人网关与 Bot-SDK 相比:

  • Bot-SDK 的接口在 SDK 上层封装,其本身的开发成本相比小恶魔机器人网关更低。
  • Bot-SDK 使用时可以直接调用 SDK 的相关实例和方法,使用起来更方便。
  • 要使用 Bot-SDK,用户必须使用 Go 语言开发应用。而小恶魔机器人网关是基于协议的, 用户可以使用任何语言开发。得益于可扩展的插件系统,小恶魔机器人网关能够支持 RPC、HTTP、WebSocket 等多种通信协议。
  • 小恶魔机器人网关在允许用户用一套 API 服务多个聊天平台的同时,还有路由功能。 即当你有多个 Bot 应用程序时,他们可以接入网关,使用共同的聊天平台账号。 而使用 Bot-SDK 你要为每个应用分配一组聊天平台账号。同时借助小恶魔机器人网关你也可以实现 Bot 应用程序之间的通信。

Telegram Bot Gateway

Telegram Bot Gateway 是专门针对 Telegram Bot API 的多个 Bot 使用同一账号的解决方案。 小恶魔机器人网关与 Telegram Bot Gateway 相比:

  • Telegram Bot Gateway 是专门针对 Telegram 多个 Bot 使用同一账号的应用情景设计的: 例如当用户使用的命令多个 Bot 都能够响应时,可以弹出键盘询问用户想要发送给哪个 Bot; 而小恶魔机器人网关虽然具备消息路由功能,却并不是为了让多个互不相关的 Bot 使用同一账号设计的。 小恶魔机器人网关设计上是为了使 Bot 应用程序之间能够紧密联系和配合,共同提供作为 1 个 Bot 的功能。
  • 小恶魔机器人网关在消息路由之外还具备同时服务多个聊天平台,以及进行 API 转换的功能。
  • 由于 Telegram Bot Gateway 设计上可以作为一个透明代理,小恶魔机器人网关可以在 Telegram Bot Gateway 下运行。

下载安装

从源代码编译

WARNING

请使用 go >= 1.10

  1. 克隆源码仓库
  2. 编辑 plugins.txt,加入所有想要的插件,删除不想要的插件
  3. make

配置文件

根配置文件

根配置文件应命名为 config.toml 放置在程序运行目录下。

配置项名称 默认配置文件中的值 说明
buffer_size 65536 缓冲区大小:单个频道消息最大缓存条数,可以根据内存大小修改
log_level info 日志等级,可选 debug、info、warn、error、fatal
plugin_dir lib 插件加载的目录
plugin_conf_dir conf.d 插件配置文件加载的目录
enable_little_daemon true 是否启用小恶魔
little_daemon_name LittleDaemon 小恶魔在网关中的适配器名称
little_daemon_channel_uuid 小恶魔用于注册频道的 UUID,可为空

“小恶魔”是用来报告网关状态的内置机器人。 如果小恶魔被启用,当网关收到命令 pingstatus 时,会报告网关当前状态。 启用小恶魔你需要在程序运行目录放置 locale.yml,程序源码中包含一个该文件的示例

TIP

要让小恶魔正常工作你必须启用插件 yohane,并根据需要正确配置命令前缀。

插件配置文件

插件配置文件应命名为“插件文件名.配置扩展名”,放置在 plugin_conf_dir 目录下: 例如某插件 chajian.so 接受格式为 toml 的配置,那么配置将从 plugin_conf_dir 目录下的 chajian.toml 加载。

插件配置文件的定义见插件文档

插件列表

客户型插件表示插件是对外表现为一个客户端,这类插件一启动就向相应的服务器发起连接, 从服务器接收消息,向服务器发送消息。

服务型插件表示插件对外表现为一个服务端,这类插件启动时将启动一个服务程序, 外界程序可以通过连接到这个插件来向网关发送和接收消息。

自耦型插件表示插件不对外通信,它从网关接收消息,处理后直接送回网关。

插件名 类型 功能描述
longpolling-client-tgbot 客户型 从 Telegram Bot API 以长轮询形式拉取更新
http-client-tgbot 客户型 调用 Telegram Bot API 发送消息
websocket-client-cqhttp 客户型 从 CoolQ HTTP API 正向 WebSocket 连接上接收事件上报和 API 调用
jsonrpc-server-any 服务型 提供 JSON RPC 服务
tgbot-ubm-conv 自耦型 将消息在 Telegram-Bot-APIUBM-API 两种格式之间转换
cqhttp-ubm-conv 自耦型 将消息在 CoolQ-HTTP-APIUBM-API 两种格式之间转换
yohane 自耦型 命令解析器