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.
import { BloumeChat } from "bloumechat";
const client = new BloumeChat();
// ...
const channel = client.channels.cache.get("CHANNEL_PUBLIC_ID");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?)
fetch(id: string, cache = true): Promise<Channel>| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
id | string | Oui | — | Identifiant public du salon. |
cache | boolean | Non | true | Si 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, utilisezresolve()/cache.get(). - Si
cacheesttrue(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 (typiquementError("API Error 404: ...")ou403).
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);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?)
fetchForGuild(serverId: string, cache = true): Promise<Channel[]>| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
serverId | string | Oui | — | Identifiant public du serveur dont on veut lister les salons. |
cache | boolean | Non | true | Si 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 (jamaisnull/undefined). - Chaque
Channelconstruit reçoitserverIdexplicitement, même si le payload brut de l'API ne le portait pas directement (cas des salons imbriqués sous une catégorie). - Si
cacheesttrue, tous les salons retournés remplacent leurs entrées existantes dansthis.cache(mise à jour, pas de purge des salons absents de la réponse).
const channels = await client.channels.fetchForGuild(guild.id);
const textChannels = channels.filter((c) => c.type === "TEXT");
console.log(`${textChannels.length} salon(s) textuel(s)`);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é) etguild.fetchChannels(). - Category — les catégories qui regroupent les salons côté API.
- BaseManager —
cache,resolve(), et la conventioncache: boolean.
