【问题标题】:Listing users who has specific roles (discord.js v12)列出具有特定角色的用户 (discord.js v12)
【发布时间】:2021-08-20 17:27:18
【问题描述】:

我正在尝试列出所有具有特定角色的用户。我正在尝试列出拥有该角色的用户数量以及拥有该角色的用户。

错误:TypeError: Cannot read property 'members' of null

module.exports = {
    name: "list",
    description: "Lists all users with roles",
    async execute(message, client, args) {
        let roleName = message.content.split(" ").slice(1).join(" ");

        if (!roleName) return message.channel.send("Please mention or provide a role ID.");

        message.guild.members.fetch().then((members) => {
            let membersWithRole = members
                .filter((mmbr) => mmbr.roles.cache.get(roleName))
                .map((m) => m.user.tag)
                .join("\n");

            const sizes = message.guild.roles.resolve(roleName).members.size;

            const embed1 = new Discord.MessageEmbed()
                .setTitle(`Users with ${roleName} (${sizes})`) // Users with RoleX, (1 users)
                .setDescription(membersWithRole) //
                .setColor("RANDOM");

            message.channel.send(embed1);
        });
    },
};

【问题讨论】:

标签: javascript node.js discord discord.js


【解决方案1】:

RoleManager#resolve 接受 RoleResolvable (Role, Snowflake),而不是名称。您必须尝试按名称查找 Role


module.exports = {
    name: "list",
    description: "Lists all users with roles",
    async execute(message, client, args) {
        const role = message.mentions.roles.first() ? message.mentions.roles.first() : message.guild.roles.cache.find(role => role.name === message.content.split(" ").slice(1).join(" ") || role.id === message.content.split(" ").slice(1).join(" "));
        if (!role) return message.channel.send("Please mention or provide a role ID.");

        const embed = new Discord.MessageEmbed()
            .setTitle(`Users with ${role.name} (${role.members.size})`)
            .setDescription(role.members.map(member => member.user.tag).join(', '))
            .setColor("RANDOM");
        message.channel.send(embed)
    },
};

请注意,Role 有一个名为 members 的属性,因此您不必获取所有成员并检查每个成员是否都有角色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 2020-10-20
    • 2021-03-16
    • 2021-08-28
    • 2019-12-11
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多