在多个群组间传话的机器人。原名为「qq-tg-irc」。
目前支援 QQ、Telegram、IRC 和 Discord(试验中)四种群组互联。
- 根据实际需要准备机器人账号。(具体方法见后面)
- 安装 Node.js,版本要求:>=7.x。
- 下载机器人本体。
- 执行:
npm install
node main.js
- 如果担心 crash 的话请直接回圈,例如
while true; do node main.js; done
,或者:
:a
node main.js
goto a
- 根据实际需要修改 config.example.js,并改名为 config.js。
- QQ 群格式
qq/QQ 群号
;Telegram 群格式telegram/一串数字
(该数字可透过/thisgroupid
取得,后面有说明,而且请注意该数字是负数);IRC 频道格式irc/#频道名
,别忘了#
;Discord 频道格式discord/频道 ID
。
- 在正式启用互联之前,建议提前注册一个 QQ 小号,挂机挂到一定等级,并往钱包里塞一点钱,以减小被腾讯封杀的可能性。不过从实践情况来看,只有一颗星或不塞钱也无妨。
- 下载酷 Q,启动一下以便完成安装。
- 下载 me.cqp.ishisashi.cqsocketapi.cpk,并放到酷 Q 的 app 目录中。
- 再次启动酷 Q,登入机器人账号,然后在插件设定中启用「CoolQ Socket API (Node.js)」。
- 根据实际需要修改 badwords.example.js,并改名为 badwords.js。「敏感词」功能仅对 QQ 机器人有效。
- 请记得定期清除快取。
- 因为目前没做监控功能,所以还请自己盯一下酷 Q 的状态。
注意:
- 本程式需要酷 Q Air/Pro 和这个专门的 cqsocketapi 才能收发 QQ 群讯息。
- 执行程式时,酷 Q 会有很大机率要求你开启 QQ 的设备锁,因此注册小号时请不要乱填电话号。
- 酷 Q 模拟的是安卓 QQ,而且 QQ 不允许多个手机同时登入。如果已经开启酷 Q,而且需要直接操作机器人账号,请用电脑登入。
- 酷 Q 是私有软体,和我没关系。
- 酷 Q 可以透过 wine 在 Linux/Mac 系统中执行,可以参考这篇教程进行设定,不过该教程不再维护,请参见教程页面上方到酷 Q 的 Docker 版本的使用方法的连接。Docker 版可参照这里与这里解决到酷 Q 部分的 cqsocketapi 通讯的问题。
@BotFather,与其交互,按照荧幕提示进行操作,建立一个机器人账号。设定完成后,BotFather 会给一个 Token,你需要把这个 Token 填到 config.js 中。
之后请记得执行 /setprivacy
命令,将机器人的 Privacy 设为 DISABLED,以便于让它看到群组内的讯息。
在刚开始的时候,可以保留 config.js 之内「plugins」中的「groupid-tg」,然后执行程式,并且在群组中输入 /thisgroupid
,这样机器人会自动给出群组 ID 以便设定互联。如果没看懂前面那句话,你也可以把 @combot 拉进群中,然后输入 /stat
,看机器人给出的数字是多少。注意,数字是负数。
IRC 没有什么特别之处。如果你有 Cloak,请在 config.js 中输入正确的 userName、sasl_password,并将 sasl 设为 true。
进入 Discord Developer Portal,创建 Application。在 Bot 页面中 Add Bot。将 Token 填到 config.js 中。
频道 ID 可以在网页版之 URL 看到,最后面的那串神秘数字便是。
- 如果把 config.js 中的
paeeye
设为//
,那么在讯息之前加入//
(例如「//隐藏」)可防止被其他群组看见。 - 如果允许 IRC 接受命令(plugins 中有「irccommand」),那么可在 Telegram 和 QQ 中使用
/command 命令
。该命令并非 IRC 命令,而是为配合 IRC 频道中的机器人而设。 - 如果允许查询 IRC 的情况(plugins 中有「ircquery」),那么可在 Telegram 和 QQ 中使用
/names
(取得在线用户清单)、/whois 昵称
(whois)和/topic
(取得 Topic)。 - 「敏感词」功能仅在 QQ 有效,而且仅对机器人自己「张嘴」有效。启用之后,程式会自动把敏感词清单中的词语转为「*」,可使用正规表示式。具体的政治敏感词汇可参照中文维基百科「中华人民共和国审查辞汇列表」条目制作,本专案不再提供。详情见 badwords.example.js。
以下各功能的设定方法均为改 config.js。