Skip to content

RoleManager ​

Gestionnaire des rôles pour un serveur donné. Hérite de BaseManager et gère des instances de Role.

Contrairement à ChannelManager ou GuildManager, RoleManager n'est pas un singleton global sur client : une instance distincte est créée pour chaque Guild, et accessible via guild.roles.

ts
const guild = client.guilds.cache.get("SERVER_PUBLIC_ID")!;
const role = guild.roles.cache.get("ROLE_PUBLIC_ID");
js
const guild = client.guilds.cache.get("SERVER_PUBLIC_ID");
const role = guild.roles.cache.get("ROLE_PUBLIC_ID");

Propriétés ​

PropriétéTypeDescription
guildGuild (readonly)Le serveur auquel ce gestionnaire de rôles est rattaché. Défini une fois à la construction, jamais réassigné.
clientBloumeChat (hérité)Le client BloumeChat — identique à guild.client.
cacheCollection<string, Role> (hérité)Les rôles de ce serveur uniquement, indexés par identifiant public.

Méthodes ​

resolve(role) ​

ts
resolve(role: string | Role): Role | undefined
ParamètreTypeRequisDescription
rolestring | RoleOuiUn identifiant public de rôle, ou une instance Role déjà résolue.

Surcharge de BaseManager.resolve() qui accepte en plus une instance Role directement — pratique pour écrire des fonctions qui acceptent indifféremment un ID ou un objet déjà en main sans avoir à faire le test vous-même à chaque appel.

Comportement :

  • Si role est déjà une instance de Role (instanceof Role), elle est retournée telle quelle, sans consultation du cache — même si elle n'y figure pas.
  • Si role est une string, recherche dans this.cache — retourne undefined si absente.
  • Retourne undefined pour tout autre type (recherche purement locale, jamais de requête réseau).
ts
// Par ID
const role = guild.roles.resolve("ROLE_PUBLIC_ID");

// Par instance déjà en main — no-op utile
const same = guild.roles.resolve(role!);
js
// Par ID
const role = guild.roles.resolve("ROLE_PUBLIC_ID");

// Par instance déjà en main — no-op utile
const same = guild.roles.resolve(role);

getOrFetch(roleId) (4.2.0+) ​

ts
getOrFetch(roleId: string): Promise<Role | undefined>

Retourne le rôle en cache s'il y est déjà, sinon appelle guild.fetchRoles() (il n'existe pas d'endpoint pour récupérer un seul rôle — la liste complète du serveur est re-fetchée) et retourne celui qui correspond. Ne rejette jamais — renvoie undefined si le fetch échoue ou si le rôle n'existe pas.

ts
const role = await guild.roles.getOrFetch("ROLE_PUBLIC_ID");
if (role) console.log(role.name);
js
const role = await guild.roles.getOrFetch("ROLE_PUBLIC_ID");
if (role) console.log(role.name);

create(options) ​

ts
create(options: { name: string; color?: string; permissions?: bigint | string; hoist?: boolean }): Promise<Role>
ParamètreTypeRequisDéfautDescription
options.namestringOui—Nom du rôle.
options.colorstringNon(serveur)Couleur hexadécimale, ex. "#5e72e4".
options.permissionsbigint | stringNon(serveur)Bitmask de permissions — voir Permissions. Un bigint est automatiquement converti en string avant l'envoi (JSON ne supporte pas BigInt nativement).
options.hoistbooleanNon(serveur)Si true, le rôle s'affiche séparément dans la liste des membres.

Crée un rôle via POST /servers/:guildId/roles, l'insère dans this.cache, et le retourne.

ts
import { PermissionFlags } from "bloumechat";

const modPerms = PermissionFlags.KICK_MEMBERS | PermissionFlags.BAN_MEMBERS | PermissionFlags.MANAGE_MESSAGES;

const role = await guild.roles.create({
  name: "Modérateur",
  color: "#5e72e4",
  permissions: modPerms,
  hoist: true,
});
js
const { PermissionFlags } = require("bloumechat");

const modPerms = PermissionFlags.KICK_MEMBERS | PermissionFlags.BAN_MEMBERS | PermissionFlags.MANAGE_MESSAGES;

const role = await guild.roles.create({
  name: "Modérateur",
  color: "#5e72e4",
  permissions: modPerms,
  hoist: true,
});

Erreurs possibles : rejette avec l'erreur apiCall() standard si le bot n'a pas MANAGE_ROLES sur ce serveur, si name est invalide, ou si le serveur a atteint sa limite de rôles.

delete(roleId) ​

ts
delete(roleId: string): Promise<void>
ParamètreTypeRequisDescription
roleIdstringOuiIdentifiant public du rôle à supprimer.

Supprime définitivement le rôle via DELETE /servers/:guildId/roles/:roleId, puis le retire de this.cache. L'opération est irréversible — tous les membres qui avaient ce rôle le perdent immédiatement côté serveur.

ts
await guild.roles.delete(role.id);
js
await guild.roles.delete(role.id);

Suppression irréversible

Il n'existe aucune méthode restore() — une fois supprimé, un rôle doit être recréé de zéro avec create(), et les membres devront se le voir réattribuer manuellement. Envisagez une confirmation utilisateur avant d'appeler delete() depuis une commande de bot.

Voir aussi ​

SDK publié sous licence ISC.