Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QuoteReply无法引用bot发出的ForwardMessage #2342

Closed
KKW557 opened this issue Nov 11, 2022 · 8 comments
Closed

QuoteReply无法引用bot发出的ForwardMessage #2342

KKW557 opened this issue Nov 11, 2022 · 8 comments
Labels
M 优先级: 主要 s:core 子系统: mirai-core t:problem 类型: 不容易归类为特性或 bug 的综合问题
Milestone

Comments

@KKW557
Copy link

KKW557 commented Nov 11, 2022

问题描述

机器人发送一个ForwardMessage 然后引用发送QuoteReply失败

MessageReceipt<Group> plainMessage = event.getSubject().sendMessage("TEST");
plainMessage.quoteReply("PLAIN QUOTE TEST");

List<ForwardMessage.Node> nodeList = new ArrayList<>();

nodeList.add(new ForwardMessage.Node(event.getBot().getId(), (int) (System.currentTimeMillis() / 1000), event.getBot().getNick(), new PlainText("test")));

MessageReceipt<Group> forwardMessage = event.getSubject().sendMessage(new ForwardMessage(Collections.singletonList("T"), "T", "T", "T", "T", nodeList));

event.getSubject().sendMessage(new MessageChainBuilder().append(new QuoteReply(forwardMessage.getSource())).append("TEST").build());

forwardMessage.quoteReply("FORWARD QUOTE TEST");

复现

MessageReceipt<Group> forwardMessage = event.getSubject().sendMessage(new ForwardMessage(Collections.singletonList("T"), "T", "T", "T", "T", nodeList));
forwardMessage.quoteReply("FORWARD QUOTE TEST");

发送出一个ForwardMessage然后调用quoteReply或者直接new QuoteReply

event.getSubject().sendMessage(new MessageChainBuilder().append(new QuoteReply(forwardMessage.getSource())).append("TEST").build());

mirai-core 版本

2.13.0-RC2

bot-protocol

MACOS

其他组件版本

No response

系统日志


2022-11-11 10:36:33 W/Bot ******: An exception occurred when processing event. Subscriber scope: '<unnamed>'. Broadcaster scope: 'Bot.2979182632.EventDispatcher'
java.util.NoSuchElementException: List is empty.
	at kotlin.collections.CollectionsKt___CollectionsKt.last(_Collections.kt:418)
	at net.mamoe.mirai.internal.message.source.OnlineMessageSourceToGroupImpl$jceData$2.invoke(outgoingSourceImpl.kt:244)
	at net.mamoe.mirai.internal.message.source.OnlineMessageSourceToGroupImpl$jceData$2.invoke(outgoingSourceImpl.kt:216)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at net.mamoe.mirai.internal.message.source.OnlineMessageSourceToGroupImpl.getJceData(outgoingSourceImpl.kt:216)
	at net.mamoe.mirai.internal.message.source.OnlineMessageSourceToGroupImpl.toJceData(outgoingSourceImpl.kt:252)
	at net.mamoe.mirai.internal.message.protocol.impl.QuoteReplyProtocol$Encoder.process(QuoteReplyProtocol.kt:160)
	at net.mamoe.mirai.internal.message.protocol.impl.QuoteReplyProtocol$Encoder.process(QuoteReplyProtocol.kt:156)
	at net.mamoe.mirai.internal.message.protocol.encode.MessageEncoderProcessor.process(MessageEncoder.kt:35)
	at net.mamoe.mirai.internal.message.protocol.encode.MessageEncoderProcessor.process(MessageEncoder.kt:26)
	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.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$encode$1$visitSingleMessage$1.invokeSuspend(MessageProtocolFacade.kt:279)
	at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl$encode$1$visitSingleMessage$1.invoke(MessageProtocolFacade.kt)
	at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl$encode$1$visitSingleMessage$1.invoke(MessageProtocolFacade.kt)
	at net.mamoe.mirai.internal.utils.RunCoroutineInPlaceKt.runCoroutineInPlace(runCoroutineInPlace.kt:26)
	at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl$encode$1.visitSingleMessage(MessageProtocolFacade.kt:278)
	at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl$encode$1.visitSingleMessage(MessageProtocolFacade.kt:276)
	at net.mamoe.mirai.message.data.visitor.AbstractMessageVisitor.visitMessageMetadata(MessageVisitor.kt:117)
	at net.mamoe.mirai.message.data.visitor.AbstractMessageVisitor.visitQuoteReply(MessageVisitor.kt:130)
	at net.mamoe.mirai.message.data.QuoteReply.accept(QuoteReply.kt:68)
	at net.mamoe.mirai.message.data.LinearMessageChainImpl.acceptChildren(impl.kt:197)
	at net.mamoe.mirai.message.data.visitor.RecursiveMessageVisitor.visitMessage(MessageVisitor.kt:243)
	at net.mamoe.mirai.message.data.visitor.RecursiveMessageVisitor.visitMessage(MessageVisitor.kt:237)
	at net.mamoe.mirai.message.data.visitor.AbstractMessageVisitor.visitMessageChain(MessageVisitor.kt:104)
	at net.mamoe.mirai.message.data.MessageChain.accept(MessageChain.kt:262)
	at net.mamoe.mirai.message.data.visitor.MessageVisitorKt.accept(MessageVisitor.kt:261)
	at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl.encode(MessageProtocolFacade.kt:276)
	at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacade$INSTANCE.encode(MessageProtocolFacade.kt)
	at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacade.encode$default(MessageProtocolFacade.kt:64)
	at net.mamoe.mirai.internal.message.protocol.outgoing.GroupMessageProtocolStrategy.createPacketsForGeneralMessage$suspendImpl(MessageProtocolStrategy.kt:301)
	at net.mamoe.mirai.internal.message.protocol.outgoing.GroupMessageProtocolStrategy.createPacketsForGeneralMessage(MessageProtocolStrategy.kt)
	at net.mamoe.mirai.internal.message.protocol.outgoing.GroupMessageProtocolStrategy.createPacketsForGeneralMessage(MessageProtocolStrategy.kt:139)
	at net.mamoe.mirai.internal.message.protocol.impl.GeneralMessageSenderProtocol$GeneralMessageSender.process(GeneralMessageSenderProtocol.kt:64)
	at net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessageProcessorAdapter.process(OutgoingMessagePipelineProcessor.kt:26)
	at net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessageProcessorAdapter.process(OutgoingMessagePipelineProcessor.kt:20)
	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.MessageProtocolFacadeImpl.preprocessAndSendOutgoingImpl(MessageProtocolFacade.kt:361)
	at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl.preprocessAndSendOutgoing(MessageProtocolFacade.kt:345)
	at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacade$INSTANCE.preprocessAndSendOutgoing(MessageProtocolFacade.kt)
	at net.mamoe.mirai.internal.contact.AbstractUserKt.sendMessageImpl(AbstractUser.kt:263)
	at net.mamoe.mirai.internal.contact.CommonGroupImpl.sendMessage$suspendImpl(GroupImpl.kt:203)
	at net.mamoe.mirai.internal.contact.CommonGroupImpl.sendMessage(GroupImpl.kt)
	at net.mamoe.mirai.message.MessageReceipt$quoteReply$4.invoke(MessageReceipt.kt:137)
	at net.mamoe.mirai.message.MessageReceipt$quoteReply$4.invoke(MessageReceipt.kt)
	at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1.invokeSuspend(IntrinsicsJvm.kt:205)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115)
	at me.him188.kotlin.jvm.blocking.bridge.internal.RunSuspendKt.$runSuspend$(RunSuspend.kt:18)
	at net.mamoe.mirai.message.MessageReceipt.quoteReply(MessageReceipt.kt)
	at icu.kevin557.klbot.command.impl.Test.run(Test.java:32)
	at icu.kevin557.klbot.bot.KLBot.lambda$run$0(KLBot.java:95)
	at net.mamoe.mirai.event.EventChannel$subscribeAlways$2$1.invoke(EventChannel.kt:626)
	at net.mamoe.mirai.event.EventChannel$subscribeAlways$2$1.invoke(EventChannel.kt:626)
	at kotlinx.coroutines.InterruptibleKt.runInterruptibleInExpectedContext(Interruptible.kt:51)
	at kotlinx.coroutines.InterruptibleKt.access$runInterruptibleInExpectedContext(Interruptible.kt:1)
	at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:43)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
	at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

网络日志

No response

补充信息

getSources()可以正常获取到

@Him188
Copy link
Member

Him188 commented Nov 11, 2022

引用消息必须要有其他内容,不能只包含引用

@Him188 Him188 added z:as-designed 状态: 一个正常的行为 z:wait-for-reply 状态: 等待回复 labels Nov 11, 2022
@KKW557
Copy link
Author

KKW557 commented Nov 11, 2022

有其他内容
forwardMessage.quoteReply("FORWARD QUOTE TEST");

@Him188 Him188 removed z:as-designed 状态: 一个正常的行为 z:wait-for-reply 状态: 等待回复 labels Nov 12, 2022
@Karlatemp
Copy link
Member

已经成功复现

@Karlatemp Karlatemp added N 优先级: 一般 t:problem 类型: 不容易归类为特性或 bug 的综合问题 s:core 子系统: mirai-core M 优先级: 主要 and removed N 优先级: 一般 labels Nov 13, 2022
@Karlatemp
Copy link
Member

To mamoe: 从中发现的问题有点多啊...

@Him188
Copy link
Member

Him188 commented Nov 17, 2022

To mamoe: 从中发现的问题有点多啊...

有什么问题

@Karlatemp
Copy link
Member

To mamoe: 从中发现的问题有点多啊...

有什么问题

没什么,只是被那个测试环境的service (Awaiter)给误导了

@Him188
Copy link
Member

Him188 commented Nov 17, 2022

@Karlatemp 笨蛋

@Karlatemp
Copy link
Member

@Him188 baka

@Karlatemp Karlatemp added this to the 2.14.0-RC milestone Jan 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
M 优先级: 主要 s:core 子系统: mirai-core t:problem 类型: 不容易归类为特性或 bug 的综合问题
Projects
None yet
Development

No branches or pull requests

3 participants