Discord.js机器人无法检测用户角色赋予问题求助
问题解决:Discord.js 机器人无法检测角色更新事件
你的guildMemberUpdate事件不触发的核心原因是缺少GuildMembers网关意图,且该意图属于Discord的特权网关意图,需要同时在代码和开发者后台配置才能生效。
1. 补充代码中的网关意图
修改客户端初始化代码,在intents数组中添加GatewayIntentBits.GuildMembers:
const client = new Client({ intents: [ GatewayIntentBits.DirectMessages, GatewayIntentBits.Guilds, GatewayIntentBits.GuildBans, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMembers, // 新增此意图 ], partials: [Partials.Channel], });
2. 在Discord开发者后台开启特权意图
- 打开Discord开发者后台,进入你的机器人应用页面
- 切换到「Bot」标签页
- 下滑找到「Privileged Gateway Intents」区域,开启「Server Members Intent」选项
- 保存更改
额外验证点
- 确保机器人在目标服务器中拥有「查看服务器成员」的权限(默认角色已包含该权限,若手动修改过角色权限需确认)
- 重启机器人,让新的意图配置生效
原因说明
guildMemberUpdate事件的推送依赖GuildMembers网关意图,没有该意图时Discord网关不会向机器人发送成员角色变更的事件数据。而该意图属于特权意图,必须在开发者后台手动开启,仅在代码中添加无法生效。
内容的提问来源于stack exchange,提问作者Fxkitt
相关产品推荐
相关产品推荐

