列出具有特定角色的用户(discord.js v12)



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

错误: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);
});
},
};

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的属性,因此您不必获取所有成员并检查它们是否每个成员都具有角色。

最新更新