【问题标题】:Discord.js Get all members that have a specific roleDiscord.js 获取所有具有特定角色的成员
【发布时间】: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' ]

【问题讨论】:

    标签: node.js discord.js roles member


    【解决方案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”是我。没有任何意义:(
      猜你喜欢
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 2020-11-03
      • 2022-01-13
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 2021-11-03
      相关资源
      最近更新 更多