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"