我使用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角色 我该怎么解决
答案 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);