前言
你是否在群里见到过一呼必应的QQ群机器人,是否看到过能在群里跟群友交流的Bot。本文章结合最近博主在Linux上部署Mirai及ChatGPT的经历,为后人安装指北及坑点避免。
需要准备的东西
- 一台Linux设备(我使用的是腾讯轻量云,系统为centos);
- 本文文末提及的各种项目;
- 一颗爱动脑筋的脑子。
部署Mirai
使用ssh工具(我使用的是FinalShell)登录至Linux服务器上。若是第一次登录,大概率需要在服务器提供商管理界面先更改密码,再使用新密码和提供的公网IP登录。
在mirai-console-loader安装器上下载合适的安装器版本到自己的Linux上(两种方法,一种为本地下载通过ssh上传、一种直接使用wget命令下载至Linux上)。
使用
./mcl-installer-1.0.7-linux-amd64-musl
命令执行安装器一键安装。(mcl-installer-1.0.7-linux-amd64-musl为本目录下你上传的安装器的名字)途中先会询问你是否安装java(如果已经安装过可以选n不安装,没有就键入y),其余不清楚的内容一路回车至结束即可。==提示权限不够先使用
chmod +x mcl-installer-1.0.7-linux-amd64-musl
赋予文件执行权限==安装成功后出现Use "./mcl" to start MCL.表示安装成功,按下回车退出安装界面,刷新会看见目录下多了几个mcl文件。按照提示使用
./mcl
来第一次运行mirai加载一些依赖及库文件安装。下载完成后按住
Ctrl
+C
退出当前进程,寻找到plugins目录,这个是插件目录,后缀为mirai.jar或者mirai2.jar为插件,在插件目录下放置登录QQ机器人账号需要用到的插件fix-protocol-version,具体步骤参照步骤2,将其放置在目录中。- 参照Aoki在手机上使用软件登录你的账号(如果出现235及238错误可以在真实QQ客户端登录后在安全设置变动几下登录保护什么的再尝试),将登录后的压缩包上传至linux解压到
bots
文件夹下(即bots下一个以QQ机器人QQ号命名的文件夹)。 重新回到上级目录
cd /usr/local/mirai/
,再次使用./mcl
命令启动mirai-consol-loader。启动后出现 > ,此时还未登录机器人账号。可以使用命令/login <账号> <密码>
登录机器人(如果按照以上配置部署好了插件及bots文件应该能顺利登录)。以下为常用命令:- 自动登录:
/autoLogin add <account> <password> [passwordKind]
更换登录协议:
/autoLogin setConfig <qq号> protocol <登录协议>
==注意协议与你在手机上使用AOKI登录的协议一致==
支持协议 内容 安卓手表 ANDROID_WATCH 安卓手机 ANDROID_PHONE 安卓pad ANDROID_PAD MACOS MACOS
- 自动登录:
- 此时QQ机器人以及正式部署完成,在控制台中你能看到bot收到以及发出的消息。我们需配合插件来使用bot实现功能。你可以在MiraiForum中寻找合适的插件。
插件安装
下载QChatGPT中下载mirai2.jar包,按照上节5步骤上传至plugins目录。由于mirai不支持热加载,所以每次需要使用Ctrl
+C
退出当前进程,然后再使用./mcl
重新启动mirai,在启动时输入你注册后获取的chatGPT的api-key即可享用。
提示:
- 插件的设置目录为
config
目录,可以在这里配置每个插件的设置内容; - 插件数据目录为
data
目录,一般不需要动。 - 记得在配置文件
console
目录中添加管理员账号以及管理各种权限,可以安装chat-command插件在聊天环境中使用控制台命令进行权限管理等,权限管理命令见权限文档。
使用screen命令创建窗口
用 Windows 时,我们可以开几个命令窗口,一个运行 mirai,一个运行 Python;但是在 Linux 上,尤其是连接到远程服务器时,断开与服务器的连接,当前的终端会被关闭,里面运行的任务不能继续运行。
有什么办法,让一个终端可以“后台运行”呢?一个简单的办法是使用 screen 命令。
如果你的 Linux 发行版没有安装 screen,可以使用以下命令安装:
yum install screen
使用 screen -S <名字>
命令启动一个 screen。
screen -S mirai
每一个 screen 都是一个新的终端,这些终端由 screen 管理,可以随时放到后台。
在新的终端中,输入 ./mcl
运行 mirai-console,登录 QQ 账号。
mirai-console 运行成功后,按下 Ctrl+A
Ctrl+D
,将终端放到后台。
用 screen -r <名字>
命令重新连接到一个后台的终端。
screen -r mirai
同样,按下 Ctrl+A
Ctrl+D
可以将终端再次放到后台。
使用 UTF-8 编码
如果 screen 导致了中文乱码,指定 screen 使用 UTF-8 编码(-U
参数)可能会解决问题:
screen -U -S mirai
使用 UTF-8 编码之后,每一条 screen 命令都要加上 -U
参数。
screen -U -r mirai
这样,需要的时候就连接到不同的 screen,从服务器断开连接的时候,就可以把 screen 放到后台运行。
其他碎碎念
其他窗口命令tmux:
- 新建控制台:
tmux new -s <session-name>
- 移至后台:
Ctrl
+B
+D
- 重新连接控制台:
tmux attach -t <session-name>
- 杀死控制台:
tmux kill-session -t <session-name>
- 列出所有会话:
tmux ls
更详细的命令文档
使用mirai-api-http可以使mirai支持其他语言,相当于提供了一个外部接口。
需要更改config中mirai-api-http的配置为
adapters:
- ws
debug: true
enableVerify: true
verifyKey: yirimirai
singleMode: false
cacheSize: 4096
adapterSettings:
ws:
host: localhost
port: 8080
reservedSyncId: -1
所以我们也可以使用其他插件,比如QchatGPT,此插件相比于上个插件需要配置YIri-mirai框架以及Python环境,以后再详述。