Skip to content

MemberManager ​

Gestionnaire global des profils de membre (un membre = un utilisateur dans le contexte d'un serveur donné, avec ses rôles et son surnom). Hérite de BaseManager et gère des instances de Member. Accessible via client.members.

ts
import { BloumeChat } from "bloumechat";
const client = new BloumeChat();
// ...
const member = client.members.cache.get("MEMBER_PUBLIC_ID");
js
const { BloumeChat } = require("bloumechat");
const client = new BloumeChat();
// ...
const member = client.members.cache.get("MEMBER_PUBLIC_ID");

Un Member n'est pas un User

Un même utilisateur peut être membre de plusieurs serveurs, avec des rôles et un surnom différents sur chacun. client.members.cache est indexé par identifiant de membre (pas par identifiant utilisateur) — ne confondez pas client.users.fetch(userId) (profil global BloumeChat) avec client.members.fetch(serverId, userId) (profil propre à un serveur, incluant rôles et permissions). Voir Member pour le détail des deux structures.

Méthodes ​

fetch(serverId, memberId, cache?) ​

ts
fetch(serverId: string, memberId: string, cache = true): Promise<Member>
ParamètreTypeRequisDéfautDescription
serverIdstringOui—Identifiant public du serveur.
memberIdstringOui—Identifiant public du membre (généralement l'ID utilisateur).
cachebooleanNontrueSi true, insère ou met à jour l'entité dans this.cache.

Appelle GET /servers/:serverId/members/:memberId et retourne un Member frais — rôles, surnom, et permissions calculées à jour. Rejette si le serveur ou le membre n'existe pas, ou si le membre a quitté le serveur entre-temps.

ts
const member = await client.members.fetch(guild.id, userId);
console.log(member.nickname ?? member.user?.username);

if (member.hasPermission(PermissionFlags.BAN_MEMBERS)) {
  // ...
}
js
const member = await client.members.fetch(guild.id, userId);
console.log(member.nickname || (member.user && member.user.username));

if (member.hasPermission(PermissionFlags.BAN_MEMBERS)) {
  // ...
}

Utilisé en interne par GuildManager.fetchAll()

Chaque fois que le bot rejoint ou redémarre, GuildManager.fetchAll() appelle automatiquement client.members.fetch(guild.id, client.user.id) pour chaque serveur, afin de précharger le propre profil de membre du bot. Vous n'avez donc pas besoin de le faire manuellement juste pour connaître vos propres permissions après ready.

getOrFetch(serverId, memberId) (4.2.0+) ​

ts
getOrFetch(serverId: string, memberId: string): Promise<Member | undefined>

Cherche d'abord un membre déjà en cache pour ce serveur (par ID de membre ou ID utilisateur — les deux fonctionnent), et n'appelle fetch() que si rien n'est trouvé. Ne rejette jamais — renvoie undefined si le fetch échoue.

ts
const member = await client.members.getOrFetch(guild.id, userId);
if (member) console.log(member.user.tagString);
js
const member = await client.members.getOrFetch(guild.id, userId);
if (member) console.log(member.user.tagString);

fetchAll(serverId, cache?) ​

ts
fetchAll(serverId: string, cache = true): Promise<Member[]>
ParamètreTypeRequisDéfautDescription
serverIdstringOui—Identifiant public du serveur dont on veut lister les membres.
cachebooleanNontrueSi true, insère ou met à jour chaque membre retourné dans this.cache.

Récupère la liste complète des membres d'un serveur en un seul appel (GET /servers/:serverId/members). Retourne [] si le serveur n'a pas de membres accessibles ou si la réponse est vide (jamais null/undefined).

Coût mémoire sur les gros serveurs

fetchAll() charge et cache l'intégralité des membres en une fois — sur un serveur de plusieurs milliers de membres, ceci peut représenter une quantité significative de mémoire et un temps de réponse non négligeable. Préférez fetch(serverId, memberId) ciblé quand vous n'avez besoin que d'un ou quelques membres précis (par exemple en réaction à un événement messageCreate).

ts
const members = await client.members.fetchAll(guild.id);
const online = members.filter((m) => m.user?.status === "online");
console.log(`${online.length} membre(s) en ligne sur ${members.length}`);
js
const members = await client.members.fetchAll(guild.id);
const online = members.filter((m) => m.user && m.user.status === "online");
console.log(`${online.length} membre(s) en ligne sur ${members.length}`);

Voir aussi ​

  • Member — la structure retournée (rôles, surnom, hasPermission(), actions de modération).
  • Permissions (guide) — comment Member.permissions est calculé à partir des rôles.
  • GuildManager — fetchAll() déclenche un fetch de membre par serveur en interne.
  • UserManager — pour le profil utilisateur global, indépendant du serveur.
  • BaseManager — cache, resolve(), et la convention cache: boolean.

SDK publié sous licence ISC.