【问题标题】:Toggle role of a member切换成员的角色
【发布时间】:2021-10-01 04:22:49
【问题描述】:

所以我尝试做的是,如果标记的用户没有标记的角色,机器人会给他们标记的角色,如果标记的用户已经有标记的角色,机器人会从他们身上删除它。但它只给标记的用户角色,即使用户已经拥有角色。

if (!member.roles.cache.has(role)) { 
  member.roles.add(role)
  message.channel.send(new MessageEmbed()
    .setColor("RED")
    .setDescription(`${role} wurde ${member} hinzugefügt.`))

} else if (member.roles.cache.has(role)) { 
  member.roles.remove(role)
  message.channel.send(new MessageEmbed()
    .setColor("RED")
    .setDescription(`${role} wurde von ${member} entfernt.`)
}

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    您的role 变量似乎是Role 对象(可能是message.mentions.roles.first())。

    由于member.roles.cache 是一个集合,它的has 方法接受一个I​​D 作为参数。所以试试看if (member.roles.cache.has(role.id))

    此外,您可能应该在发送确认消息之前等待添加/删除角色。查看下面的代码。

    if (member.roles.cache.has(role.id)) {
      await member.roles.remove(role);
    
      return message.channel.send(
        new MessageEmbed()
          .setColor('RED')
          .setDescription(`${role} wurde von ${member} entfernt.`),
      );
    }
    
    await member.roles.add(role);
    message.channel.send(
      new MessageEmbed()
        .setColor('RED')
        .setDescription(`${role} wurde ${member} hinzugefügt.`),
    );
    

    PS:确保你的处理程序是一个异步函数,因为我在上面使用await

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-19
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多