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.
const guild = client.guilds.cache.get("SERVER_PUBLIC_ID")!;
const role = guild.roles.cache.get("ROLE_PUBLIC_ID");const guild = client.guilds.cache.get("SERVER_PUBLIC_ID");
const role = guild.roles.cache.get("ROLE_PUBLIC_ID");Propriétés
| Propriété | Type | Description |
|---|---|---|
guild | Guild (readonly) | Le serveur auquel ce gestionnaire de rôles est rattaché. Défini une fois à la construction, jamais réassigné. |
client | BloumeChat (hérité) | Le client BloumeChat — identique à guild.client. |
cache | Collection<string, Role> (hérité) | Les rôles de ce serveur uniquement, indexés par identifiant public. |
Méthodes
resolve(role)
resolve(role: string | Role): Role | undefined| Paramètre | Type | Requis | Description |
|---|---|---|---|
role | string | Role | Oui | Un 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
roleest déjà une instance deRole(instanceof Role), elle est retournée telle quelle, sans consultation du cache — même si elle n'y figure pas. - Si
roleest unestring, recherche dansthis.cache— retourneundefinedsi absente. - Retourne
undefinedpour tout autre type (recherche purement locale, jamais de requête réseau).
// 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!);// 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+)
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.
const role = await guild.roles.getOrFetch("ROLE_PUBLIC_ID");
if (role) console.log(role.name);const role = await guild.roles.getOrFetch("ROLE_PUBLIC_ID");
if (role) console.log(role.name);create(options)
create(options: { name: string; color?: string; permissions?: bigint | string; hoist?: boolean }): Promise<Role>| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
options.name | string | Oui | — | Nom du rôle. |
options.color | string | Non | (serveur) | Couleur hexadécimale, ex. "#5e72e4". |
options.permissions | bigint | string | Non | (serveur) | Bitmask de permissions — voir Permissions. Un bigint est automatiquement converti en string avant l'envoi (JSON ne supporte pas BigInt nativement). |
options.hoist | boolean | Non | (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.
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,
});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)
delete(roleId: string): Promise<void>| Paramètre | Type | Requis | Description |
|---|---|---|---|
roleId | string | Oui | Identifiant 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.
await guild.roles.delete(role.id);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
- Role — la structure retournée (
permissions,position,color…). - Permissions (bitmask) et Permissions (guide) — construire le bitmask
permissionspassé àcreate(). - Guild — expose
guild.rolesetguild.fetchRoles(). - BaseManager —
cacheet le contrat de base.
