You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDA Discord Bot遇ErrorResponseException 10008:未知消息问题求助

解决JDA中编辑消息时的ErrorResponseException 10008: Unknown Message问题

你的问题根源在于异步操作的时序问题,以及错误地使用getLatestMessageId()来获取刚发送的消息ID,具体分析和解决方案如下:

问题分析

JDA的sendMessage().queue()是异步执行的——调用这个方法后,代码会立刻继续往下走,而消息实际上还在发送到Discord服务器的过程中。这时候你立刻调用getLatestMessageId(),会出现两个致命问题:

  1. 刚发送的消息还没被Discord服务器确认,频道的最新消息ID还没更新;
  2. 如果在这极短的时间内有其他用户发送了消息,你拿到的会是别人的消息ID。

这两种情况都会导致后续调用editMessageById()时,传入的ID是无效或错误的,从而抛出Unknown Message错误。

解决方案

正确的做法是在sendMessage()的回调函数中获取消息ID,因为回调会在消息成功发送到Discord并返回后执行,这时拿到的ID才是绝对可靠的。

修改你的AutoController中的run方法代码:

@Override
public void run(){
    try {
        while (true) {
            sleep((long) timer);
            TextChannel channel = event.getGuild().getTextChannelById(channelId);
            if (channel == null) {
                // 先判断频道是否存在,避免空指针
                System.err.println("指定的频道不存在!");
                continue;
            }
            if(messageId == null){
                // 使用回调获取正确的消息ID
                channel.sendMessage("A").queue(message -> {
                    this.messageId = message.getId();
                    System.out.println("成功发送消息,ID:" + messageId);
                }, error -> {
                    // 处理发送失败的情况
                    System.err.println("发送消息失败:" + error.getMessage());
                });
            }else{
                channel.editMessageById(messageId,"B").queue(editedMessage -> {
                    System.out.println("消息编辑成功");
                }, error -> {
                    System.err.println("编辑消息失败:" + error.getMessage());
                });
            }
        }
    } catch (InterruptedException e) {
        throw new RuntimeException(e);
    }
}

额外注意事项

  • 尽量避免使用getLatestMessageId()来获取Bot自己发送的消息ID,这个方法仅适用于获取频道当前最新消息,完全无法保证是你刚发送的那条;
  • 每次操作频道前,最好先判断频道是否存在(channel != null),避免空指针异常;
  • 给queue()添加失败回调,能帮你更方便地排查发送/编辑过程中的错误。

内容的提问来源于stack exchange,提问作者Slavko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:30:41