【问题标题】:discord.js addrole command can be misused by moderatorsdiscord.js addrole 命令可能被版主滥用
【发布时间】:2020-12-24 14:03:20
【问题描述】:

我已经为我的机器人创建了一个添加角色命令,问题是,任何具有 mod 角色的人都可以滥用机器人来获得更高的角色,例如所有者角色,你们可以分享代码以添加到我当前的角色?

if (command === "addrole") {
  if (
    !message.member.roles.cache.some((r) =>
      ["Administrator", "Moderator"].includes(r.name)
    )
  )
    return message.reply("Sorry, you don't have permissions to add roles!");

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

  member.roles.add(role);
  return message.reply(
    ` ${role} has successfully been added to ${member.user.tag}`
  );
}

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    您可以使用Role.comparePositionTo()

    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')
    

    【讨论】:

    • 未处理的承诺拒绝:角色未定义
    • 我认为这意味着member 变量存在问题。
    • 你建议我做什么?
    • @peter23 我认为这是因为您将代码复制为原始代码并且没有进行调整。 member 属性是 undefined,因为它不是 defined。我认为您的意思是将此答案中的member 更改为message.member。这应该可以解决问题。
    • 实际上,他们在代码中将member定义为message.mentions.members.first()
    猜你喜欢
    • 2018-10-07
    • 2020-09-12
    • 2020-08-19
    • 2021-12-21
    • 2020-12-04
    • 2021-06-01
    • 2021-03-29
    • 2022-01-27
    • 2021-06-09
    相关资源
    最近更新 更多