Mirai 疑难解答


提示

在这里将会有一些常见的问题及其解决方法,不定期更新。如果你有想要添加的内容,请联系QQ 2431208142 或电子信箱 mrxiaom@qq.com
你也可以滚动到页面底部点击「编辑此页面」并发起一个 Pull Requests。
撰写者请使用易于辩识、范围较广的标题,以方便阅览者寻找答案。

EncryptService.alert “报错”

2023-08-02 00:00:20 W/EncryptService.alert: Encrypt service was loaded: top.mrxiaom.qsign.QSignService$Factory@23056929
2023-08-02 00:00:20 W/EncryptService.alert: All outgoing message may be leaked by this service.
2023-08-02 00:00:20 W/EncryptService.alert: Use this service if and only if you trusted this service and the service provider.
2023-08-02 00:00:20 W/EncryptService.alert: Service details:
2023-08-02 00:00:20 W/EncryptService.alert:   `- Jvm Class: class top.mrxiaom.qsign.QSignService$Factory
2023-08-02 00:00:20 W/EncryptService.alert:   `- ClassLoader: JvmPluginClassLoader{qsign-dev.mirai2.jar}
2023-08-02 00:00:20 W/EncryptService.alert:   `- Source: file:/D:/Github/unidbg-fetch-qsign/debug-sandbox/plugins/qsign-dev.mirai2.jar
2023-08-02 00:00:20 W/EncryptService.alert:   `- Protected Domain: ProtectionDomain  (file:/D:/Github/unidbg-fetch-qsign/debug-sandbox/plugins/qsign-dev.mirai2.jar <no signer certificates>)
 JvmPluginClassLoader{qsign-dev.mirai2.jar}
 <no principals>
 java.security.Permissions@2b48f45a (
 ("java.io.FilePermission" "D:\Github\unidbg-fetch-qsign\debug-sandbox\plugins\qsign-dev.mirai2.jar" "read")
)

这样格式的不叫报错,这只是一个警告,同时意味着你的签名服务已经成功注册并使用了。

这个日志是 mirai 在警告你正在使用第三方签名服务,可能有数据泄露危险,并且把签名服务的详细地址打印出来让用户了解。

出现“云天明 章北海”信息后卡住了

可能是签名服务所在的机子配置比较差,或者签名服务死锁了。
等待几分钟,如果一直卡住,重启 mirai 并重启签名服务。

请检查 xxx by xxxx:xx 的可用性

签名服务没有启动,或者签名服务地址填写错误。

检查签名服务是否已启动并正常运行,可以在浏览器访问签名服务地址看看能不能连上。

KFCFactory.json 检查协议对应的签名服务类型签名服务地址是否正确。

没有找到 8.9.xx 的服务配置

KFCFactory.json 里添加配置,详见 fix-protocol-versionopen in new window 的文档。

启动时插件报错

如果报错日志格式如下所示

Exception while enable 插件名
...
Caused by: ...PermissionRegistryConflictException...The base permission

100% 是重复安装插件,请到 plugins 文件夹检查是否有重复安装的插件。


TxCaptchaHelper 不显示连接码

输入框内显示

java.lang.SocketTimeoutException

TxCaptchaHelper 现已弃用,请使用 mirai-login-solver-sakuraopen in new window,安装配套的插件和安卓App


登录失败 -10003

Login Failed: Received packet returnCode = -10003, which may mean session expired.

这很可能是因为你的登录会话过期了。删除 /bots/qq号/cache 文件夹的所有 session 开头的文件再登录即可。


登录失败

通常我们在登录失败的时候,会收到一个数字代码和一串中文消息。一般格式是这样的

code=数字代码, title=标题, message=中文消息

一般标题没什么用,我们需要关心的是 数字代码中文消息

首先,我们认为你已阅读常见登录失败原因,这一部分仅对一些不确定的特殊例外情况进行补充。

40-存在被盗风险

Error(bot=Bot(), code=40, title=安全提醒, message=请确认你输入了正确的账号。该账号存在被盗风险,已进入保护模式,请前往安全中心恢复。, errorInfo= )
// code40 通常会伴随 code45
Error(bot=Bot(), code=45, title=禁止登录, message=你的账号涉嫌违规被限制在非常用设备登录,请更换常用设备后重新登录并根据提示进行解封。, errorInfo= )

之前踩过坑,说说解决方法吧。
找你登录过机器人号的手机,登录机器人的号并按照提示解封就行。

如果你已经没有手机之前登录过这个号了,可能以为这个号大概率已经寄了。

登录失败提示信息在给你扣字眼,你以为只是限制了在非常用设备登录了,其实是冻结了,它在最后用“并根据提示进行解封”暗示你账号其实已经封了。

当你没有常用设备了,需要解除非常用设备禁止登录的状态有两种途径,一是和客服扯皮,二是等待一个月后再登录解冻。大约一个月时间,非常用设备禁止登录状态会自动解除。

45-不支持加密算法

Error(bot=Bot(), code=45, title=禁止登录, message=你当前使用的QQ版本过低,请前往QQ官网im.qq.com下载最新版QQ后重试。, errorInfo=)
Error(bot=Bot(), code=45, title=禁止登录, message=登录失败,建议升级最新版本后重试,或通过问题反馈与我们联系。, errorInfo=)

这是目前最常见的风控,由 mirai 没有实现协议所需加密算法所导致。

解决方法详见 mirai 登录全解

235-版本过低

Error(bot=Bot(), code=235, title=温馨提示, message=当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面, errorInfo=)

近期有很多人都出现了这个问题,且按照表格「检查密码是否正确和密码长度是否在16以内」的方法无法解决。

这疑似是最新的风控,解决方法详见论坛官方公告open in new window

现在基本不会出现 code235 了,一般都是 code45

237-网络不稳定/存在安全风险

Error(bot=Bot(), code=237, title=安全提醒, message=当前网络不稳定,登录失败。推荐使用常用设备或通过手机号登录。, errorInfo=)
Error(bot=Bot(), code=237, title=安全提醒, message=当前登录存在安全风险,请使用常用设备或通过手机号登录。, errorInfo=)

总结,出现 code237 可能有以下问题

  • 滑块验证操作被服务器认为不安全,你可以尝试 mirai/1-2open in new window 章节中的方法解决滑块验证,优先用 sakura,一个方法用不了就换一个方法。
  • ticket 输入错误,或滑块网页检测到环境异常返回了一个错误的 ticket
  • 滑块验证操作速度过慢,被服务器认为用户网络不稳定
  • 滑块验证次数过多被暂时拉黑 (过多是由服务器决定的,服务器认为你验证次数过多就是过多)
  • 登录错误次数过多被服务器认为不安全
  • 访问滑块网页时,滑块地址输入错误 (要完全复制,在终端直接点链接可能会截断)

据 karlatemp 所说open in new window,这表明设备信息和账户登录点已经被ban了,是错误的操作滑块验证所导致的。

如果你此前一直电脑使用浏览器通过滑块验证,请尝试在真实的 Android 手机使用验证处理工具open in new window通过滑块验证。

并不是所有人都有这个问题,据了解,大部分人依然可以通过浏览器开发者工具的设备仿真,使用老方法来通过滑块验证。这个问题仍存在很多不确定性因素。

根据 WorldLeen 的 issueopen in new window,登录错误次数过多也会出现这个问题。

提示

你可以使用 235-版本过低 的方法解决 237 问题。
两者同为风控,本质上都是腾讯怀疑你被盗号,237 的风控等级更高。
你需要把你的设备信息等删除干净 (删除 bots/qq号 文件夹) 再进行登录和处理验证。


MCL 初次启动红字

如果你打开 MCL 出现 Failed to xxxxxx 或者 timeout 之类的红字,且通常出现得较慢,内容较短,可能是你的网络无法访问 mirai 网络仓库,请按照以下链接的操作提示进行换源:
https://mirai.mamoe.net/topic/1084


MCL 无限提示重启更新

症状是每次启动都会弹这个提示

mcl 已升级请重新启动

该问题是 MCL 默认捆绑插件 mcl-addon 于 2.1.0 (0bc3dcopen in new window) 引入,原因是有笨比让默认仓库只留了阿里云镜像,导致滑稽360的 fix 变成了 bug。

将 mcl-addon 更新到 2.1.1 或者删除即可解决问题。
用 PowerShell (Windows) 或 终端 (Linux/MacOS) 在 MCL 所在文件夹下执行以下命令即可执行检查更新。

./mcl -u

系统没有 PowerShell 的话用 cmd 也行。


消息发送失败 resultType=46

java.lang.IllegalStateException: Send message failed: MessageSvcPbSendMsg.Response.Failed(resultType=46, errorCode=0, errorMessage=)

该问题将会在 2.14.0 及以后版本显示解决方案open in new window

问题原因可能是账号被多次举报或被服务器认为不安全,可尝试访问 https://accounts.qq.com/safe/message/unlock?lock_info=5_5 解冻。

俗称风控。