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

JDA机器人添加消息反应失败求助(错误10008)

问题分析与解决

你遇到的Unknown Message错误(错误码10008)是因为代码逻辑搞错了操作对象,同时没有正确处理JDA的异步执行特性:

错误原因

  1. 你调用event.getMessage().addReaction()是在用户发送的命令消息上添加反应,这完全不是你要操作的机器人投票消息,偏离了需求。
  2. 退一步说,即便你想操作用户消息,event.reply()是异步执行的,后续的addReaction可能在Discord消息状态同步完成前就触发,导致系统找不到目标消息。

修复后的代码

正确的做法是在event.reply()的回调中获取机器人发送的投票消息,再给它添加反应:

@Override
protected void execute(CommandEvent event) {
    if (this.check(event)) {
        return;
    }
    var args = event.getArgs().trim();
    if (args.isEmpty()) {
        this.incorrectUsage(event);
        return;
    }
    var announcementFormat = this.getConfig().getMessages().get("pool-format")
            .replaceAll("%message", args);
    
    // 发送投票消息,并在回调中处理反应添加
    event.reply(announcementFormat)
        .queue(sentPollMessage -> {
            // 给机器人发送的投票消息添加需要的反应
            sentPollMessage.addReaction("👍").queue();
            sentPollMessage.addReaction("👎").queue();
            // 可以继续添加其他表情,比如 "🤷"
        }, throwable -> {
            // 处理投票消息发送失败的情况
            event.getChannel().sendMessage("抱歉,发送投票消息失败了!").queue();
        });
}

额外优化建议

  • 如果要添加多个反应,推荐使用addReactions()方法一次性处理,减少API请求次数:
    sentPollMessage.addReactions(
        Emoji.fromUnicode("👍"),
        Emoji.fromUnicode("👎"),
        Emoji.fromUnicode("🤷")
    ).queue();
    
  • 确保机器人在目标频道拥有添加反应的权限,否则会抛出权限相关的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:23:51