Mon code est comme ceci:
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]);
Le code fonctionne correctement, mais si la personne a le rôle de "Serveur Booster", cela donne une erreur d'autorisation manquante.
Comment puis-je lui faire prendre tous les rôles à l'exception du rôle de "booster de serveur"?
3 Réponses :
Personne ne peut attribuer / réaffecter des rôles de rappel ou des rôles de bot. Vous pouvez éviter toute erreur résultant de cela en ajoutant des rôles managed (rôles que vous ne pouvez pas attribuer / réaffecter) à la baie.
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
]);
(node:11764) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body roles[1]: Value "{}" is not snowflake. cette erreur: (node:11764) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body roles[1]: Value "{}" is not snowflake.
Le rôle "Serveur Booster" ne peut être donné que lorsqu'un utilisateur booste le serveur.
Bon codage.
J'ai trouvé la réponse à mon problème. Cela ne donne pas d'erreur quand je le fais de cette façon.
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);
vérifiez si votre bot est plus haut dans la liste des rôles que le rôle de booster de serveur et sinon assurez-vous qu'il est
Je suis autorisé à assumer et à attribuer le rôle "Serveur Booster"