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 的意图。