Skip to content

Base ​

La classe de base abstraite dont héritent toutes les structures du SDK BloumeChat — Guild, Channel, Message, Member, User, Role, Category, Emoji, Invite et Webhook.

Son rôle est volontairement minimal : garantir que chaque structure garde une référence vers le BloumeChat qui l'a créée, et fournir deux méthodes internes de bas niveau utilisées par les sous-classes pour se mettre à jour. Base n'est jamais instanciée directement dans du code applicatif.

Notation des signatures

Sur cette page, les signatures de méthode sont écrites en notation TypeScript pour préciser exactement les types acceptés — mais tout s'appelle à l'identique en JavaScript, simplement sans les annotations. Voir Utiliser le SDK en JavaScript.

Propriétés ​

PropriétéTypeDescription
clientBloumeChat (readonly)Le client qui a instancié cette structure. Toujours défini — jamais null ou undefined, même pour une structure obtenue avant l'événement ready.

client est déclarée public readonly : elle est assignée une seule fois dans le constructeur de Base et ne change jamais pendant la durée de vie de l'objet.

Méthodes protégées ​

Ces deux méthodes sont marquées protected dans le code source — elles ne sont donc pas accessibles depuis l'extérieur d'une sous-classe (message._patch(...) ne compile pas en TypeScript). Elles sont documentées ici pour comprendre le fonctionnement interne des structures, pas pour être appelées directement par un bot.

_clone(): this ​

Retourne une copie superficielle (shallow copy) de l'instance courante, via Object.assign(Object.create(this), this). Le prototype (donc toutes les méthodes de la classe) est préservé, seules les propriétés propres sont copiées — un même niveau d'imbrication seulement, les objets/tableaux imbriqués restent partagés par référence avec l'original.

_patch(data: any): any ​

Implémentation par défaut qui renvoie data tel quel. Certaines sous-classes la redéfinissent pour fusionner de nouvelles données dans l'instance existante (par exemple lors d'un événement de mise à jour reçu par WebSocket) plutôt que de recréer un nouvel objet à chaque fois.

Usage interne uniquement

_clone() et _patch() sont des détails d'implémentation. Aucune méthode publique du SDK ne les expose directement — vous ne devriez jamais avoir besoin de les appeler dans un bot. Elles sont documentées ici uniquement à titre de référence pour comprendre le comportement interne des structures.

Exemple d'utilisation ​

Vous n'instancierez jamais Base directement, mais toute structure qui en hérite expose .client — ce qui permet de retrouver l'instance principale du SDK à partir de n'importe quel objet reçu dans un handler d'événement, sans avoir à le faire transiter en paramètre.

ts
client.on("messageCreate", (message) => {
  // `message` hérite de Base via Message → `.client` est disponible partout
  const client = message.client;
  console.log(`Le bot est connecté sous : ${client.user?.tagString}`);
  console.log(`Présent sur ${client.guilds.cache.size} serveur(s)`);
});
js
client.on("messageCreate", (message) => {
  const client = message.client;
  console.log(`Le bot est connecté sous : ${client.user?.tagString}`);
  console.log(`Présent sur ${client.guilds.cache.size} serveur(s)`);
});

C'est particulièrement utile dans une fonction utilitaire qui ne reçoit qu'une structure (un Member, un Role…) et a besoin d'accéder au client sans le recevoir en argument séparé :

ts
import type { Member } from "bloumechat";

function isServerOwner(member: Member): boolean {
  const guild = member.client.guilds.cache.get(member.serverId);
  return guild?.ownerId === member.user.id;
}
js
function isServerOwner(member) {
  const guild = member.client.guilds.cache.get(member.serverId);
  return guild && guild.ownerId === member.user.id;
}

Voir aussi ​

SDK publié sous licence ISC.