Javascript Discord.js V12如何显示具有特定角色的所有成员?
我试图发出一个命令,显示具有特定角色的所有成员。该命令应该类似于Javascript Discord.js V12如何显示具有特定角色的所有成员?,javascript,discord.js,roles,Javascript,Discord.js,Roles,我试图发出一个命令,显示具有特定角色的所有成员。该命令应该类似于$rolelist,它在具有角色测试角色的消息中显示所有成员的显示名称。 如果可以的话,请帮帮我 client.on('message', async message => { if (message.content.startsWith(prefix + "rolelist")) { const testRole = message.guild.roles.cache.find(r
$rolelist
,它在具有角色测试角色的消息中显示所有成员的显示名称。
如果可以的话,请帮帮我
client.on('message', async message => {
if (message.content.startsWith(prefix + "rolelist")) {
const testRole = message.guild.roles.cache.find(role => role.name == "TEST ROLE");
const members = message.guild.members.filter(member => member.roles.find(testRole)).map(member => member.user.username)
message.channel.send(`These people currently have the TEST ROLE: \n${members}`)
}})
client.on('message',异步消息=>{
if(message.content.startsWith(前缀+“rolelist”)){
const Role=message.guild.roles.cache.find(Role=>Role.name==“测试角色”);
const Members=message.guild.Members.cache.filter(member=>member.roles.cache.find(role=>role==role)).map(member=>member.user.tag);
message.channel.send(`userswith${Role.name}:${Members}`);
};
});
由于您使用的是V12,您忘记将缓存添加到message.guild.members
和message.roles
另外,您使用的find函数是错误的
你不能这样使用它:
member.roles.cache.find(testRole)
以下是您应该如何使用它:
members.roles.cache.find(role=>role==testRole)
我的方法是创建一个等于空数组的变量。接下来,使用forEach循环,对于服务器的每个成员,您希望为某个角色找到.find(),如果它在该成员的角色中找到该角色,您可以将该用户的ID.push()推送到数组中,否则循环将继续。这可能不管用,只是我想到的。谢谢,管用。另外,如何使其显示用户的昵称?您可以使用GuildMember
的昵称
属性。示例:message.channel.send(member.昵称| | member.user.tag)
。(昵称可能未定义。如果是,我们将使用成员标记。)