Skip to content

Role ​

Représente un rôle sur un serveur BloumeChat. Hérite de Base.

Les permissions associées à un rôle sont gérées nativement via un masque de bits (bigint), ce qui permet de dépasser la limite de 32 flags d'un entier JavaScript classique. Voir le guide Permissions pour une explication complète du système, et la référence Permissions (bitmask) pour la liste exhaustive des flags.

Notation des signatures

Les signatures sont écrites en notation TypeScript, mais s'appellent à l'identique en JavaScript — voir Utiliser le SDK en JavaScript.

Propriétés ​

PropriétéTypeDescription
idstringL'identifiant public (Snowflake) du rôle.
namestringLe nom du rôle.
colorstring | nullLa couleur hexadécimale associée au rôle (ex. "#5e72e4"), ou null si aucune couleur n'est définie.
hoistbooleantrue si les membres possédant ce rôle sont affichés séparément dans la liste des membres en ligne.
serverIdstringL'identifiant public du serveur auquel appartient ce rôle.
permissionsbigintLe masque de permissions accordé par ce rôle. Toujours normalisé en bigint à la construction, quel que soit le type reçu de l'API (string, number ou bigint) — 0n si la valeur reçue n'était dans aucun de ces formats.
positionnumberLa position hiérarchique du rôle parmi les autres rôles du serveur (plus la valeur est élevée, plus le rôle est haut placé). 0 par défaut si absente des données reçues.

Méthodes ​

hasPermission(permission: bigint): boolean ​

Indique si ce rôle accorde la permission donnée. Le flag ADMINISTRATOR fait automatiquement passer ce test pour toute permission demandée (bypass complet), reproduisant le même comportement que côté serveur.

ParamètreTypeRequisDescription
permissionbigintOuiLe flag de permission à vérifier — voir PermissionFlags.

Retour : boolean.

ts
import { PermissionFlags } from "bloumechat";

if (role.hasPermission(PermissionFlags.MANAGE_SERVER)) {
  console.log(`Le rôle "${role.name}" peut gérer le serveur.`);
}
js
const { PermissionFlags } = require("bloumechat");

if (role.hasPermission(PermissionFlags.MANAGE_SERVER)) {
  console.log(`Le rôle "${role.name}" peut gérer le serveur.`);
}

Vérifier plusieurs permissions combinées (l'opérateur | compose un masque à tester en une fois) :

ts
import { PermissionFlags } from "bloumechat";

const canModerate = role.hasPermission(
  PermissionFlags.KICK_MEMBERS | PermissionFlags.BAN_MEMBERS
);
js
const { PermissionFlags } = require("bloumechat");

const canModerate = role.hasPermission(
  PermissionFlags.KICK_MEMBERS | PermissionFlags.BAN_MEMBERS
);

hasPermission ignore les surcharges de salon

Cette méthode ne teste que le masque global du rôle (role.permissions). Elle ne tient pas compte des surcharges de permissions propres à un salon ou une catégorie (channel.editPermissions()). Pour une vérification complète prenant en compte la hiérarchie, utilisez applyChannelOverrides côté serveur/logique métier, ou consultez member.permissions combiné aux overrides du salon concerné.

edit(data): Promise<void> ​

Modifie une ou plusieurs propriétés du rôle auprès de l'API, et met à jour l'instance locale après succès.

ts
edit(data: {
  name?: string;
  color?: string | null;
  hoist?: boolean;
  permissions?: bigint | string;
}): Promise<void>
ParamètreTypeRequisDescription
data.namestringNonNouveau nom du rôle.
data.colorstring | nullNonNouvelle couleur hexadécimale, ou null pour la retirer.
data.hoistbooleanNonActive/désactive l'affichage séparé dans la liste des membres.
data.permissionsbigint | stringNonNouveau masque de permissions. Converti en chaîne avant l'envoi réseau (sérialisation JSON-safe d'un bigint), puis reconverti en bigint localement.

Retour : Promise<void>.

ts
import { PermissionFlags } from "bloumechat";

await role.edit({
  name: "Modérateur",
  color: "#f97316",
  hoist: true,
  permissions: PermissionFlags.KICK_MEMBERS | PermissionFlags.MANAGE_MESSAGES,
});
js
const { PermissionFlags } = require("bloumechat");

await role.edit({
  name: "Modérateur",
  color: "#f97316",
  hoist: true,
  permissions: PermissionFlags.KICK_MEMBERS | PermissionFlags.MANAGE_MESSAGES,
});

Ajouter une permission à un rôle existant sans écraser les autres, en partant de son masque actuel :

ts
import { PermissionFlags } from "bloumechat";

await role.edit({ permissions: role.permissions | PermissionFlags.PIN_MESSAGE });
js
const { PermissionFlags } = require("bloumechat");

await role.edit({ permissions: role.permissions | PermissionFlags.PIN_MESSAGE });

delete(): Promise<void> ​

Supprime définitivement le rôle du serveur. Tous les membres qui le possédaient le perdent immédiatement ; les surcharges de permissions de salon référençant ce rôle deviennent orphelines côté serveur.

Retour : Promise<void>.

ts
await role.delete();
js
await role.delete();

Exemple complet ​

ts
import { PermissionFlags } from "bloumechat";

const role = await guild.createRole({
  name: "VIP",
  color: "#facc15",
  hoist: true,
  permissions: PermissionFlags.VIEW_CHANNELS | PermissionFlags.SEND_MESSAGES,
});

if (role.hasPermission(PermissionFlags.SEND_MESSAGES)) {
  console.log(`${role.name} peut écrire dans les salons.`);
}

await role.edit({ color: "#eab308" });
js
const { PermissionFlags } = require("bloumechat");

const role = await guild.createRole({
  name: "VIP",
  color: "#facc15",
  hoist: true,
  permissions: PermissionFlags.VIEW_CHANNELS | PermissionFlags.SEND_MESSAGES,
});

if (role.hasPermission(PermissionFlags.SEND_MESSAGES)) {
  console.log(`${role.name} peut écrire dans les salons.`);
}

await role.edit({ color: "#eab308" });

Voir aussi ​

SDK publié sous licence ISC.