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.
import { BaseManager } from "bloumechat";
class MyManager<K, V> extends BaseManager<K, V> {
// ... méthodes réseau spécifiques
}const { BaseManager } = require("bloumechat");
class MyManager extends BaseManager {
// ... méthodes réseau spécifiques
}Propriétés
| Propriété | Type | Description |
|---|---|---|
client | BloumeChat (readonly) | Le client qui a instancié ce manager. Permet à un manager d'appeler this.client.apiCall(...) en interne. |
cache | Collection<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)
resolve(id: K): V | undefined| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | K (généralement string) | Oui | La 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é.
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");
}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.
// 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);// 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
- Collection — le type exact de
cache, avec toutes ses méthodes utilitaires (filter,find,map…). - UserManager, GuildManager, ChannelManager, MemberManager, RoleManager — les sous-classes concrètes qui étendent
BaseManager.
