mamoe / mirai

高效率 QQ 机器人支持库
https://mirai.mamoe.net
GNU Affero General Public License v3.0
14.28k stars 2.53k forks source link

更新到2.14.0-RC后,mirai-api-http中botList为空 #2447

Closed HYLZ-2019 closed 1 year ago

HYLZ-2019 commented 1 year ago

问题描述

更新到2.14.0-RC后,虽然bot能够成功登录,但是之前运行正常的Mirai-js会报错“指定Bot不存在”。 检查了一下,发现mirai-api-http模块显示的botList为空;而与此同时,bot处于登录状态,输出日志nohup.out持续更新。

ubuntu@VM-0-16-ubuntu:~/QBot-New$ wget http://0.0.0.0:8080/botList
--2023-01-21 19:20:44--  http://0.0.0.0:8080/botList
Connecting to 0.0.0.0:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 29 [application/json]
Saving to: ‘botList.1’

botList.1                               100%[=============================================================================>]      29  --.-KB/s    in 0s      

2023-01-21 19:20:44 (437 KB/s) - ‘botList.1’ saved [29/29]

ubuntu@VM-0-16-ubuntu:~/QBot-New$ cat botList
{"code":0,"msg":"","data":[]}

怀疑可能是新版本和mirai-api-http接口的兼容性出了问题。

复现

  1. 配置Mirai 2.14.0-RC与mirai-api-http插件。
  2. 在Mirai中登录qq号。
  3. 尝试访问http://0.0.0.0:8080/botList。

mirai-core 版本

2.14.0-RC

bot-protocol

ANDROID_PHONE

其他组件版本

mirai-login-solver-sakura v0.0.7 Chat Command v0.5.0 net.mamoe.mirai-api-http v2.6.2 mirai-login-solver-selenium v1.0-dev-12

系统日志

http接口查询的botList为空:
{"code":0,"msg":"","data":[]}

bots/<***>/logs中反复报错:

2023-01-21 19:24:17 E/: Exception in coroutine 'unnamed'
ExceptionInPacketCodecException(cause=java.lang.IllegalStateException: 32)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler.handleExceptionInDecoding$passToExceptionHandler(CommonNetworkHandler.kt:57)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler.handleExceptionInDecoding(CommonNetworkHandler.kt:70)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:129)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalStateException: 32
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.parseOicqResponse(PacketCodec.kt:247)
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:142)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.decodePacket(CommonNetworkHandler.kt:148)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.access$decodePacket(CommonNetworkHandler.kt:102)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:125)
        ... 9 more
        Suppressed: net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32
                at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:144)
                ... 12 more
        Caused by: [CIRCULAR REFERENCE: java.lang.IllegalStateException: 32]

2023-01-21 19:24:17 E/: Exception in coroutine 'unnamed'
ExceptionInPacketCodecException(cause=java.lang.IllegalStateException: 32)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler.handleExceptionInDecoding$passToExceptionHandler(CommonNetworkHandler.kt:57)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler.handleExceptionInDecoding(CommonNetworkHandler.kt:74)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:129)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalStateException: 32
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.parseOicqResponse(PacketCodec.kt:247)
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:142)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.decodePacket(CommonNetworkHandler.kt:148)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.access$decodePacket(CommonNetworkHandler.kt:102)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:125)
        ... 9 more
        Suppressed: net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32
                at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:144)
                ... 12 more
        Caused by: [CIRCULAR REFERENCE: java.lang.IllegalStateException: 32]
        Suppressed: [CIRCULAR REFERENCE: net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32]

2023-01-21 19:24:17 E/: Error while decoding packet 'ByteReadPacket(0 bytes remaining)'
net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:144)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.decodePacket(CommonNetworkHandler.kt:148)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.access$decodePacket(CommonNetworkHandler.kt:102)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:125)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalStateException: 32
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.parseOicqResponse(PacketCodec.kt:247)
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:142)
        ... 12 more
        Suppressed: [CIRCULAR REFERENCE: net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32]
        Suppressed: [CIRCULAR REFERENCE: net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32]

2023-01-21 19:24:17 E/: Exception in coroutine 'unnamed'
ExceptionInPacketCodecException(cause=java.lang.IllegalStateException: 32)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler.handleExceptionInDecoding$passToExceptionHandler(CommonNetworkHandler.kt:57)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler.handleExceptionInDecoding(CommonNetworkHandler.kt:70)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:129)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalStateException: 32
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.parseOicqResponse(PacketCodec.kt:247)
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:142)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.decodePacket(CommonNetworkHandler.kt:148)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.access$decodePacket(CommonNetworkHandler.kt:102)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:125)
        ... 9 more
        Suppressed: net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32
                at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:144)
                ... 12 more
        Caused by: [CIRCULAR REFERENCE: java.lang.IllegalStateException: 32]

2023-01-21 19:24:17 E/: Exception in coroutine 'unnamed'
ExceptionInPacketCodecException(cause=java.lang.IllegalStateException: 32)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler.handleExceptionInDecoding$passToExceptionHandler(CommonNetworkHandler.kt:57)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler.handleExceptionInDecoding(CommonNetworkHandler.kt:74)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:129)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalStateException: 32
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.parseOicqResponse(PacketCodec.kt:247)
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:142)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.decodePacket(CommonNetworkHandler.kt:148)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.access$decodePacket(CommonNetworkHandler.kt:102)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:125)
        ... 9 more
        Suppressed: net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32
                at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:144)
                ... 12 more
        Caused by: [CIRCULAR REFERENCE: java.lang.IllegalStateException: 32]
        Suppressed: [CIRCULAR REFERENCE: net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32]

2023-01-21 19:24:17 E/: Error while decoding packet 'ByteReadPacket(0 bytes remaining)'
net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:144)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.decodePacket(CommonNetworkHandler.kt:148)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.access$decodePacket(CommonNetworkHandler.kt:102)
        at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:125)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalStateException: 32
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.parseOicqResponse(PacketCodec.kt:247)
        at net.mamoe.mirai.internal.network.components.PacketCodecImpl.decodeRaw(PacketCodec.kt:142)
        ... 12 more
        Suppressed: [CIRCULAR REFERENCE: net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32]
        Suppressed: [CIRCULAR REFERENCE: net.mamoe.mirai.internal.network.components.PacketCodecException: java.lang.IllegalStateException: 32]


### 网络日志

_No response_

### 补充信息

_No response_
cssxsh commented 1 year ago

https://github.com/project-mirai/mirai-api-http/releases/tag/v2.7.1

HYLZ-2019 commented 1 year ago

问一下正确的更新方式是什么?我./mcl -u每次都给我更新到2.6.2;直接下载.jar放到configs/里之后,加载会显示:

19:54:49 [INFO] Verifying "net.mamoe:mirai-api-http" v2.7.1
  19:54:49 [ERROR] "net.mamoe:mirai-api-http" is corrupted.
  19:54:49 [INFO] Updating "net.mamoe:mirai-api-http" to v2.7.1
  19:54:50 [ERROR] Cannot download package "net.mamoe:mirai-api-http"
  19:54:50 [ERROR] The local file "net.mamoe:mirai-api-http" is still corrupted, please check the network.
cssxsh commented 1 year ago

问一下正确的更新方式是什么?我./mcl -u每次都给我更新到2.6.2;直接下载.jar放到configs/里之后,加载会显示:

19:54:49 [INFO] Verifying "net.mamoe:mirai-api-http" v2.7.1
  19:54:49 [ERROR] "net.mamoe:mirai-api-http" is corrupted.
  19:54:49 [INFO] Updating "net.mamoe:mirai-api-http" to v2.7.1
  19:54:50 [ERROR] Cannot download package "net.mamoe:mirai-api-http"
  19:54:50 [ERROR] The local file "net.mamoe:mirai-api-http" is still corrupted, please check the network.

作者偷懒了并没有提交到 maven ,所以没法通过 mcl 自动更新

HYLZ-2019 commented 1 year ago

问一下正确的更新方式是什么?我./mcl -u每次都给我更新到2.6.2;直接下载.jar放到configs/里之后,加载会显示:

19:54:49 [INFO] Verifying "net.mamoe:mirai-api-http" v2.7.1
  19:54:49 [ERROR] "net.mamoe:mirai-api-http" is corrupted.
  19:54:49 [INFO] Updating "net.mamoe:mirai-api-http" to v2.7.1
  19:54:50 [ERROR] Cannot download package "net.mamoe:mirai-api-http"
  19:54:50 [ERROR] The local file "net.mamoe:mirai-api-http" is still corrupted, please check the network.

作者偷懒了并没有提交到 maven ,所以没法通过 mcl 自动更新

那么正确的更新姿势是什么呢?下载下来的release直接复制进去会报错()

cssxsh commented 1 year ago

你需要先编辑 config.json 把 mcl 的 mirai-api-http 的订阅删了 然后再下载新版本,删除旧版本

HYLZ-2019 commented 1 year ago

你需要先编辑 config.json 把 mcl 的 mirai-api-http 的订阅删了 然后再下载新版本,删除旧版本

非常感谢!我安装成功了,(在手动杀掉了占用端口的旧版本进程后)现在功能正常了~ 祝您新年快乐,兔飞猛进!