版本:mirai-core-2.17.0
协议:ANDROID_PHONE
在群里发送视频,机器人服务报异常:
2025-02-13 16:48:49 E/Bot 机器人qq号: Exception on parsing packet.
java.lang.IllegalStateException: Exception in net.mamoe.mirai.internal.network.notice.group.GroupMessageProcessor@4a505ff2 while processing packet PbPushMsg.
at net.mamoe.mirai.internal.network.components.NoticeProcessorPipelineImpl.handleExceptionInProcess(NoticeProcessorPipeline.kt:105)
at net.mamoe.mirai.internal.network.components.NoticeProcessorPipelineImpl.handleExceptionInProcess(NoticeProcessorPipeline.kt:80)
at net.mamoe.mirai.internal.pipeline.AbstractProcessorPipeline.process$suspendImpl(ProcessorPipeline.kt:289)
at net.mamoe.mirai.internal.pipeline.AbstractProcessorPipeline.process(ProcessorPipeline.kt)
at net.mamoe.mirai.internal.pipeline.AbstractProcessorPipeline.process$suspendImpl(ProcessorPipeline.kt:275)
at net.mamoe.mirai.internal.pipeline.AbstractProcessorPipeline.process(ProcessorPipeline.kt)
at net.mamoe.mirai.internal.network.protocol.packet.chat.receive.OnlinePushPbPushGroupMsg.decode(OnlinePush.PbPushGroupMsg.kt:37)
at net.mamoe.mirai.internal.network.components.PacketCodecImpl.processBody(PacketCodec.kt:586)
at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.processBody(CommonNetworkHandler.kt:158)
at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.access$processBody(CommonNetworkHandler.kt:103)
at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1$3$1.invokeSuspend(CommonNetworkHandler.kt:127)
at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1$3$1.invoke(CommonNetworkHandler.kt)
at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1$3$1.invoke(CommonNetworkHandler.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:55)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source)
at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:127)
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(Unknown Source)
Caused by: java.lang.IllegalStateException: Failed to transform internal message to facade message, msg=[Msg#664542228 {
contentHead=ContentHead#1124564697 {
pkgNum=0x00000001(1)
}
msgBody=MsgBody#368743498 {
richText=RichText#510310017 {
attr=Attr#1394834823 {
charSet=0x00000086(134)
fontName=宋体
pitchAndFamily=0x00000002(2)
random=0x11FD42F5(301810421)
size=0x0000000A(10)
time=0x67ADB1F1(1739436529)
}
elems=[Elem#650966069 {
commonElem=CommonElem#1018130843 {
businessType=0x00000015(21)
pbElem=0A FC 01 0A F5 01 0A 8A 01 08 DD 84 2A 12 20 64 63 62 33 38 66 38 64 38 64 64 33 39 36 37 36 31 36 36 32 32 34 39 63 64 30 36 38 34 66 61 38 1A 28 34 61 37 31 37 33 62 30 63 36 30 37 65 33 63 36 39 31 65 61 34 32 63 35 66 33 65 64 37 34 62 61 33 38 38 66 62 32 66 63 22 24 64 63 62 33 38 66 38 64 38 64 64 33 39 36 37 36 31 36 36 32 32 34 39 63 64 30 36 38 34 66 61 38 2E 6D 70 34 2A 08 08 02 10 00 18 00 20 00 30 B6 02 38 80 05 40 04 48 00 12 58 45 68 52 4B 63 58 4F 77 78 67 66 6A 78 70 48 71 51 73 58 7A 37 58 53 36 4F 49 2D 79 5F 42 6A 64 68 43 6F 67 68 77 73 6F 6E 74 69 39 67 36 4C 41 69 77 4D 79 42 48 42 79 62 32 52 51 67 50 55 6B 57 68 41 57 75 76 36 6C 68 48 6E 5F 4C 71 67 73 46 42 79 45 74 33 49 49 18 01 20 F1 E3 B6 BD 06 28 80 F5 24 30 00 28 01 32 00 0A FC 01 0A F5 01 0A 8A 01 08 EA 9E 01 12 20 38 38 62 38 61 34 34 34 61 62 35 31 31 31 35 30 62 31 32 64 32 35 39 34 64 39 30 66 36 31 34 63 1A 28 64 38 31 36 63 31 61 61 66 35 32 63 61 39 65 36 32 64 39 61 36 64 35 38 30 35 30 39 65 32 66 30 66 62 62 36 66 62 64 33 22 24 44 43 42 33 38 46 38 44 38 44 44 33 39 36 37 36 31 36 36 32 32 34 39 43 44 30 36 38 34 46 41 38 2E 70 6E 67 2A 08 08 01 10 00 18 00 20 00 30 B6 02 38 80 05 40 00 48 00 12 58 45 68 54 59 46 73 47 71 39 53 79 70 35 69 32 61 62 56 67 46 43 65 4C 77 2D 37 62 37 30 78 6A 71 6E 67 45 67 69 41 73 6F 77 6F 48 44 67 36 4C 41 69 77 4D 79 42 48 42 79 62 32 52 51 67 50 55 6B 57 68 42 43 76 32 4D 69 4D 61 36 41 72 45 34 5F 53 52 4C 69 77 30 53 53 18 01 20 F1 E3 B6 BD 06 28 80 F5 24 30 64 28 01 32 00 12 3E 0A 04 08 00 12 00 12 2E 08 02 10 02 1A 28 60 02 80 01 00 8A 01 20 64 63 62 33 38 66 38 64 38 64 64 33 39 36 37 36 31 36 36 32 32 34 39 63 64 30 36 38 34 66 61 38 1A 04 5A 00 62 00 50 00
serviceType=0x00000030(48)
}
}, Elem#650966069 {
elemFlags2=ElemFlags2#72429457 {
insts=[]
}
}, Elem#650966069 {
generalFlags=GeneralFlags#641615320 {
pbReserve=08 06 20 CB 50 C8 01 00 F0 01 00 F8 01 00 90 02 00 98 03 00 A0 03 20 B0 03 00 C0 03 00 D0 03 00 E8 03 00 8A 04 04 08 01 10 29 90 04 80 80 80 10 B8 04 00 C0 04 00 CA 04 00 F8 04 80 80 08 80 05 41 88 05 00 D8 06 F9 01
}
}, Elem#650966069 {
extraInfo=ExtraInfo#613770739 {
flags=0x00000008(8)
groupMask=0x00000001(1)
level=0x00000001(1)
nick=发送人昵称
}
}]
}
}
msgHead=MsgHead#2073812536 {
fromAppid=0x000003E9(1001)
fromInstid=0x2005EC20(537259040)
fromUin=0x000000000EF9E982(发送人QQ号)
groupInfo=GroupInfo#875716453 {
groupCard=发送人昵称
groupCardType=0x00000002(2)
groupCode=0x000000002E9FF0C5(QQ群号)
groupInfoSeq=0x00000000000000C9(201)
groupLevel=0x00000001(1)
groupName=E6 9C BA E5 99 A8 E4 BA BA E6 B5 8B E8 AF 95
groupType=0x00000001(1)
}
isSrcMsg=false
msgFlag=0x00000008(8)
msgSeq=0x00000A44(2628)
msgTime=0x67ADB1F1(1739436529)
msgType=0x00000052(82)
msgUid=0x0100000011FD42F5(72057594339738357)
toUin=0x000000006D2E89C9(机器人QQ号)
}
}]
at net.mamoe.mirai.internal.message.ReceiveMessageHandlerKt.toMessageChain(ReceiveMessageHandler.kt:124)
at net.mamoe.mirai.internal.message.ReceiveMessageHandlerKt.toMessageChainOnline(ReceiveMessageHandler.kt:56)
at net.mamoe.mirai.internal.message.ReceiveMessageHandlerKt.toMessageChainOnline$default(ReceiveMessageHandler.kt:49)
at net.mamoe.mirai.internal.network.notice.group.GroupMessageProcessor.processImpl(GroupMessageProcessor.kt:190)
at net.mamoe.mirai.internal.network.notice.group.GroupMessageProcessor.processImpl(GroupMessageProcessor.kt:44)
at net.mamoe.mirai.internal.network.components.SimpleNoticeProcessor.process(NoticeProcessorPipeline.kt:147)
at net.mamoe.mirai.internal.network.components.SimpleNoticeProcessor.process(NoticeProcessorPipeline.kt:141)
at net.mamoe.mirai.internal.pipeline.AbstractProcessorPipeline.process$suspendImpl(ProcessorPipeline.kt:287)
... 27 more
Caused by: kotlinx.serialization.MissingFieldException: Field 'noKeyDownloadInfo' is required for type with serial name 'net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody.NewTechImageInfoMain', but it was missing
at kotlinx.serialization.internal.PluginExceptionsKt.throwMissingFieldException(PluginExceptions.kt:20)
at net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody$NewTechImageInfoMain.<init>(Msg.kt:764)
at net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody$NewTechImageInfoMain$$serializer.deserialize(Msg.kt:764)
at net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody$NewTechImageInfoMain$$serializer.deserialize(Msg.kt:764)
at kotlinx.serialization.protobuf.internal.ProtobufDecoder.decodeSerializableValue(ProtobufDecoding.kt:196)
at kotlinx.serialization.protobuf.internal.ProtobufTaggedDecoder.decodeSerializableElement(ProtobufTaggedDecoder.kt:82)
at net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody$NewTechImageInfo$$serializer.deserialize(Msg.kt:827)
at net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody$NewTechImageInfo$$serializer.deserialize(Msg.kt:827)
at kotlinx.serialization.protobuf.internal.ProtobufDecoder.decodeSerializableValue(ProtobufDecoding.kt:196)
at kotlinx.serialization.protobuf.internal.ProtobufDecoder.decodeSerializableValue(ProtobufDecoding.kt:186)
at kotlinx.serialization.protobuf.ProtoBuf.decodeFromByteArray(ProtoBuf.kt:137)
at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils__UtilsKt.loadAs(utils.kt:230)
at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils.loadAs(utils.kt:1)
at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils__UtilsKt.loadAs$default(utils.kt:225)
at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils.loadAs$default(utils.kt:1)
at net.mamoe.mirai.internal.message.image.OnlineNewTechImageImpl.<init>(OnlineImage.kt:150)
at net.mamoe.mirai.internal.message.protocol.impl.ImageProtocol$ImageDecoder.process(ImageProtocol.kt:93)
at net.mamoe.mirai.internal.message.protocol.decode.MessageDecoderProcessor.process(MessageDecoder.kt:31)
at net.mamoe.mirai.internal.message.protocol.decode.MessageDecoderProcessor.process(MessageDecoder.kt:24)
at net.mamoe.mirai.internal.pipeline.AbstractProcessorPipeline.process$suspendImpl(ProcessorPipeline.kt:287)
at net.mamoe.mirai.internal.pipeline.AbstractProcessorPipeline.process(ProcessorPipeline.kt)
at net.mamoe.mirai.internal.message.protocol.decode.MessageDecoderPipelineImpl.process$suspendImpl(MessageDecoderPipeline.kt:57)
at net.mamoe.mirai.internal.message.protocol.decode.MessageDecoderPipelineImpl.process(MessageDecoderPipeline.kt)
at net.mamoe.mirai.internal.message.protocol.decode.MessageDecoderPipelineImpl.process(MessageDecoderPipeline.kt:36)
at net.mamoe.mirai.internal.pipeline.AbstractProcessorPipeline.process$suspendImpl(ProcessorPipeline.kt:275)
at net.mamoe.mirai.internal.pipeline.AbstractProcessorPipeline.process(ProcessorPipeline.kt)
at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl$decode$1.invokeSuspend(MessageProtocolFacade.kt:307)
at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl$decode$1.invoke(MessageProtocolFacade.kt)
at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl$decode$1.invoke(MessageProtocolFacade.kt)
at net.mamoe.mirai.internal.utils.RunCoroutineInPlaceKt.runCoroutineInPlace(runCoroutineInPlace.kt:26)
at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl.decode(MessageProtocolFacade.kt:306)
at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacade$INSTANCE.decode(MessageProtocolFacade.kt)
at net.mamoe.mirai.internal.message.ReceiveMessageHandlerKt.toMessageChainImpl(ReceiveMessageHandler.kt:158)
at net.mamoe.mirai.internal.message.ReceiveMessageHandlerKt.toMessageChain(ReceiveMessageHandler.kt:122)
... 34 more
JamesLee66 发布的帖子
-
mirai-core接收视频消息、语音消息报错
-
java中使用mirai-core2.16.0,获取的图片地址不可用,请大佬指导一下
图片消息内容:
[{"type":"MessageSource","kind":"GROUP","botId":1831766333,"ids":[2574],"internalIds":[1280584505],"time":1739257169,"fromId":123456789,"targetId":782233797,"originalMessage":[{"type":"Image","imageId":"{57454715-A857-BAD2-D863-CA717CB64A5B}.jpg","size":275828,"imageType":"JPG","width":990,"height":990,"isEmoji":false}]},{"type":"Image","imageId":"{57454715-A857-BAD2-D863-CA717CB64A5B}.jpg","size":275828,"imageType":"JPG","width":990,"height":990,"isEmoji":false}]
// 使用 [Builder] 构建图片 Image.Builder builder = Image.newBuilder(imageId); builder.setType(ImageType.valueOf(imageMessage.getImageType())); builder.setWidth(imageMessage.getWidth()); builder.setHeight(imageMessage.getHeight()); builder.setSize(imageMessage.getSize()); builder.setEmoji(imageMessage.getEmoji()); Image image = builder.build(); // 当图片在服务器上存在时返回 `true`, 这意味着图片可以直接发送. boolean uploaded = Image.isUploaded(image, event.getBot()); // 获取到图片地址,以便于下载或读取图片信息 String imageUrl = Image.queryUrl(image); System.out.println(imageId);
图片消息:解析图片地址:http://gchat.qpic.cn/gchatpic_new/1831766333/0-0-57454715A857BAD2D863CA717CB64A5B/0?term=2
获取的图片地址不能访问
-
RE: mirai-core2.16.0接收图片消息为UnsupportedMessage
mirai-core-2.16换成mirai-core-all-2.17.0-all.jar,需要额外的配置吗
-
RE: mirai-core2.16.0接收图片消息为UnsupportedMessage
@rs610ucf7 在 mirai-core2.16.0接收图片消息为UnsupportedMessage 中说:
参考https://mirai.mamoe.net/topic/2697/%E4%BF%AE%E6%94%B9-mirai-core-%E4%BD%BF%E5%85%B6%E6%94%AF%E6%8C%81%E6%96%B0%E7%89%88ntqq%E5%9B%BE%E5%BA%8A
大佬,我看提交的pr上面,解决的是获取imageurl的问题,但是我的问题应该是识别不了图片消息, mirai-core-all-2.17.0-all.jar也把这个解决了吗
-
mirai-core2.16.0接收图片消息为UnsupportedMessage
在手机qq发送图片,mirai-core接收到的消息是这样的:
[{"type":"MessageSource","kind":"GROUP","botId":12311231,"ids":[2449],"internalIds":[1061071309],"time":1736590890,"fromId":98765432,"targetId":12345678,"originalMessage":[{"type":"UnsupportedMessage","struct":"AA03F504083012EE040ACB030AF9010A8B0108B6B83B122032623662336164613666613430386535333432323933646330366439616439651A2836613462386337623662663163633564333762383666666235363639663237303864663463386136222432423642334144413646413430384535333432323933444330364439414439452E6A70672A09080110E8071800200030800A38A42640004801125A4568527153347837615F484D58546534625F745761664A776A66544970686932754473675F776F6F5F735F6E6C376E7469674D794248427962325251674C326A41566F516F4444464F3432764B33436A53504E4D43532D6C4241180120A78C89BC062880BDA301300012B2010A762F646F776E6C6F61643F61707069643D313430372666696C6569643D4568527153347837615F484D58546534625F745761664A776A66544970686932754473675F776F6F5F735F6E6C376E7469674D794248427962325251674C326A41566F516F4444464F3432764B33436A53504E4D43532D6C4241121F0A0726737065633D30120926737065633D3732301A0926737065633D3139381A176D756C74696D656469612E6E742E71712E636F6D2E636E2800321612141ECECB198B3F23733030BFB992BBB87C644428EA129D010A900108001200627D0800180020004A00500062009201009A0100AA010C080012001800200028003A00F2015626726B65793D434145534F426B63726F5F4D47756A6F43593365343246776430354B6A637A66314D6E7241744141386A6F3474307178344D737A475A4E585445446E51375F6B74367154586C4D34395A62674F44684AFA0100C83E02D03E02D83E83D0C8B70712021A001A045A0062001814"}]},{"type":"UnsupportedMessage","struct":"AA03F504083012EE040ACB030AF9010A8B0108B6B83B122032623662336164613666613430386535333432323933646330366439616439651A2836613462386337623662663163633564333762383666666235363639663237303864663463386136222432423642334144413646413430384535333432323933444330364439414439452E6A70672A09080110E8071800200030800A38A42640004801125A4568527153347837615F484D58546534625F745761664A776A66544970686932754473675F776F6F5F735F6E6C376E7469674D794248427962325251674C326A41566F516F4444464F3432764B33436A53504E4D43532D6C4241180120A78C89BC062880BDA301300012B2010A762F646F776E6C6F61643F61707069643D313430372666696C6569643D4568527153347837615F484D58546534625F745761664A776A66544970686932754473675F776F6F5F735F6E6C376E7469674D794248427962325251674C326A41566F516F4444464F3432764B33436A53504E4D43532D6C4241121F0A0726737065633D30120926737065633D3732301A0926737065633D3139381A176D756C74696D656469612E6E742E71712E636F6D2E636E2800321612141ECECB198B3F23733030BFB992BBB87C644428EA129D010A900108001200627D0800180020004A00500062009201009A0100AA010C080012001800200028003A00F2015626726B65793D434145534F426B63726F5F4D47756A6F43593365343246776430354B6A637A66314D6E7241744141386A6F3474307178344D737A475A4E585445446E51375F6B74367154586C4D34395A62674F44684AFA0100C83E02D03E02D83E83D0C8B70712021A001A045A0062001814"}]
mirai-core 版本
2.16.0bot-protocol
ANDROID_PHONE签名服务版本
Qsign=9.1.15 -
图片下载失败
在消息链中获取到imageId,根据imageId构造Image对象,通过String imageUrl = Image.queryUrl(image);获取下载链接,下载链接打不开
mirai-core 版本
2.16.0
bot-protocol
ANDROID_PAD
复现代码:
String imageId = "{57454715-A857-BAD2-D863-CA717CB64A5B}.jpg"; Image.Builder builder = Image.newBuilder(imageId); builder.setType(ImageType.valueOf(imageMessage.getImageType())); builder.setWidth(imageMessage.getWidth()); builder.setHeight(imageMessage.getHeight()); builder.setSize(imageMessage.getSize()); builder.setEmoji(imageMessage.getEmoji()); Image image = builder.build(); String imageUrl = Image.queryUrl(image);