1

我正在尝试发出一个命令,该命令将向我显示具有特定角色的所有成员。该命令应该是这样的$rolelist,它在具有角色的消息中显示所有成员的显示名称TEST ROLE。如果可以,请帮助我:D

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}`)
    }})
4

1 回答 1

2
client.on('message', async message => {
    if (message.content.startsWith(prefix + "rolelist")) {
        const Role = message.guild.roles.cache.find(role => role.name == "TEST ROLE");
        const Members = message.guild.members.cache.filter(member => member.roles.cache.find(role => role == Role)).map(member => member.user.tag);
        message.channel.send(`Users with ${Role.name}: ${Members}`);
    };
});

由于您使用的是 V12 ,因此您忘记添加cache了。message.guild.membersmessage.roles

另外,您使用的 find 功能错误。

你不能这样使用它:

member.roles.cache.find(testRole)

这是你应该如何使用它:

members.roles.cache.find(role => role == testRole)
于 2020-06-29T21:19:03.723 回答