mamoe / mirai

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

发送4个或以上图片报错信息过长 #922

Closed Nambers closed 3 years ago

Nambers commented 3 years ago

相关日志:

2021-01-26 23:00:12 I/org.example.miraiCP: Send message for(*******) is [mirai:image:{EC37E398-F473-A82A-26FE-16722BA1BED3}.mirai][mirai:image:{EC37E398-F473-A82A-26FE-16722BA1BED3}.mirai][mirai:image:{EC37E398-F473-A82A-26FE-16722BA1BED3}.mirai][mirai:image:{EC37E398-F473-A82A-26FE-16722BA1BED3}.mirai]
2021-01-26 23:00:12 E/org.example.miraiCP: Exception in coroutine Plugin org.example.miraiCP of org.example.miraiCP
java.lang.IllegalStateException: Send friend message failed: MessageSvcPbSendMsg.Response.MessageTooLarge
        at net.mamoe.mirai.internal.contact.UtilKt.sendMessageImpl(util.kt:69)
        at net.mamoe.mirai.internal.contact.UtilKt$sendMessageImpl$1.invokeSuspend(util.kt)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:32)
        at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:113)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:274)
        at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:84)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
        at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
        at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
        at org.example.mirai.plugin.CPP_lib$Companion.SendPrivateMSG(CPP_lib.kt:61)
        at org.example.mirai.plugin.CPP_lib.SendPrivateMSG(CPP_lib.kt)
        at org.example.mirai.plugin.CPP_lib.Event(Native Method)
        at org.example.mirai.plugin.PluginMain$onEnable$3.invokeSuspend(PluginMain.kt:103)
        at org.example.mirai.plugin.PluginMain$onEnable$3.invoke(PluginMain.kt)
        at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invokeSuspend(EventChannel.kt:393)
        at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:49)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:161)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:49)
        at net.mamoe.mirai.event.EventKt.broadcast(Event.kt:226)
        at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler.handlePacket(QQAndroidBotNetworkHandler.kt:616)
        at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invokeSuspend(QQAndroidBotNetworkHandler.kt:569)
        at net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler$generifiedParsePacket$2.invoke(QQAndroidBotNetworkHandler.kt)
        at net.mamoe.mirai.internal.network.protocol.packet.KnownPacketFactories.handleIncomingPacket$mirai_core(PacketFactory.kt:275)
        at net.mamoe.mirai.internal.network.protocol.packet.KnownPacketFactories$handleIncomingPacket$1.invokeSuspend(PacketFactory.kt)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

对应处代码:

...
suspend fun Send(message: String, id: Long) {
        //反向调用
        logger.info("Send message for($id) is $message")
        AIbot.getFriend(id)?.sendMessage(MiraiCode.deserializeMiraiCode(message))
    }
... 

我是用另外一处传递MiraiCode过去,然后再用MiraiCode.deserializeMiraiCode转码发送

sandtechnology commented 3 years ago

请提供版本号

Nambers commented 3 years ago

请提供版本号

id("net.mamoe.mirai-console") version "2.0.0" 2.0.0的

Nambers commented 3 years ago

4个以下都可以正常发送成功

Him188 commented 3 years ago

问题在 2.1.0 修复

Nambers commented 3 years ago

问题在 2.1.0 修复

好的

Him188 commented 3 years ago

但好友的可能有问题, 与 #892 有关

Nambers commented 3 years ago

但好友的可能有问题, 与 #892 有关

对了,2.1.0现在是出了吗?我看https://github.com/mamoe/mirai-console/blob/master/docs/ConfiguringProjects.md#%E9%80%89%E6%8B%A9%E7%89%88%E6%9C%AC还是在2.0.0且我gradle无法更新

Him188 commented 3 years ago

mirai-console 与 mirai-core 不同 image https://github.com/mamoe/mirai-console/blob/master/tools/gradle-plugin/README.md#%E9%85%8D%E7%BD%AE

Nambers commented 3 years ago

mirai-console 与 mirai-core 不同 image

ok,确实在mcl就mirai-core更2.1.0了,其他都没

Nambers commented 3 years ago

mirai-console 与 mirai-core 不同 image https://github.com/mamoe/mirai-console/blob/master/tools/gradle-plugin/README.md#%E9%85%8D%E7%BD%AE

对了,那这个内核版本是每次都要自己手动指定吗还是说只是因为2.1.0的内核是beta所以要自己指定 ,其他的stable的版本内核是随着mirai-console的更新而更新的