Skip to content

GuildManager ​

Gestionnaire de tous les serveurs (guilds) où le bot est présent. Hérite de BaseManager et gère des instances de Guild. Accessible via client.guilds.

ts
import { BloumeChat } from "bloumechat";
const client = new BloumeChat();
// ...
const guild = client.guilds.cache.get("SERVER_PUBLIC_ID");
js
const { BloumeChat } = require("bloumechat");
const client = new BloumeChat();
// ...
const guild = client.guilds.cache.get("SERVER_PUBLIC_ID");

Déjà pré-rempli après login()

client.guilds.cache n'est jamais vide au moment de l'événement ready : login() appelle en interne fetchAll() avant de résoudre. Dans la grande majorité des cas, vous n'avez donc pas besoin d'appeler fetchAll() vous-même — client.guilds.cache suffit une fois ready émis.

Méthodes ​

fetch(id, cache?) ​

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

Appelle GET /servers/:id et retourne un Guild frais. Toujours une nouvelle requête réseau — ne consulte jamais le cache existant en amont, même si l'entrée y est déjà. Rejette si le serveur n'existe pas ou si le bot n'y a pas accès.

ts
const guild = await client.guilds.fetch("SERVER_PUBLIC_ID");
console.log(guild.name, guild.memberCount);
js
const guild = await client.guilds.fetch("SERVER_PUBLIC_ID");
console.log(guild.name, guild.memberCount);

getOrFetch(id) (4.2.0+) ​

ts
getOrFetch(id: string): Promise<Guild | undefined>

Retourne l'entrée en cache si elle existe, sinon appelle fetch(id). Contrairement à fetch(), ne rejette jamais — renvoie undefined si l'appel réseau échoue (serveur inexistant, bot non membre, etc.). Utilisez fetch() directement si vous avez besoin de l'erreur.

ts
const guild = await client.guilds.getOrFetch("SERVER_PUBLIC_ID");
if (guild) console.log(guild.name);
js
const guild = await client.guilds.getOrFetch("SERVER_PUBLIC_ID");
if (guild) console.log(guild.name);

fetchAll(cache?) ​

ts
fetchAll(cache = true): Promise<Guild[]>
ParamètreTypeRequisDéfautDescription
cachebooleanNontrueVoir comportement détaillé ci-dessous — contrôle deux choses à la fois.

Récupère tous les serveurs sur lesquels le bot est présent (GET /servers), construit un Guild pour chacun, et les retourne.

Comportement important quand cache = true (par défaut) :

Pour chaque serveur retourné, le SDK effectue une requête supplémentaire (GET /servers/:id/members/:botId) afin de pré-charger le propre profil de membre du bot sur ce serveur — nécessaire pour que ses rôles et permissions (member.hasPermission(...)) soient immédiatement disponibles sans fetch manuel supplémentaire. Ce second fetch est fait via client.members.fetch(guild.id, client.user.id) et alimente donc aussi client.members.cache.

  • Si client.user n'est pas encore défini (avant ready), ce pré-chargement de membre est silencieusement ignoré pour chaque serveur.
  • Si le pré-chargement du membre échoue pour un serveur donné (erreur réseau, permissions), l'erreur est avalée silencieusement (catch vide) — cela n'interrompt jamais fetchAll() ni ne fait échouer les autres serveurs.
  • Si cache est false, ce pré-chargement des membres est entièrement sauté (aucun appel à client.members.fetch), en plus de ne pas peupler this.cache des guildes elles-mêmes.

Coût réseau proportionnel au nombre de serveurs

Avec cache: true (par défaut), fetchAll() effectue 1 + N requêtes où N est le nombre de serveurs du bot (1 pour la liste, puis 1 par serveur pour le membre du bot). Sur un bot présent dans beaucoup de serveurs, ceci peut être notable au démarrage — c'est un compromis assumé pour que les permissions soient disponibles immédiatement après ready.

ts
// Généralement inutile — déjà fait par login()
const guilds = await client.guilds.fetchAll();
console.log(`Présent sur ${guilds.length} serveur(s)`);
js
// Généralement inutile — déjà fait par login()
const guilds = await client.guilds.fetchAll();
console.log(`Présent sur ${guilds.length} serveur(s)`);

create(options) ​

ts
create(options: { name: string; iconUrl?: string | null }): Promise<Guild>
ParamètreTypeRequisDéfautDescription
options.namestringOui—Nom du nouveau serveur.
options.iconUrlstring | nullNon—URL de l'icône du serveur.

Crée un nouveau serveur via POST /servers, l'insère dans this.cache, et le retourne.

Erreurs possibles :

  • Rejette immédiatement avec Error("Bots cannot create servers.") si client.user?.bot est true — cette action est réservée aux comptes utilisateur classiques, jamais aux bots. Le SDK effectue cette vérification côté client avant même d'appeler l'API.
  • Rejette avec l'erreur apiCall() standard en cas d'échec serveur (nom invalide, quota atteint, etc.).
ts
// Uniquement valide pour un compte utilisateur, pas un bot
const guild = await client.guilds.create({ name: "Mon nouveau serveur" });
js
// Uniquement valide pour un compte utilisateur, pas un bot
const guild = await client.guilds.create({ name: "Mon nouveau serveur" });

Voir aussi ​

  • Guild — la structure retournée par ce manager (rôles, channels, membres, invites…).
  • MemberManager — utilisé en interne par fetchAll() pour précharger le membre du bot.
  • RoleManager — accessible via guild.roles sur chaque Guild retourné.
  • BaseManager — cache, resolve(), et la convention cache: boolean.

SDK publié sous licence ISC.