使用Discord.js v13无法获取服务器全部成员的问题求助
问题原因
1. 代码中缺少必要的网关意图
discord.js v13 拉取服务器全量成员必须开启GUILD_MEMBERS网关意图,你当前配置的intents列表里没有添加该参数,导致全量拉取请求被Discord网关拦截。
你传入query参数时能正常返回结果,是因为带搜索条件的成员拉取走的是单独的接口,不需要全量拉取对应的权限校验。
2. 未开启开发者后台的特权网关意图
GUILD_MEMBERS属于Discord的特权网关意图,除了代码中声明,还需要手动在Discord开发者后台的Bot设置页,开启「Server Members Intent」开关,否则即使代码中声明了意图也无法生效。
解决方法
- 修改你代码中Client实例的intents配置,添加
GUILD_MEMBERS:
const client = new Client({ intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_PRESENCES", "GUILD_MEMBERS"], });
- 前往Discord开发者后台的Bot管理页面,开启特权网关意图中的「Server Members Intent」开关。
- 若修改后仍无返回,检查Bot在对应服务器分配的角色是否拥有查看成员权限。
重启Bot后即可正常拉取全量成员列表。
内容的提问来源于stack exchange,提问作者kushagra agarwal
相关产品推荐
相关产品推荐

