Discord.js V13 如何获取指定服务器的所有成员?
Discord.js v13 服务器成员列表获取调整方案
前置配置要求
Discord.js v13 开始强制要求网关意图配置,获取成员列表前需要完成两项配置:
- 登录Discord开发者后台,进入对应Bot应用的设置页,在「Privileged Gateway Intents」板块开启Server Members Intent开关
- 初始化Bot客户端时明确声明
GUILD_MEMBERS意图,示例初始化代码如下:
const { Client, Intents } = require('discord.js'); const bot = new Client({ intents: [ Intents.FLAGS.GUILDS, // 基础服务器意图为必选项 Intents.FLAGS.GUILD_MEMBERS, // 成员拉取专属意图 // 其他业务所需意图可自行补充 ] });
调整后可运行代码
// 直接用get方法按ID获取服务器,比find效率更高 const guild = bot.guilds.cache.get(id); if (!guild) return console.log('未找到对应ID的服务器'); guild.members.fetch() .then(members => { members.forEach(member => console.log(member.user.username)); console.log(`本次共拉取到 ${members.size} 名成员`); }) .catch(err => console.error('成员拉取失败:', err));
注意事项
- 若目标服务器成员数超过1000,
guild.members.fetch()会自动完成分页拉取,无需手动处理分页逻辑 - 需确保Bot在目标服务器内拥有
View Server Insights或Manage Members权限,否则无法拉取完整的成员列表
内容的提问来源于stack exchange,提问作者Ndoc
相关产品推荐
相关产品推荐

