简体   繁体   English

由于“服务器助推器”角色,我遇到了权限缺失错误,我怎样才能让他担任除此角色以外的所有角色?

[英]I'm getting a missing permission error because of the "server booster" role, How can I get him to take all roles except this role?

My code is like this:我的代码是这样的:

let rMember = message.guild.member(message.mentions.users.first() || message.guild.members.cache.get([0]));

let crewmate = message.guild.roles.cache.get("752639666393710614");

rMember.roles.set([crewmate]);

The code works correctly, but if the person has the role of "Server Booster", it gives a Missing Permission error.代码工作正常,但如果此人具有“服务器加速器”的角色,则会出现“缺少权限”错误。

How can I get him to take all roles except the "server booster" role?我怎样才能让他担任除“服务器助推器”角色之外的所有角色?

Nobody can assign/reassign booster roles or bot roles.没有人可以分配/重新分配助推器角色或机器人角色。 You can prevent any errors coming from this by adding any managed roles (roles you can't assign/reassign) to the array.您可以通过向阵列添加任何managed角色(您无法分配/重新分配的角色)来防止由此产生的任何错误。

let rMember = message.guild.member(
 message.mentions.users.first() || message.guild.members.cache.get([0])
);

let crewmate = message.guild.roles.cache.get('752639666393710614');

rMember.roles.set([
 crewmate, // add the crewmate role
 ...rMember.roles.cache.filter((role) => role.managed).array(), // and any existing `managed` roles
]);

The role "Server Booster" can only be given when a user boost the server. “Server Booster”角色只能在用户提升服务器时授予。

Good coding.良好的编码。

I found the answer to my problem.我找到了我的问题的答案。 It doesn't give an error when I do it this way.当我这样做时,它不会出错。

let rMember = message.guild.member(message.mentions.users.first() || message.guild.members.cache.get([0]));


const crewmate = ["752639666393710614"];

if(rMember.roles.cache.has("server booster role id")) {
roles[1] = "server booster role id";
}

rMember.roles.set(crewmate);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM