【问题标题】:How to know if a user already has a role in an addrole command如何知道用户是否已经在 addrole 命令中具有角色
【发布时间】:2020-10-16 19:41:08
【问题描述】:

如果用户在 addrole 命令中执行此操作,我想发送一条错误消息,说明用户已经拥有该角色。我当前的命令是:

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.member.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.tag}`)
    .setFooter(`Action performed by ${message.author.tag}`)
    .setColor('77B255')
   addroleembed.setTimestamp();

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

}}  

我尝试过使用

 if(!message.member.roles.cache.some(r=>[`${role.name}`].includes(r.name)))

 if (member.roles.has(role.id) {

但是这些似乎都不起作用,有人知道这背后的原因吗?如果我不能使用这两种方法中的任何一种,你能建议我一个解决方案吗?

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    你们好亲密!

    使用has()时,您只需要cache

    member.roles.cache.has(<RoleID>);
    

    了解更多Here

    【讨论】:

      【解决方案2】:

      你需要结合你的两次尝试。

      if(message.member.roles.cache.has("role ID") {
          //rest of your code
      } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-13
        • 2021-06-11
        • 2021-07-06
        • 1970-01-01
        • 2020-09-13
        • 2015-04-20
        相关资源
        最近更新 更多