【mirai-core】当我使用使用聊天记录消息回复时,机器人生成的引用消息会自带一个@TA
-
- 我使用了new ForwardMessage作为消息回复。
- 当我在 ForwardMessage的Node中的一个MessageChain中使用了QuoteReply引用了一条消息后,这个Node消息前面自带一个 @TA
- 电脑版显示没有这样的问题,这种问题出现在了移动端
关键代码
// [其他代码] for (QuoteReply quote : quoteList) { MessageSource source = quote.getSource(); MessageChain originalMessage = chainService.selectMessageChain(source); if (originalMessage == null) { // 这里在Node中引入了quote引用,quote是QuoteReplay类型的 nodeList.add(new ForwardMessage.Node(botId, (int) (System.currentTimeMillis() / 1000), "警告:未存储该消息的原数据", quote)); break; } // [其他 nodeList.add] } // [其他代码] subject.sendMessage(new ForwardMessage( preview, String.format("%s的聊天记录", botName), String.format("[回复 @%s]", event.getSenderName()), String.format("回复 @%s", event.getSenderName()), String.format("查看%d条回复消息", nodeList.size()), nodeList ));
效果图
希望修复,感激不尽!!!
-
如果你确定有问题,你应该提供最小复现代码,而不是让人猜怎么复现
-
@Karlatemp ok,下面是复现代码
GlobalEventChannel.INSTANCE.subscribeAlways(MessageEvent.class, event -> { if (event.getMessage().contentToString().equals("test")) { List<String> preview = new ArrayList<>(); List<ForwardMessage.Node> nodeList = new ArrayList<>(); // 当在 ForwardMessage.Node 添加了 QuoteReply,这个 QuoteReply 就会自带 @TA nodeList.add(new ForwardMessage.Node(event.getBot().getId(), event.getTime(), event.getBot().getNick(), new QuoteReply(event.getMessage()))); event.getSubject().sendMessage(new ForwardMessage(preview, "我的聊天记录", "[聊天记录]", "聊天记录", String.format("查看%d条回复消息", nodeList.size()), nodeList )); } });
效果图
-
@2446694 测试环境必须是群聊,好友不行
-