MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    【mirai-core】当我使用使用聊天记录消息回复时,机器人生成的引用消息会自带一个@TA

    BUG反馈
    2
    5
    635
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 2
      2446694 最后由 2446694 编辑

      1. 我使用了new ForwardMessage作为消息回复。
      2. 当我在 ForwardMessage的Node中的一个MessageChain中使用了QuoteReply引用了一条消息后,这个Node消息前面自带一个 @TA
      3. 电脑版显示没有这样的问题,这种问题出现在了移动端

      关键代码

      //  [其他代码]
      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
      ));
      

      效果图
      ef0208c2-25ef-4876-8da7-5ca5fb753c76-image.png

      希望修复,感激不尽!!!

      1 条回复 最后回复 回复 引用 0
      • Karlatemp
        Karlatemp 最后由 编辑

        如果你确定有问题,你应该提供最小复现代码,而不是让人猜怎么复现

        2 1 条回复 最后回复 回复 引用 0
        • 2
          2446694 @Karlatemp 最后由 编辑

          @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
                          ));
                      }
                  });
          

          效果图

          638cb027-6b5b-4e7f-b450-82deb1edb65b-06E5702AED3DE87190EC74EF62DB6BFF.jpg
          e3a8267f-845c-46b1-80d5-db57fca5357c-BF160A2239D3374D4EE71B56D76CB34F.jpg

          2 1 条回复 最后回复 回复 引用 0
          • 2
            2446694 @2446694 最后由 编辑

            @2446694 测试环境必须是群聊,好友不行

            1 条回复 最后回复 回复 引用 0
            • Karlatemp
              Karlatemp 最后由 编辑

              Tracked: https://github.com/mamoe/mirai/issues/2653

              Karlatemp created this issue in mamoe/mirai

              open 转发消息中存在回复时会多出一个 `@xxx` #2653

              1 条回复 最后回复 回复 引用 0
              • 1 / 1
              • First post
                Last post
              Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact