首页 > 解决方案 > 当成员具有增强角色时,不和谐角色集会出错

问题描述

我正在使用 djs v12 我正在尝试制作 jail 命令并且我正在使用<member>.roles.set(["id"])但是当成员具有助推器角色时,它会给出 Missing Permissions 错误。我试过了

<member>.roles.remove(<member>.roles.cache.filter(x => !x.id == "booster role id"))
await <member>.roles.add("jail role id")

当我尝试这个机器人从成员中删除所有角色但它删除监狱角色时,我尝试了

<member>.roles.remove(<member>.roles.cache.filter(x => !x.id == "booster role id" || !x.id == "jail role id"))
await <member>.roles.add("jail role id")

但是机器人仍然扮演监狱角色,这意味着成员的角色为 0 我该如何解决这个问题

标签: node.jsdiscorddiscord.js

解决方案


错误之一是条件 !x.id == "booster role id"

这不是检查是否x.id不等于增强角色 id,它检查 x.id 的反面是否等于增强角色 id,简化为:

false == "string"这应该总是错误的,所以我不确定为什么它会删除所有角色,它应该删除 0

另一个问题是,||使用&&or 运算符时,每个角色都将被删除

但无论如何要修复:

const roles = <member>.roles;
roles.remove(roles.cache.filter(x => x.id !== "booster role id" && x.id !== "jail role id"));

if(!roles.cache.has("jail role id")) {
  await roles.add("jail role id");
}

但是,使用您所说的 set 方法可能会更容易:

const roles = ["jail role id"];

if(<member>.roles.cache.has("booster role id")) {
  roles[1] = "booster role id";
}

<member>.roles.set(roles);

推荐阅读