Skip to content

BaseManager ​

La classe de base dont héritent tous les gestionnaires (managers) du SDK BloumeChat — UserManager, GuildManager, ChannelManager, MemberManager, RoleManager. Vous n'instanciez jamais BaseManager vous-même : chaque manager concret l'étend et y ajoute ses propres méthodes de fetch (fetch, fetchAll, create, delete…).

Un manager a deux responsabilités : maintenir un cache local de l'entité qu'il gère (sous forme de Collection), et fournir des méthodes réseau pour synchroniser ce cache avec l'API BloumeChat.

ts
import { BaseManager } from "bloumechat";

class MyManager<K, V> extends BaseManager<K, V> {
  // ... méthodes réseau spécifiques
}
js
const { BaseManager } = require("bloumechat");

class MyManager extends BaseManager {
  // ... méthodes réseau spécifiques
}

Propriétés ​

PropriétéTypeDescription
clientBloumeChat (readonly)Le client qui a instancié ce manager. Permet à un manager d'appeler this.client.apiCall(...) en interne.
cacheCollection<K, V>La collection d'entités actuellement en mémoire, indexées par leur clé (typiquement un publicId de type string).

Les deux propriétés sont initialisées dans le constructeur : client reçoit l'instance passée en argument, cache démarre toujours comme une Collection vide — rien n'est pré-chargé automatiquement à la construction. C'est le rôle des méthodes fetch/fetchAll des sous-classes de peupler cache.

Le cache n'est jamais invalidé automatiquement

Le SDK ne rafraîchit jamais une entrée de cache tout seul en arrière-plan (pas de TTL, pas d'invalidation sur événement pour toutes les entités). Une entité en cache peut devenir périmée si elle change côté serveur sans qu'un événement socket correspondant ne l'ait mise à jour. Utilisez fetch(id, true) pour forcer un rafraîchissement explicite quand la fraîcheur compte.

Méthodes ​

resolve(id) ​

ts
resolve(id: K): V | undefined
ParamètreTypeRequisDescription
idK (généralement string)OuiLa clé de l'entité recherchée dans le cache local.

Recherche synchrone et locale uniquement — ne déclenche jamais de requête réseau. Équivalent direct à manager.cache.get(id) : resolve() existe surtout pour la lisibilité et pour que les sous-classes (comme RoleManager) puissent la surcharger avec une logique plus riche (accepter soit un ID, soit une instance déjà résolue).

Retourne l'entité si elle est présente en cache, sinon undefined — jamais d'erreur levée, même pour un id qui n'a jamais existé.

ts
const cachedGuild = client.guilds.resolve("SERVER_PUBLIC_ID");
if (!cachedGuild) {
  // Pas en cache : il faut fetch() explicitement
  const guild = await client.guilds.fetch("SERVER_PUBLIC_ID");
}
js
const cachedGuild = client.guilds.resolve("SERVER_PUBLIC_ID");
if (!cachedGuild) {
  // Pas en cache : il faut fetch() explicitement
  const guild = await client.guilds.fetch("SERVER_PUBLIC_ID");
}

Motif commun aux sous-classes ​

Toutes les méthodes de récupération des managers concrets (fetch, fetchAll) suivent la même convention : un paramètre cache: boolean = true en dernière position, qui contrôle si le(s) résultat(s) sont insérés dans this.cache en plus d'être retournés.

ts
// Insère (ou met à jour) l'entrée en cache — comportement par défaut
const guild = await client.guilds.fetch("SERVER_ID");

// Récupère les données fraîches sans toucher au cache
const freshGuild = await client.guilds.fetch("SERVER_ID", false);
js
// Insère (ou met à jour) l'entrée en cache — comportement par défaut
const guild = await client.guilds.fetch("SERVER_ID");

// Récupère les données fraîches sans toucher au cache
const freshGuild = await client.guilds.fetch("SERVER_ID", false);

Voir aussi ​

SDK publié sous licence ISC.