Discord.js 获取具有特定角色的所有成员
Discord.js Get all members that have a specific role
我正在尝试获取具有特定角色的所有成员。每当我 运行 命令时,我只会得到我自己和机器人(如果机器人有角色),但我在服务器中有 4 个其他人具有相同的角色,并且 none 出现了。如果我获取所有成员,他们会正常显示。
有人知道为什么会这样吗?
代码:
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' ]
你可以试试这个:
let list = message.guild.members.cache.filter(m => m.roles.cache.get('890636907904639027'));
// console.log(list);
list
应该包含具有该角色的所有公会成员。
尝试获取所有成员,您当前的输出只是缓存的成员。
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 的意图。
我正在尝试获取具有特定角色的所有成员。每当我 运行 命令时,我只会得到我自己和机器人(如果机器人有角色),但我在服务器中有 4 个其他人具有相同的角色,并且 none 出现了。如果我获取所有成员,他们会正常显示。
有人知道为什么会这样吗?
代码:
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' ]
你可以试试这个:
let list = message.guild.members.cache.filter(m => m.roles.cache.get('890636907904639027'));
// console.log(list);
list
应该包含具有该角色的所有公会成员。
尝试获取所有成员,您当前的输出只是缓存的成员。
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 的意图。