检查用户和机器人角色是否高于提到的用户(discord.js)

时间:2020-12-23 08:03:25

标签: javascript node.js discord discord.js

我正在创建一个设置昵称命令,这是我的代码:

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");
}

知道如何修复吗?

1 个答案:

答案 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。但是,由于您获得了自己机器人的角色,因此这应该不是什么大问题。