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

Discord Java机器人无法响应消息问题排查求助

解决Discord JDA机器人不响应消息的问题

我看了你的代码,发现几个关键问题导致机器人没反应,咱们一步步修复:

1. 事件处理方法名拼写错误

你写的方法名是onGuildMessageRecived,但JDA要求的正确方法名是onGuildMessageReceived(注意末尾多了一个字母e)。JDA是通过方法签名来识别事件处理器的,拼写错了框架就找不到这个方法,自然不会触发命令响应。

2. 监听器类未正确实现事件接口

你的Commands类需要实现EventListener接口,最简便的方式是继承ListenerAdapter(它已经帮你实现了接口,还提供了所有事件方法的空实现),这样JDA才能把它当作有效的事件监听器。

3. 缺失必要的网关意图(JDA v4+)

从JDA版本4开始,默认不允许读取消息内容,你需要在代码里开启MESSAGE_CONTENT意图,同时还要去Discord开发者后台的机器人页面手动开启这个权限,否则机器人根本接收不到消息内容。


修正后的完整代码

监听器类(Commands.java)

import net.dv8tion.jda.api.events.guild.message.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

public class Commands extends ListenerAdapter {
    @Override
    public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
        // 忽略机器人自身的消息,避免循环触发
        if (event.getAuthor().isBot()) {
            return;
        }

        String[] args = event.getMessage().getContentRaw().split(" ");
        if (args[0].equalsIgnoreCase(Main.prefix + "info")) {
            event.getChannel().sendTyping().queue();
            event.getChannel().sendMessage("Started on 09.01.2021").queue();
        }
    }
}

主类初始化代码

import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.entities.OnlineStatus;
import net.dv8tion.jda.api.requests.GatewayIntent;
import net.dv8tion.jda.api.exceptions.LoginException;

public class Main {
    public static JDA jda;
    public static String prefix = "+";

    public static void main(String[] args) throws LoginException {
        jda = JDABuilder.createDefault(REDACTED)
                // 开启消息内容意图,必须配置
                .enableIntents(GatewayIntent.MESSAGE_CONTENT)
                .build();
        
        jda.getPresence().setStatus(OnlineStatus.DO_NOT_DISTURB);
        jda.getPresence().setActivity(Activity.watching("Im watching you"));
        jda.addEventListener(new Commands());
    }
}

最后别忘了去Discord开发者后台,找到你的机器人,在「Privileged Gateway Intents」里把「Message Content Intent」开关打开,不然代码里开了意图也没用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 03:42:40