如何让 discord.js 列出角色中的所有成员?

时间:2021-02-24 11:44:21

标签: discord.js

if(message.content == `${config.prefix}mods`) {
        const ListEmbed = new Discord.MessageEmbed()
            .setTitle('Mods:')
        .setDescription(message.guild.roles.cache.get('813803673703809034').members.map(m=>m.user.tag).join('\n'));
        message.channel.send(ListEmbed);                    
    }

嘿,我正在制作一个命令,显示具有该角色的所有成员,但似乎只发送了 1 个模组

1 个答案:

答案 0 :(得分:0)

await message.guild.roles.fetch();
let role = message.guild.roles.cache.find(role => role.id == args[0]);
if (!role) return message.channel.send('Role does not exist'); //if role cannot be found by entered ID

let roleMembers = role.members.map(m  => m.user.tag).join('\n');

const ListEmbed = new Discord.MessageEmbed()
    .setTitle(`Users with \`${role.name}\``)
    .setDescription(roleMembers);
    message.channel.send(ListEmbed);    
};

确保您的命令是异步的,否则它不会运行 await message.guild.roles.fetch(); - 这会获取服务器中的所有角色以确保命令可靠地工作。

Discord.jsV12 中,get 方法被编辑并实现了 find

除此之外,我强烈建议定义用于嵌入和搜索的变量,因为它更容易陷入错误陷阱。

如果您有很多成员担任该角色,您将遇到 maximum character limit 来表示嵌入描述。只需在多个嵌入之间拆分参数即可。