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

Java Discord Bot无法获取消息内容问题求助

解决JDA机器人无法获取消息内容的问题

核心原因

Discord从2022年开始,需要专门开启MESSAGE_CONTENT网关权限才能获取消息内容——仅给机器人服务器管理员权限没用,而且必须先在开发者后台开启这个权限,再在代码中启用,否则程序会初始化失败退出。

解决步骤

  1. 在Discord开发者后台开启权限

    • 登录Discord开发者平台,进入你的机器人应用页面
    • 切换到"Bot"标签页,找到"Privileged Gateway Intents"区域
    • 打开"MESSAGE CONTENT INTENT"的开关,点击页面底部的"Save Changes"保存
  2. 修改代码启用对应Intent
    在JDABuilder中添加GatewayIntent.MESSAGE_CONTENT的启用,修改后的代码如下:

    public static void main(String[] args) {
        JDA jda = JDABuilder.createDefault(token)
                .setActivity(Activity.playing("something"))
                .enableIntents(GatewayIntent.GUILD_MESSAGES, GatewayIntent.DIRECT_MESSAGES, GatewayIntent.MESSAGE_CONTENT)
                .addEventListeners(new DiscordBot())
                .build();
    }
    
    @Override
    public void onMessageReceived(@NotNull MessageReceivedEvent event) {
        System.out.println(event.getMessage().getContentRaw());
        System.out.println(event.getAuthor().getName());
    }
    
  3. 确认JDA版本兼容性
    确保你使用的JDA版本是5.x及以上,旧版本(比如4.x)对新的网关权限支持不完善,建议升级到最新稳定版。

补充说明

  • 之前添加GatewayIntent.MESSAGE_CONTENT后程序退出,是因为开发者后台没开这个权限,Discord拒绝了机器人的连接请求,导致JDA初始化失败。
  • 服务器管理员权限和网关Intent权限是两个独立的权限体系:前者控制机器人在服务器内的操作权限,后者控制机器人能接收哪些网关事件数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:55:16