【问题标题】:Check if user and bot role is higher than the mentioned user (discord.js)检查用户和机器人角色是否高于提到的用户(discord.js)
【发布时间】:2021-04-01 21:00:24
【问题描述】:

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

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

知道如何解决吗?

【问题讨论】:

标签: javascript node.js discord discord.js


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

【讨论】:

  • @WideIrenaKan1 您必须更具体一点,以便任何人提供帮助。如果您可以使用堆栈跟踪而不是仅使用错误消息来编辑您的初始问题,那么有人将能够提供帮助。
猜你喜欢
  • 2021-11-15
  • 2021-02-24
  • 1970-01-01
  • 2021-01-02
  • 2021-05-30
  • 2011-01-20
  • 2021-10-25
  • 1970-01-01
  • 2020-09-21
相关资源
最近更新 更多