如何列出在Disord.Js中有角色的所有成员

Kil*_*ave 1 javascript discord.js

如何使用列出角色中的成员Discord.js

我的代码:

client.on("message", message => {
    var guild = message.guild;
    let args = message.content.split(" ").slice(1);
    if (!message.content.startsWith(prefix)) return;
    if (message.author.bot) return; 
    if(message.content.startsWith(prefix + 'go4-add')) {
        guild.member(message.mentions.users.first()).addRole('415665311828803584');                     
    }
});
Run Code Online (Sandbox Code Playgroud)

我将如何列出所有go4在嵌入中起作用的成员。.go4-list在通道中输入消息后,我希望漫游器以嵌入方式回复。

new*_*bie 8

<Role>.members返回集合GuildMember秒。只需映射此集合即可获取所需的属性。

这是根据您的情况的示例:

message.guild.roles.get('415665311828803584').members.map(m=>m.user.tag);
Run Code Online (Sandbox Code Playgroud)

这将从具有“ go4”角色的成员中输出用户标签数组。现在,您可以.join(...)将此数组更改为所需的格式。

另外,guild.member(message.mentions.users.first()).addRole('415665311828803584');可以缩短为:message.mentions.members.first().addRole('415665311828803584');

这是一个结果的粗略示例:

client.on("message", message => {

    if(message.content.startsWith(`${prefix}go4-add`)) {
        message.mentions.members.first().addRole('415665311828803584'); // gets the <GuildMember> from a mention and then adds the role to that member                     
    }

    if(message.content == `${prefix}go4-list`) {
        const ListEmbed = new Discord.RichEmbed()
            .setTitle('Users with the go4 role:')
            .setDescription(message.guild.roles.get('415665311828803584').members.map(m=>m.user.tag).join('\n'));
        message.channel.send(ListEmbed);                    
    }
});
Run Code Online (Sandbox Code Playgroud)

正如@Wright在他的回答中提到的那样,如果成员过多,则嵌入最多只能容纳2048个字符,因此会抛出错误,因此您可能要在发送嵌入之前进行一些检查,然后通过拆分来处理过大的嵌入将它们分成多个嵌入消息,或者使用基于反应的页面。