Skip to content

ChannelManager ​

Gestionnaire global des salons connus du bot, tous serveurs confondus. Hérite de BaseManager et gère des instances de Channel. Accessible via client.channels.

ts
import { BloumeChat } from "bloumechat";
const client = new BloumeChat();
// ...
const channel = client.channels.cache.get("CHANNEL_PUBLIC_ID");
js
const { BloumeChat } = require("bloumechat");
const client = new BloumeChat();
// ...
const channel = client.channels.cache.get("CHANNEL_PUBLIC_ID");

Cache partagé, pas par serveur

Contrairement à RoleManager (une instance par Guild, accessible via guild.roles), il n'existe qu'un seul ChannelManager global, accessible via client.channels — les salons de tous les serveurs y sont mélangés dans le même cache. Pour lister uniquement les salons d'un serveur donné, utilisez guild.channels (un getter qui filtre client.channels.cache par serverId) plutôt que de parcourir client.channels.cache vous-même.

Méthodes ​

fetch(id, cache?) ​

ts
fetch(id: string, cache = true): Promise<Channel>
ParamètreTypeRequisDéfautDescription
idstringOui—Identifiant public du salon.
cachebooleanNontrueSi true, insère ou met à jour l'entité dans this.cache.

Appelle GET /channels/:id, construit un Channel à partir de la réponse, et le retourne.

Comportement et erreurs :

  • Retourne une nouvelle instance Channel à chaque appel — n'utilise jamais le cache existant pour court-circuiter la requête réseau, même si l'entrée est déjà présente. Pour lire le cache sans requête réseau, utilisez resolve()/cache.get().
  • Si cache est true (défaut), écrase toute entrée existante pour cette clé.
  • Rejette avec l'erreur levée par apiCall() si le salon n'existe pas ou si le bot n'a pas accès (typiquement Error("API Error 404: ...") ou 403).
ts
const channel = await client.channels.fetch("CHANNEL_PUBLIC_ID");
console.log(channel.name, channel.type);

// Sans mise en cache
const freshChannel = await client.channels.fetch("CHANNEL_PUBLIC_ID", false);
js
const channel = await client.channels.fetch("CHANNEL_PUBLIC_ID");
console.log(channel.name, channel.type);

// Sans mise en cache
const freshChannel = await client.channels.fetch("CHANNEL_PUBLIC_ID", false);

fetchForGuild(serverId, cache?) ​

ts
fetchForGuild(serverId: string, cache = true): Promise<Channel[]>
ParamètreTypeRequisDéfautDescription
serverIdstringOui—Identifiant public du serveur dont on veut lister les salons.
cachebooleanNontrueSi true, insère ou met à jour chaque salon retourné dans this.cache.

Récupère tous les salons d'un serveur en un seul appel réseau (GET /servers/:id/categories).

Pourquoi passer par /categories ?

Il n'existe pas de route GET /servers/:id/channels à plat côté API — seul un POST existe sur ce chemin, pour la création. L'application web elle-même construit sa liste de salons à partir de GET /servers/:id/categories, qui imbrique les salons sous chaque catégorie plus un tableau uncategorizedChannels séparé. fetchForGuild() reproduit ce même comportement et aplatit les deux sources (salons catégorisés + non catégorisés) en un seul tableau plat pour vous, avec serverId injecté sur chaque Channel construit.

Comportement :

  • Retourne [] si le serveur n'a aucun salon (jamais null/undefined).
  • Chaque Channel construit reçoit serverId explicitement, même si le payload brut de l'API ne le portait pas directement (cas des salons imbriqués sous une catégorie).
  • Si cache est true, tous les salons retournés remplacent leurs entrées existantes dans this.cache (mise à jour, pas de purge des salons absents de la réponse).
ts
const channels = await client.channels.fetchForGuild(guild.id);
const textChannels = channels.filter((c) => c.type === "TEXT");
console.log(`${textChannels.length} salon(s) textuel(s)`);
js
const channels = await client.channels.fetchForGuild(guild.id);
const textChannels = channels.filter((c) => c.type === "TEXT");
console.log(`${textChannels.length} salon(s) textuel(s)`);

Raccourci équivalent sur Guild

Guild.fetchChannels() appelle exactement cette méthode avec l'ID du serveur courant — préférez guild.fetchChannels() quand vous avez déjà l'objet Guild sous la main, c'est strictement équivalent mais plus lisible.

Voir aussi ​

  • Channel — la structure retournée par ce manager, avec .send(), .delete(), etc.
  • Guild — expose guild.channels (getter filtré) et guild.fetchChannels().
  • Category — les catégories qui regroupent les salons côté API.
  • BaseManager — cache, resolve(), et la convention cache: boolean.

SDK publié sous licence ISC.