虽说现在也想不起来除了接驳chatgpt省得多打开一个应用/网页之外的聊天机器人用途,但整个聊天机器人一直在我弄个服务器之后的待办清单上。hexo服务那些恐怖的报错在更换了随机图片源之后便匿踪而去,没有比这更好的事情了。为啥用Mirai呢?因为我只知道Mirai。
下载和使用安装器
首先从安装器的 release 中挑选适合自己服务器体质的安装包。期间看到了不理解的musl后缀。问问chatgpt这是什么:
在Linux软件的安装程序中,musl后缀代表的是使用musl C库编译的程序。musl是一个轻量级的C标准库,与GNU C库(glibc)相比,它更小巧、更快速,并且具有更好的兼容性。因此,使用musl C库编译的程序通常更适合嵌入式系统或资源受限的环境。
听起来非常美好,但是有些担心插件兼容性,所以还是选传统版本好了。
看了眼readme:
请优先选择以
musl结尾的二进制文件,无外部依赖,兼容性更好。
那没事了。
脑壳抽了一下,忘记这是安装程序,不是mirai本身。
给权限并安装:
chmod +x mcl-installer-ae9f946-linux-amd64-musl
mcl-installer-ae9f946-linux-amd64-musl
非常平稳地安装完成,谢天谢地。
启动与简单配置
赫然发现下载出来的最像启动文件的是个.cmd,先试试java直接执行。
java -jar mcl.jar
收获报错:
-bash: java: command not found
那有事了。可能得配置环境变量。感觉很麻烦,不如找个系统的java安装流程。
最后还得配置环境。
cat <<EOF | sudo tee /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/lib/jvm/jdk-17/
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
配好后再次执行,运行正常。
可以借助mcl进行插件安装,例如:
./mcl --update-package net.mamoe:mirai-api-http --type plugin --channel maven-stable
原来目录下的java是mcl的运行依赖,我删除了才知道。
社区的插件可以直接扔进plugins文件夹,这个文件夹在执行mcl.jar后才会生成。
使用login试了下,果不其然验证码。借助插件获取url自己验证一下,等待一段时间后报错:
W/io.netty.channel.DefaultChannelPipeline: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
io.netty.handler.timeout.ReadTimeoutException
这才是我熟悉的节奏嘛。
连错误都没有,该怎么解决?兜兜转转搜了一圈,发现是一个登录验证插件导致的问题,遂删除之。
接着就是237错误。多次尝试把号给禁止登录了。
似乎是因为登录频繁被风控?反正网页端ChatGPT已经部署完毕,这机器人就以后再说罢!