在多个群组间传话的机器人。原名为“qq-tg-irc”。
该仓库版本不支持QQ。如需QQ互联,参见https://github.com/Joch2520/LilyWhiteBot
2020年7月22日,晨风机器人作者被警方喝茶,随后酷Q作者迫于压力跑路。本程序QQ部分依赖酷Q运行,因此也不再支持QQ传话,直到有其他解决方案为止。
QQ、Telegram、IRC、Discord 等多组聊天群之间互联。- 可根据需要配置单向互联,或者将同一聊天软件的多个分群互联到一起。
- 支持图片转发。如不能发送图片(IRC),程序可将图片上传到图床并提供图片链接。
- 由于 QQ 发言借助酷 Q 实现,在 QQ 发送图片需购买 Pro 授权。
- 支持自定义转发消息样式。
- 支持 Docker 部署。
- 可支持扩展(备注:目前接口尚不完善,请尽量避免自己写插件)。
由于全新的 QQ 号无法直接进群,故建议提前两周注册 QQ 账号,并保持在线。尽量实名注册并绑定手机,以免在触发验证时无法验证账号。
- 与 @BotFather 私聊,输入
/newbot
命令,按照屏幕指示进行操作,创建机器人账号。 - 记录 BotFather 给出的 Token。
- 输入
/setprivacy
命令,根据屏幕提示选择机器人账号,然后选择Disable
,关闭隐私模式。
IRC 不需要注册。为了提高安全性,您可以采取注册 Nick、增加 Cloak 等措施,需要的话请自行搜索教程。
- 进入 Discord Developer Portal,创建 Application。创建完成后记录 CLIENT ID。
- 进入 Bot 页面,点击 Add Bot,创建机器人。创建成功后记录 Token。
- 进入 OAuth2 页面,往下翻到“OAuth2 URL Generator”,找到 SCOPES 并勾选 bot,然后再继续勾选 BOT PERMISSIONS 中的权限(例如 Administrator),系统会生成一个链接。访问生成的链接,按照屏幕提示将机器人拉入到你的服务器与频道中。
推荐在 Docker 中运行互联机器人程序。具体配置方法见 Docker说明。
- 下载酷 Q。下载链接:Air 版、Pro 版
- 如果您使用 Windows 系统,可直接解压运行。预算充足的话甚至可以酷 Q 在 Windows 服务器上跑,而 LilyWhiteBot 在另一台 Linux 服务器上跑。
- 如果您使用 Linux 系统,需安装 wine、任意一个桌面环境(至少要把 X11 装好)与 x11vnc 等远程连接软件。由于这些软件配置麻烦,且容易“污染环境”,建议使用 Docker(docker-wine-coolq),免得自己配置。
- 解压。为方便叙述,假设解压到了
~/coolq
。 - 下载CoolQ HTTP API。将 cpk 文件放置在
~/coolq/app
中。 - 建立
~/coolq/app/io.github.richardchien.coolqhttpapi
目录,并在其中放入config.json
。内容大体如下(需根据实际情况修改):
{
"general": {
"host": "0.0.0.0",
"use_http": true,
"use_ws": false,
"use_ws_reverse": false,
"post_url": "http://localhost:11234",
"log_level": "info",
"show_log_console": false,
"disable_coolq_log": false,
"serve_data_files": true,
"access_token": "随便一个字符串",
"secret": "随便一个字符串"
},
"机器人的QQ号": {
"port": 5700
}
}
- 启动酷 Q。登录自己的 QQ,然后在“插件管理”中启用 CoolQ HTTP API 插件。
- 安装 Node.js,最小版本 12。
- 下载代码
git clone https://github.com/infnan/LilyWhiteBot
- 修改配置文件:
- 将 config.example.yml 改名为 config.yml,按照配置文件中的提示填入参数。默认情况下各机器人都是关闭的,您需要将需要的机器人的
disabled
改为false
。 - 为避免群友乱说话导致封号,本程序有敏感词机制。需将 badwords.example.yml 改名为 badwords.yml。但是请注意,本程序未提供具体词库,且过滤机制较为简单,词库太大的话会影响性能。
- 将 config.example.yml 改名为 config.yml,按照配置文件中的提示填入参数。默认情况下各机器人都是关闭的,您需要将需要的机器人的
- 运行
npm install
node main.js
- 检查互联机器人是否正常运行。
如果已正常工作,建议使用 forever 启动机器人,保证程序随时运行。
如何获取群组ID?
- IRC、QQ:分别为频道名称(以
#
开头)和 QQ 群号码。在 LilyWhiteBot 配置文件中分别为irc/#频道名称
与qq/群号
,例如irc/#test
、qq/12345678
。 - Telegram:将 @GroupIDbot 拉入到您的聊天群,然后输入
/id
,机器人会返回聊天群的 ID。这个 ID 是一个负数,在 LilyWhiteBot 配置文件中需要写成类似telegram/-1234567890
的格式。 - Discord:进入 Discord 的用户设置(User Settings),找到 Appearance,启用“Enable Developer Mode”选项。然后右击聊天频道,在弹出菜单中选择“Copy ID”。在 LilyWhiteBot 配置文件中需要写成类似
discord/1234567890
的格式。
如果您从其他版本升级,请注意以下三点:
- Node.js 最低版本为 12。
- 配置文件格式由 json 换成了 yaml。json 配置文件仍然可用,但您会收到一条警告信息。
- 程序不再支持酷 Q 的 me.cqp.ishisashi.cqsocketapi.cpk 插件(尽管还能继续使用,然而不保证效果),建议尽快更换成 CoolQ HTTP API。
如需使用新插件,请按照以下形式重新设置:
QQ:
# 以下参数用于与 CoolQ HTTP API 插件连接,需要和其设置一致
apiRoot: "http://127.0.0.1:5700/"
accessToken: "123"
secret: "abc"
listen: # 用于接收消息,需要同步修改 CoolQ HTTP API 插件中 post_url 参数
host: "127.0.0.1" # 使用Docker时请设置成0.0.0.0
port: 11234
# ...
CoolQ HTTP API 也需要调整对应设置(详见此页),例如:
{
"host": "0.0.0.0", // 使用Docker时请设置成0.0.0.0
"post_url": "http://127.0.0.1:11234", // 与上面 listen 保持一致
"serve_data_files": true, // 需要设置为 true 否则无法获取图片消息内容
...
}
不修改设置的话则会继续使用旧的 cqsocketapi 插件。
为方便容器化,以新接口形式配置之后,程序不再直接访问酷 Q 目录,任何指定酷 Q 目录的设置都将失效(例如 servemedia 部分的 coolqCache 参数)。
以下各功能的设定方法均为改 config.yml。接口与功能可能会有所调整。详细内容参见插件。