MiraiForum

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

    怎么在机器人发送消息之前,修改消息的内容

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

      我现在使用的是下面的方法(直接放在onEnable中)

      GlobalEventChannel.subscribeAlways<MessagePreSendEvent> {
                  for (msg in message.toMessageChain()) {
                      var resultType = false
                      val result = when (msg) {
                          is PlainText -> AipCensor.textCensor(client,msg)
                          is Image -> AipCensor.imageCensor(client,msg)
                          else -> JSONObject("null")
                      }
                      if (result.get("conclusion").equals("不合规")){
                          resultType = true
                          message = PlainText(ApiConfig.BlockMessage)
                      }
                      if (resultType) break
                  }
              }
      

      现在的情况是message = PlainText(ApiConfig.BlockMessage)这一条执行后机器人发送的消息还是原来的message的内容,但是控制台输出的内容是修改后的内容
      QQ截图20230322204932.png

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

        https://github.com/mamoe/mirai/pull/2525
        这个是bug,等下一个版本吧

        NoMathExpectation created this issue in mamoe/mirai

        closed 修复发送消息时实际发送的消息会忽略通过 `MessagePreSendEvent` 所进行的修改 #2525

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