Skip to content

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éTypeDescription
idstringL'identifiant public (Snowflake) de la catégorie.
namestringLe nom de la catégorie.
positionnumberL'ordre d'affichage de la catégorie parmi les autres catégories du serveur (0 par défaut si absent des données brutes).
serverIdstringL'identifiant public du serveur contenant cette catégorie.
isPrivatebooleanIndique si la catégorie est privée (masquée pour @everyone par défaut ; nécessite des surcharges de permissions explicites pour être visible).
channelsChannel[]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ètreTypeRequisDescription
namestringOuiLe 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.

ts
const category = (await guild.fetchCategories())[0];
await category.setName("Salon Général 📢");
js
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.

ts
edit(data: { name?: string; isPrivate?: boolean }): Promise<void>
ParamètreTypeRequisDescription
data.namestringNonNouveau nom.
data.isPrivatebooleanNonBascule 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.

ts
// Rend la catégorie privée sans changer son nom
await category.edit({ isPrivate: true });
js
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.

ts
await category.delete();
console.log("Catégorie supprimée, salons conservés en dehors de toute catégorie.");
js
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>.

ts
// Après avoir modifié les permissions de la catégorie, propage-les à tous ses salons
await category.edit({ isPrivate: true });
await category.syncPermissions();
js
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).

ts
interface PermissionOverrideDTO {
  id: string;
  type: "ROLE" | "MEMBER";
  targetId: string;
  targetName: string;
  allow: string;
  deny: string;
}

Retour : Promise<PermissionOverrideDTO[]>.

ts
const overrides = await category.fetchPermissionOverrides();
for (const ow of overrides) {
  console.log(`${ow.type} ${ow.targetId} → allow=${ow.allow} deny=${ow.deny}`);
}
js
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 ​

SDK publié sous licence ISC.