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.
import { BloumeChat } from "bloumechat";
const client = new BloumeChat();
// ...
const guild = client.guilds.cache.get("SERVER_PUBLIC_ID");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?)
fetch(id: string, cache = true): Promise<Guild>| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
id | string | Oui | — | Identifiant public du serveur. |
cache | boolean | Non | true | Si 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.
const guild = await client.guilds.fetch("SERVER_PUBLIC_ID");
console.log(guild.name, guild.memberCount);const guild = await client.guilds.fetch("SERVER_PUBLIC_ID");
console.log(guild.name, guild.memberCount);getOrFetch(id) (4.2.0+)
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.
const guild = await client.guilds.getOrFetch("SERVER_PUBLIC_ID");
if (guild) console.log(guild.name);const guild = await client.guilds.getOrFetch("SERVER_PUBLIC_ID");
if (guild) console.log(guild.name);fetchAll(cache?)
fetchAll(cache = true): Promise<Guild[]>| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
cache | boolean | Non | true | Voir 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.usern'est pas encore défini (avantready), 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 (
catchvide) — cela n'interrompt jamaisfetchAll()ni ne fait échouer les autres serveurs. - Si
cacheestfalse, ce pré-chargement des membres est entièrement sauté (aucun appel àclient.members.fetch), en plus de ne pas peuplerthis.cachedes 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.
// Généralement inutile — déjà fait par login()
const guilds = await client.guilds.fetchAll();
console.log(`Présent sur ${guilds.length} serveur(s)`);// 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)
create(options: { name: string; iconUrl?: string | null }): Promise<Guild>| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
options.name | string | Oui | — | Nom du nouveau serveur. |
options.iconUrl | string | null | Non | — | 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.")siclient.user?.botesttrue— 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.).
// Uniquement valide pour un compte utilisateur, pas un bot
const guild = await client.guilds.create({ name: "Mon nouveau serveur" });// 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.rolessur chaqueGuildretourné. - BaseManager —
cache,resolve(), et la conventioncache: boolean.
