Category
Représente une catégorie de salons sur un serveur BloumeChat. Hérite de Base.
Une catégorie regroupe visuellement plusieurs Channel dans l'interface (textuels et vocaux confondus) et peut porter ses propres surcharges de permissions, héritées par les salons qui la synchronisent (channel.syncPermissions()).
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) de la catégorie. |
name | string | Le nom de la catégorie. |
position | number | L'ordre d'affichage de la catégorie parmi les autres catégories du serveur (0 par défaut si absent des données brutes). |
serverId | string | L'identifiant public du serveur contenant cette catégorie. |
isPrivate | boolean | Indique si la catégorie est privée (masquée pour @everyone par défaut ; nécessite des surcharges de permissions explicites pour être visible). |
channels | Channel[] | Tableau des salons imbriqués dans cette catégorie, tel que reçu à la construction de l'objet. Ce tableau n'est pas réactif : il reflète l'état au moment de guild.fetchCategories(), pas le cache live — voir l'avertissement ci-dessous. |
channels est un instantané, pas une vue live
La propriété channels est peuplée une seule fois dans le constructeur, à partir des données reçues de l'API. Si un salon est ajouté ou retiré de la catégorie après coup, cette liste ne se met pas à jour automatiquement. Pour obtenir l'état courant, ré-appelez guild.fetchCategories() ou filtrez guild.channels par catégorie via le cache global du client.
Méthodes
setName(name: string): Promise<void>
Renomme la catégorie. Raccourci pour edit({ name }).
| Paramètre | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Le nouveau nom de la catégorie. |
Retour : Promise<void> — résout une fois la requête PATCH acceptée par l'API ; la propriété this.name est mise à jour localement immédiatement après.
const category = (await guild.fetchCategories())[0];
await category.setName("Salon Général 📢");const category = (await guild.fetchCategories())[0];
await category.setName("Salon Général 📢");edit(data): Promise<void>
Modifie une ou plusieurs propriétés de la catégorie en un seul appel.
edit(data: { name?: string; isPrivate?: boolean }): Promise<void>| Paramètre | Type | Requis | Description |
|---|---|---|---|
data.name | string | Non | Nouveau nom. |
data.isPrivate | boolean | Non | Bascule la catégorie en privée (true) ou publique (false). |
Retour : Promise<void>. Seules les propriétés effectivement présentes dans data sont envoyées à l'API et répercutées localement — un edit({}) sans champ n'a aucun effet observable.
// Rend la catégorie privée sans changer son nom
await category.edit({ isPrivate: true });await category.edit({ isPrivate: true });delete(): Promise<void>
Supprime définitivement la catégorie. Les salons à l'intérieur ne sont pas supprimés — ils deviennent simplement sans catégorie (channel.serverId reste inchangé, mais leur rattachement à cette catégorie disparaît côté serveur).
Retour : Promise<void>. Rejette si le bot n'a pas la permission MANAGE_CHANNELS ou si la catégorie n'existe plus.
await category.delete();
console.log("Catégorie supprimée, salons conservés en dehors de toute catégorie.");await category.delete();
console.log("Catégorie supprimée, salons conservés en dehors de toute catégorie.");syncPermissions(): Promise<void>
Force tous les salons actuellement rattachés à cette catégorie à synchroniser leurs surcharges de permissions pour hériter de celles définies au niveau de la catégorie. Toute surcharge spécifique définie directement sur un salon (via channel.editPermissions()) est alors remplacée par celle de la catégorie parente.
Retour : Promise<void>.
// Après avoir modifié les permissions de la catégorie, propage-les à tous ses salons
await category.edit({ isPrivate: true });
await category.syncPermissions();await category.edit({ isPrivate: true });
await category.syncPermissions();fetchPermissionOverrides(): Promise<PermissionOverrideDTO[]>
Récupère les surcharges de permissions appliquées au niveau de cette catégorie (indépendamment de celles de ses salons enfants).
interface PermissionOverrideDTO {
id: string;
type: "ROLE" | "MEMBER";
targetId: string;
targetName: string;
allow: string;
deny: string;
}Retour : Promise<PermissionOverrideDTO[]>.
const overrides = await category.fetchPermissionOverrides();
for (const ow of overrides) {
console.log(`${ow.type} ${ow.targetId} → allow=${ow.allow} deny=${ow.deny}`);
}const overrides = await category.fetchPermissionOverrides();
for (const ow of overrides) {
console.log(`${ow.type} ${ow.targetId} → allow=${ow.allow} deny=${ow.deny}`);
}Hiérarchie des surcharges
Lors de la résolution effective des permissions d'un membre dans un salon, les surcharges de catégorie sont appliquées avant celles du salon (le salon a toujours la priorité en cas de conflit). Voir le guide Permissions pour le détail de cette hiérarchie.
Voir aussi
- Channel — les salons contenus dans une catégorie, avec
syncPermissions()côté salon. - Guild.fetchCategories() / createCategory() — pour lister ou créer des catégories sur un serveur.
- Guide Permissions — hiérarchie complète catégorie → salon → rôle → membre.
