我的Discord机器人的-members命令-discord.js

时间:2020-01-23 21:09:46

标签: discord.js

因此,我一直在尝试创建一个?members命令,该命令列出具有角色的所有用户。

到目前为止,我已经知道了:

if (message.content.startsWith("?members")) {
        let roleName = message.content.split(" ").slice(1).join(" ");

        let membersWithRole = message.guild.members.filter(member => {
            return member.roles.find("name", roleName);
        }).map(member => {
            return member.user.username;
        })

        const embed = new Discord.RichEmbed({
            "title": `Members in ${roleName}`,
            "description": membersWithRole.join("\n"),
            "color": 0xFFFF

        });

        return message.channel.send(embed);



    }

因此,如果您键入角色的确切名称,则它起作用,但在ping或键入第一个单词时,它不起作用。我一直在努力寻找解决方法,我想应该寻求帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

Ping通过时会被翻译成代码,在official guide中有很多有关如何解析它们的信息,在将其解析为角色ID之后,您可以只使用members.roles.get()因为这就是它们的索引依据。

关于查找部分名称,为此您将不得不在查找上运行一个函数并使用String.includes

return member.roles.find(role => role.name.includes(roleName));

这对于查找课程的全名也是有用的,因此它可以替换您现有的行。

但是,这可能会导致多个角色。但是,对于按整个角色名称进行搜索也是如此,因为对重复命名的角色没有任何限制。为此,您可能需要反转设计并首先通过message.guild.roles搜索任何匹配的角色,然后搜索具有找到的角色的成员。