Discord.js 获取所有具有特定角色的成员
Posted
技术标签:
【中文标题】Discord.js 获取所有具有特定角色的成员【英文标题】:Discord.js Get all members that have a specific role 【发布时间】:2021-11-17 02:35:47 【问题描述】:我正在尝试获取具有特定角色的所有成员。每当我运行命令时,我只会得到我自己和机器人(如果机器人具有角色),但我在服务器中有 4 个其他人具有相同的角色,但他们都没有出现。如果我获取所有成员,它们会显示得很好。
有人知道为什么会这样吗?
代码:
client.on('message', message =>
if (message.content === prefix + 'add')
let list = client.guilds.cache.get("889906947711701022");
let role1 = list.roles.cache.get('890636907904639027').members.map(m => m.user.id);
console.log(role1);
);
控制台日志:
[ '227896530835603458' ]
【问题讨论】:
【参考方案1】:尝试获取所有成员,您当前的输出只是缓存的成员。
client.on('message', async message =>
if (message.content === prefix + 'add')
let list = client.guilds.cache.get("889906947711701022");
try
await list.members.fetch();
let role1 = list.roles.cache.get('890636907904639027').members.map(m => m.user.id);
console.log(role1);
catch (err)
console.error(err);
);
您需要启用 GuildMember 的 Intent。
【讨论】:
【参考方案2】:你可以试试这个:
let list = message.guild.members.cache.filter(m => m.roles.cache.get('890636907904639027'));
// console.log(list);
list
应该拥有所有具有该角色的公会成员。
【讨论】:
显示“Collection(1) [Map] ”并且“1”是我。没有任何意义:(以上是关于Discord.js 获取所有具有特定角色的成员的主要内容,如果未能解决你的问题,请参考以下文章
Discord.js 如何列出具有特定角色的所有成员的显示名称