为何event.getMessage().getContentDisplay()无返回值?Discord Bot异常排查
JDA Bot无法响应
!ping且消息内容为空的解决方案 问题分析
你的Bot无法响应!ping指令,且控制台输出消息内容为空,核心原因是未启用Discord的MESSAGE_CONTENT特权意图。从JDA 5版本开始,Discord限制了Bot读取消息内容的权限,必须手动开启该意图才能获取消息文本。
解决步骤
1. 在Discord开发者门户开启特权意图
- 登录Discord开发者平台,打开你的Bot应用
- 切换到「Bot」页面,找到「Privileged Gateway Intents」区域
- 开启「Message Content Intent」选项
2. 修改代码添加必要的GatewayIntents
首先导入GatewayIntent类:
import net.dv8tion.jda.api.requests.GatewayIntent;
然后修改main方法中的JDABuilder配置,添加意图声明:
public static void main(String[] args) throws LoginException { JDA bot = JDABuilder.createDefault("TOKEN") .enableIntents(GatewayIntent.GUILD_MESSAGES, GatewayIntent.MESSAGE_CONTENT) .setActivity(Activity.playing("Working on this bot")) .addEventListeners(new DiscordBot()) .build(); }
说明
GUILD_MESSAGES意图用于接收服务器内的消息事件MESSAGE_CONTENT是特权意图,必须在开发者平台和代码中同时开启,才能正常获取消息的原始内容和展示内容- 替换
addEventListener为addEventListeners是JDA推荐的写法,功能一致但更符合API规范
内容的提问来源于stack exchange,提问作者Rexstech
相关产品推荐
相关产品推荐

