前言
众所周知,CoolQ因为腾讯的封杀下架。(悲)
CoolQ 不一定是最好用的机器人框架,但对小白一定是最友好的。
而现在 CoolQ 没了,还有一个机器人框架可供我们选择 —— mirai。
mirai 相对于 CoolQ 来讲,没有 CoolQ 那么对小白友好,这也就是我写这个傻瓜式教程的目的。
ps:不建议非小白的大佬阅读本文。因为您可能会觉得太磨叽了,并且自己做要比按照我来做可能要好。这篇文章的受众对象是自己整不会 mirai 的。
pps:这篇文章使用 ubuntu 20.04 系统。使用其他版本的 ubuntu 应该问题很小。使用其他版本的 linux 可能在安装一些东西上跟本文版本不同。如果是 Windows 的话就不建议阅读这篇教程了(因为差异很大)。
前提准备
安装 openjdk
P.S. 如果您还使用这个系统玩 minecraft 的话,就不要下载最新版本的 openjdk 了,否则您的 minecraft 可能会炸。
访问这个页面,点击 Ready for use 的第一个链接(写这篇文章时是JDK 15,您看到这篇文章可能已经是JDK 16,17了),进入后下载 Linux / x64 版本。(也有可能是 AArch64,依据自己的版本而定。)
下载完这个压缩包后,进入压缩包所在文件夹,执行命令:tar -zxvf [文件名]
。(我的文件名是 openjdk-15.0.1_linux-x64_bin.tar.gz
)
(接下来的指令操作可能需要 root 权限。sudo su root
进入 root 权限)
解压之后,把文件夹移到 /usr 目录下的一个你喜欢的位置。比如我选的是 /usr/lib/jdk
。(我解压之后文件夹名就变成 jdk15.0
了)
然后输入命令 gedit /etc/environment
。(当然也可以 vim)
追加这样几行:
JAVA_HOME="/usr/lib/jdk/jdk15.0/"
JAVA_PATH="/usr/lib/jdk/jdk15.0/bin/"
(改成你自己的路径)
然后在上边找到 PATH="(里边是环境变量)"
,在右边的双引号的前面追加 :/usr/lib/jdk/jdk15.0/bin/
。(同样,可能要改成你自己的路径)
保存退出,执行指令 source /etc/environment
。
输入一下 java -version
,不出意外的话不会报错,这样 openjdk 就安装好了。
安装 MCL
进入这个链接
下载
![](https://i-blog.csdnimg.cn/blog_migrate/2c0cb65fffc7ca7f3b0fb75d853acca0.png)
解压到一个你喜欢的位置(随便)。
然后进入文件夹,运行命令 ./mcl
,mcl
就会开始加载 mirai console
。
如果不出意外,出现了 mirai-console started successfully.
的字样,说明加载OK。
但是也有可能出了意外(至少我出了)。意外是这样的:
java.lang.NoSuchMethodError: net.mamoe.mirai.utils.MiraiLogger$Companion.setDefaultLoggerCreator(Lkotlin/jvm/functions/Function1;)V
at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.(MiraiConsoleImplementationBridge.kt:99)
at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:209)
at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:153)
at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:152)
at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:48)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...(此处省略一堆)
解决方案是,编辑 mcl 文件夹中的 config.json,让文件变成这样:
{
"js_optimization_level": -1,
"mirai_repo": "https://gitee.com/peratx/mirai-repo/raw/master",
"maven_repo": "https://maven.aliyun.com/repository/public",
"packages": [
{
"id": "net.mamoe:mirai-console",
"channel": "nightly",
"version": "2.0-M1-1",
"type": "libs"
},
{
"id": "net.mamoe:mirai-console-terminal",
"channel": "nightly",
"version": "2.0-M1-1",
"type": "libs"
},
{
"id": "net.mamoe:mirai-core-all",
"channel": "nightly",
"version": "2.0-M1-1",
"type": "libs"
}
],
"disabled_scripts": [],
"proxy": "",
"log_level": 0,
"script_props": {}
}
然后奇迹应该就会出现了。
![](https://i-blog.csdnimg.cn/blog_migrate/50ef3062c8092282f185de9abb65b868.png)
这个时候可以尝试用 mcl 登录一下你的bot。(嗯,不建议用大号,建议将小号作为你的bot哦)
输入 /login bot的QQ号 bot的密码。(如果你想让bot自动登录,可以编辑mcl文件夹下的config/Console/AutoLogin.yml,里边有注释,相信读者可以看懂。)
见证奇迹的时候到了!
![](https://i-blog.csdnimg.cn/blog_migrate/af0e7cc247df127d2e1437573cb5f8b8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/643b2a1abcb7f0c559466312cae2ba9a.png)
试着换用一下常用登录地点。如果已经是常用登录地点或者换了还是不管用,参见https://github.com/project-mirai/mirai-login-solver-selenium。
现在机器人框架已经确保正常了,接下来是编写插件的时间。