在安装过程中可能会出现各种报错,如果你遇到了问题,请自行查询相关资料,切忌全程复制粘贴,最好可以理解后再操作
1 前言
Chatbridge是MCDR的插件,用于同步不同服务器之间的消息(以下简称CB)。
2 CB的配置
请确保服务端已安装MCDR。
要运行CB,请执行以下命令来安装依赖:
1 | pip3 install pycryptodome |
若出现以下问题,请查阅虚拟环境相关资料
1 | ❯ pip3 install json |
假设有两个服务器,一个为生存服,一个为创造服。
此处需要三个screen来分别运行三个服务端,分别是CB服务端、生存服务端、创造服务端。
你可以把CB服务端和创造服务端放在一个服务器里来运行,以节省资源。
2.1 CB服务端的配置
找到ChatBridge.pyz,丢进单独的文件夹内。
cd到该目录,运行:
1 | python3 ChatBridge.pyz server |
运行后会报错并退出,同时该目录下会生成ChatBridge_server.json
。修改该文件配置如下:
1 | { |
解释:
"aes_key": "ThisIstheSecret"
:加密密钥,没特殊用途时保持默认。"hostname": "0.0.0.0"
:本地地址,通常无需更改。"port": 8124
:服务端端口号。"clients"
:需要同步消息的服务器配置,包括名称和密码。"show_chat": true
:是否在控制台显示聊天信息。"log_chat": true
:是否记录聊天信息。
修改完成后重新运行:
1 | python3 ChatBridge.pyz server |
正常运行输出如下:
1 | AES Key = ThisIstheSecret |
把这个进程丢screen里边防止关闭终端时服务终止。至此服务端的配置完成。
2.2 客户端的配置
复制一份ChatBridge.pyz丢MCDR的插件目录里。
第一次运行服务端后会在 /mcdr安装目录/config/chatbridge/
中生成ChatBridge_client.json
。
修改创造服配置如下:
1 | { |
解释:
"aes_key": "ThisIstheSecret"
:与服务端一致的加密密钥。"name": "创造服"
:客户端的服务器名称。"password": "Creative"
:与服务端一致的密码。"server_hostname": "0.0.0.0"
:此处填生存服的IP。如果生存服和创造服在同一台服务器上,填0.0.0.0
。"server_port": 8124
:服务端的端口号。
修改生存服配置如下:
1 | { |
"aes_key"
、"server_port"
:与创造服配置一样即可。
如果 "name"
参数使用中文,请用UTF-8
编码保存,否则会乱码。
重启服务端或重载MCDR的config,配置正式完成,现在可以实现创造服与生存服消息互通了。
3 QQ机器人的配置
Go-CQhhtp协议库时代已经过去,想要追求稳定的QQ机器人服务,参见 4小节
QQ消息机器人需要两个screen来运行,分别是CBQQ端、go-cqhttp端,实测占用资源极低,可以全部放在一个服务器里。
你需要准备以下材料:
- QQ小号
- go-cqhttp文件 Github下载,解压后得到没有后缀的程序go-cqhttp。
3.1 配置go-cqhttp服务端
将go-cqhttp文件丢一个单独的文件夹内,运行:
1 | ./go-cqhttp |
出现以下文本:
1 | 未找到配置文件,正在为您生成配置文件中! |
输入02
,开启HTTP通信与正向Websocket通信。程序会自动退出并生成config.yml
,编辑如下项:
1 | uin: 123456 |
解释:
uin: 123456
:123456换成你的QQ小号。password: '******'
:******替换为密码,密码****为空时使用扫码登录。
此处大概率会登录失败,提示密码错误或者网络环境复杂,解决方案如下:
3.1.1 go-cqhttp密码正确但仍登录失败的解决方案
下载Windows版本的go-cqhttp,Github下载,放到自己电脑里,并将配置完成的
config.yml
复制到同目录下。
shift+右键点击该文件夹空白区域打开powershell,输入:
1 | ./go-cqhttp |
开始登录,但仍提示登录失败,注意到目录下生成device.json
文件,打开device.json
,把"protocol"
项参数从5改成2:
1 | { |
再次尝试登录,成功后将生成的session.token
和device.json
丢服务器里覆盖原文件。
在服务器上重新运行go-cqhttp:
1 | ./go-cqhttp |
此时大概率登录成功,丢screen挂着即可。由于腾讯风控系统更改频率快,此方法在将来可能失效,如若上述步骤正确但仍无法登录,请自行谷歌解决方法。
3.2 配置CBQQ端
前往步骤2.1中存放ChatBridge.pyz的目录,运行:
1 | python3 ChatBridge.pyz cqhttp_bot |
与2.1配置时一样会崩溃并生成ChatBridge_CQHttp.json
文件,修改ChatBridge_CQHttp.json
如下配置:
1 | { |
解释:
"name": "QQChannel"
:与CB服务端中name
一致。"server_hostname": "127.0.0.1"
:如果CBQQ和CB在同一服务器上运行,此项不动,如不在一个服务器上运行,输入CB服务器的IP地址。"react_group_id": 123456
:QQ群ID,123456换成需要同步消息的QQ群。
保存后再次运行:
1 | python3 ChatBridge.pyz cqhttp_bot |
丢screen里边,此时QQ群能正常收到MC服务器中发送的消息。
CB的作者默认需要在MC中使用!!qq <消息>
来发送至QQ,在QQ中使用!!mc <消息>
来发送至MC。
如果想同步全部消息,请使用这个fork版本。
4. 补充内容:使用更好的QQ机器人服务
如果你的QQ机器人频繁报Code:45或是频繁触发封控掉登陆甚至于被封号,请采用下面的方案 若你的服务能正常运行,可以忽略这一小节
Go-CQhttp协议库如今已经停止维护,目前最好的解决方案是替换掉go-cqhttp,只要同样可以提供Onebot服务的方案就能完美对接Chatbridge
根据替代方案LiteloaderQQNT的提议,此处不给出具体的部署方案,如有需要请自行研究
核心思路是用LiteloaderQQNT-LLOnebot替换掉go-cqhttp,3.2中配置不变,替换掉3.1中提供的服务即可
相关链接:
请不要在 QQ 官方群聊和任何影响力较大的简中互联网平台(包括但不限于: 哔哩哔哩,微博,知乎,抖音等)发布和讨论任何与本插件存在相关性的信息
5.总结
如果配置正常,将会有以下screen运行:
- MC生存服务端
- MC创造服务端
- CB服务端
- CBqq服务端
- go-cqhttp或是其他提供OnebotAPI的服务端
如果全部功能都正常运行,那么恭喜你,全部配置已完成。