当成员具有助推器角色时,不和谐角色集会出错



im 使用 djs v12 im 尝试制作 jail 命令和 im 使用<member>.roles.set(["id"])但是当成员具有助推器角色时,它会给出缺少权限错误。 我试过了

<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 我该如何解决这个问题

其中一个错误是条件!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");
}

但是,使用设置方法可以更容易,如您所述:

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

最新更新