【问题标题】:Comparing a message authors roles比较消息作者角色
【发布时间】:2021-01-30 18:39:48
【问题描述】:

我已经问过一个与此有些相关的问题,但我得到的答案有点缺陷,直到现在我才注意到。我希望 add role 命令仅在 message.author 的最高角色高于上述用户的最高角色时才起作用。这是我上次提问时得到的答案:

const highest = member.roles.highest; // this is the members highest role

// if role is higher or equal to highest role
if(highest.comparePositionTo(role) <= 0)
  return message.channel.send('You cannot add roles equal/higher to that member\'s highest role')

虽然它有效,但它不是我想要的,这个命令只有在提到的角色 message.author 低于提到的用户的最高角色时才有效。所以我把它修改成这样:

const { MessageEmbed } = require("discord.js");

module.exports = {
  name: "addrole",
  description: "adds a role to a member",
  execute: async (message , args) => {
    if (!message.member.hasPermission("MANAGE_ROLES")) return message.channel.send("Invalid Permissions")
    let member = message.mentions.members.first();
    let role = message.mentions.roles.first();
    if (!member)
      return message.reply("Please mention a valid member of this server");
    if (!role) return message.reply("please mention a valid role of this server");

    const highest = message.author.roles.highest;

    if(highest.comparePositionTo(role) <= 0)
    return message.channel.send(`You cannot add roles equal/higher to that member's highest role`)

    let addroleembed = new MessageEmbed()
    .setTitle(`:white_check_mark: ${role.name} has been added to ${member.user}`)
    .addField(`hippity hoppity this role is now ${member.user}'s property`)
    .setFooter(`Action performed by ${message.author.tag}`)
    .setColor('77B255')
   addroleembed.setTimestamp();

    member.roles.add(role);
  message.channel.send(addroleembed)

}}  

但这似乎不起作用。我收到错误“TypeError:无法读取未定义的属性‘最高’。 如果有人可以在这里帮助我,我将不胜感激

【问题讨论】:

标签: discord discord.js


【解决方案1】:

const highest = message.author.roles.highest;

消息的作者是用户,用户没有角色。这就是它说的原因:cannot read prperty of undefined 因为author.roles 不是一个东西。您必须获得成员,才能获得角色。这样做:

const highest = message.member.roles.highest;

在这里,您将消息的作者(用户)作为 GuildMember(成员),然后询问该成员的最高角色。

【讨论】:

    猜你喜欢
    • 2021-02-06
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2012-02-04
    • 2013-10-07
    • 1970-01-01
    相关资源
    最近更新 更多