我正在创建一个设置昵称命令,这是我的代码:
if (message.mentions.members.first().roles.highest.position > bot.user.roles.highest.position) return message.channel.send("My highest role is lower than the mentioned user's role");
但是那个代码有一个错误:Type error: Cannot read property of "highest" of undefined
我也试过这个:
if (message.mentions.members.first().roles.highest.comparePositionTo(bot.user.roles.highest) > 0) {
return message.channel.send("Your highest role is lower than the mentioned user's role");
}
知道如何修复吗?
答案 0 :(得分:1)
bot.user
是一个 User
对象,它不包含任何与服务器相关的数据。您要查找的是 GuildMember
对象。
为了获得机器人的角色,您需要从公会中获取成员。这可以通过 GuildMemberManager.resolve
实现。为此,您可以使用公会的内置属性。
您生成的代码应如下所示:
if(message.mentions.members.first().roles.highest.position > message.guild.members.resolve(bot.user).roles.highest.position)
return message.channel.send("My highest role is lower than the mentioned user's role");
有时,.resolve
会返回 undefined
。在这种情况下,您需要使用 .fetch
。但是,由于您获得了自己机器人的角色,因此这应该不是什么大问题。