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é | Type | Description |
|---|---|---|
id | string | L'identifiant public (Snowflake) du rôle. |
name | string | Le nom du rôle. |
color | string | null | La couleur hexadécimale associée au rôle (ex. "#5e72e4"), ou null si aucune couleur n'est définie. |
hoist | boolean | true si les membres possédant ce rôle sont affichés séparément dans la liste des membres en ligne. |
serverId | string | L'identifiant public du serveur auquel appartient ce rôle. |
permissions | bigint | Le 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. |
position | number | La 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ètre | Type | Requis | Description |
|---|---|---|---|
permission | bigint | Oui | Le flag de permission à vérifier — voir PermissionFlags. |
Retour : boolean.
import { PermissionFlags } from "bloumechat";
if (role.hasPermission(PermissionFlags.MANAGE_SERVER)) {
console.log(`Le rôle "${role.name}" peut gérer le serveur.`);
}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) :
import { PermissionFlags } from "bloumechat";
const canModerate = role.hasPermission(
PermissionFlags.KICK_MEMBERS | PermissionFlags.BAN_MEMBERS
);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.
edit(data: {
name?: string;
color?: string | null;
hoist?: boolean;
permissions?: bigint | string;
}): Promise<void>| Paramètre | Type | Requis | Description |
|---|---|---|---|
data.name | string | Non | Nouveau nom du rôle. |
data.color | string | null | Non | Nouvelle couleur hexadécimale, ou null pour la retirer. |
data.hoist | boolean | Non | Active/désactive l'affichage séparé dans la liste des membres. |
data.permissions | bigint | string | Non | Nouveau 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>.
import { PermissionFlags } from "bloumechat";
await role.edit({
name: "Modérateur",
color: "#f97316",
hoist: true,
permissions: PermissionFlags.KICK_MEMBERS | PermissionFlags.MANAGE_MESSAGES,
});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 :
import { PermissionFlags } from "bloumechat";
await role.edit({ permissions: role.permissions | PermissionFlags.PIN_MESSAGE });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>.
await role.delete();await role.delete();Exemple complet
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" });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
- Guild.createRole() / editRole() / deleteRole() / fetchRoles() — gestion des rôles au niveau serveur.
- RoleManager — accessible via
guild.roles, cache et méthodescreate/delete/resolve. - Member.hasPermission() / permissions — calcul des permissions effectives d'un membre à partir de ses rôles.
- Guide Permissions et Permissions (bitmask) — référence complète du système de flags.
