成员具有辅助角色时,不一致的角色集会出错

时间:2020-06-30 07:33:59

标签: node.js discord discord.js

我使用djs v12即时尝试使jail命令生效,而我使用<member>.roles.set(["id"])即时消息,但是当成员具有助推器角色时,会出现缺少权限错误。 我尝试过

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

当我尝试使用此bot删除成员中的所有角色,但将其删除jail角色时,我尝试了

<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角色 我该怎么解决

1 个答案:

答案 0 :(得分:0)

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

这不是检查x.id是否不等于增强角色ID,而是检查x.id的对立是否等于增强角色ID,简化为:

false == "string",它应该始终为false,所以我不确定为什么要删除所有角色,应该删除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);