我有这个 memberlist 命令可以工作,但是如果我说一个不是在服务器上创建的角色,它不会发送 if(!rrole)
引号,它会发送嵌入以提及 id,如果我会尝试使用现有角色运行该命令,它不会发送任何内容,并且会给我一个错误,内容为 Cannot read property 'id' of undefined
module.exports = {
name: 'memberlist',
description: 'shows the member list with the specified role',
async execute(message, args, Discord) {
const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[0])
const embe = new Discord.MessageEmbed()
.setDescription(`${message.author.username} Mention the role or put the role ID`)
.setColor("RANDOM")
.setTimestamp()
if(!role) return message.channel.send(embe);
const rid = message.content.split(' ').splice(1).join(' ');
const rrole = message.guild.roles.cache.find(val => val.id === rid);
if (!rrole) return message.channel.send({embed: {description: `${message.author.username} \`${rid}\`
is not a role on this server`,
color: "RANDOM", timestamp: new Date()}});
const members = await message.guild.members.fetch().then((member) => {
if (Array.isArray(member)) {
return member(
(m) =>
`• **${m.displayName}**
(${m.user.tag} - ${member.user.id})`
)
} else {
return `• **${member.displayName}**
(${member.user} - ${member.user.id})`
}
})
if(!members)
return message.channel.send({embed: {description:
`there are no members that currently have **${role.name}** role`, color: "RANDOM", timestamp: new Date()}});
const embed = new Discord.MessageEmbed()
.setColor("RANDOM")
.addField({
name: `List of ${members}`,
value: `${message.guild.roles.cache.get(role).members.map(m=> "• " +
`${m.user.username}` + "#" + m.user.discriminator + `\n(${m.user.id})`).join('\n')}
that have the role \`${role.name}\``,
description: members,
maxPerPage: 20,
page: Number(message.arg),
});
message.channel.send(embed)
}
}