Skip to content

User ​

Représente un utilisateur global sur BloumeChat — c'est-à-dire un compte, indépendamment de son appartenance à un serveur particulier. Hérite de Base.

Pour les données spécifiques à un serveur (rôles, surnom, date d'arrivée, permissions), voir Member, qui enveloppe un User avec ce contexte additionnel.

Notation des signatures

Les signatures sont écrites en notation TypeScript, mais s'appellent à l'identique en JavaScript — voir Utiliser le SDK en JavaScript.

Propriétés ​

PropriétéTypeDescription
idstringL'identifiant public (Snowflake) de l'utilisateur.
usernamestringLe nom d'utilisateur.
tagstringLe tag/discriminateur à 4 chiffres (ex. "0001").
avatarstring | nullL'URL de l'avatar, ou null pour l'avatar par défaut.
botbooleantrue si ce compte est un bot.
status"online" | "idle" | "dnd" | "invisible" | "offline"Le statut de présence actuel. "offline" par défaut si absent des données reçues.
tagStringstring (getter)Renvoie `${username}#${tag}` (ex. "BloumeBot#0001").

Méthodes ​

toString(): string ​

Convertit l'objet en chaîne — renvoie une mention brute `<@${id}>` qui s'affiche correctement une fois interprétée par le client BloumeChat dans un message envoyé.

Retour : string.

ts
await channel.send(`Bienvenue ${user.toString()} !`);
// équivalent, via l'interpolation de template literal :
await channel.send(`Bienvenue ${user} !`);
js
await channel.send(`Bienvenue ${user.toString()} !`);
await channel.send(`Bienvenue ${user} !`);

Pas de fonctions sociales

Le SDK n'expose délibérément aucune méthode block/unblock/follow/unfollow sur User. Un bot ne doit jamais bloquer ou suivre un utilisateur au nom du compte connecté — ce sont des actions réservées à l'utilisateur humain via l'application BloumeChat elle-même, pas à une automatisation.

Profil & interactions ​

fetchProfile(): Promise<UserProfile> ​

Récupère les détails du profil public de l'utilisateur : biographie, bannière, compteurs de followers, relation avec le bot.

Retour : Promise<UserProfile>

ts
interface UserProfile {
  id: string;
  username: string;
  tag: string;
  avatar: string | null;
  banner: string | null;
  bannerColor: string | null;
  bio: string | null;
  bot: boolean;
  status: string;
  followersCount: number;
  followingCount: number;
  mutualFriendsCount: number;
}

Tous les compteurs (followersCount, followingCount, mutualFriendsCount) valent 0 par défaut, et bot est normalisé en booléen même si l'API renvoie une valeur absente ou falsy. Ces compteurs sont des informations en lecture seule — le SDK ne fournit aucun moyen d'agir dessus (voir l'avertissement plus haut).

ts
const profile = await user.fetchProfile();
console.log(`${profile.username} a ${profile.followersCount} abonné(s).`);
if (profile.bio) console.log(`Bio : ${profile.bio}`);
js
const profile = await user.fetchProfile();
console.log(`${profile.username} a ${profile.followersCount} abonné(s).`);
if (profile.bio) console.log(`Bio : ${profile.bio}`);

fetchMutualServers(): Promise<MutualServerDTO[]> ​

Récupère la liste des serveurs partagés entre le bot et cet utilisateur.

ts
interface MutualServerDTO {
  publicId: string;
  name: string;
  imageUrl: string | null;
}

Retour : Promise<MutualServerDTO[]>.

ts
const mutual = await user.fetchMutualServers();
console.log(`${mutual.length} serveur(s) en commun.`);
js
const mutual = await user.fetchMutualServers();
console.log(`${mutual.length} serveur(s) en commun.`);

createDM(): Promise<DMChannel> ​

Ouvre un salon de messages privés avec cet utilisateur, ou renvoie le salon existant si le bot en a déjà un avec lui. Raccourci équivalent à client.createDM(user.id).

Retour : Promise<DMChannel>.

ts
const dmChannel = await user.createDM();
await dmChannel.send("Bonjour en privé !");
js
const dmChannel = await user.createDM();
await dmChannel.send("Bonjour en privé !");

Exemples d'utilisation ​

Commande !whois combinant profil et serveurs communs ​

ts
client.on("messageCreate", async (message) => {
  if (!message.content.startsWith("!whois")) return;

  // Pas de résolution de mentions intégrée au SDK : on cible ici l'auteur
  // du message (à remplacer par votre propre parsing de `<@id>` si besoin).
  const target = message.author;
  const profile = await target.fetchProfile();
  const mutual = await target.fetchMutualServers();

  await message.reply(
    `**${profile.username}#${profile.tag}**\n` +
    `Abonnés : ${profile.followersCount} · Suivis : ${profile.followingCount}\n` +
    `Serveurs en commun : ${mutual.length}`
  );
});
js
client.on("messageCreate", async (message) => {
  if (!message.content.startsWith("!whois")) return;

  const target = message.author;
  const profile = await target.fetchProfile();
  const mutual = await target.fetchMutualServers();

  await message.reply(
    `**${profile.username}#${profile.tag}**\n` +
    `Abonnés : ${profile.followersCount} · Suivis : ${profile.followingCount}\n` +
    `Serveurs en commun : ${mutual.length}`
  );
});

Voir aussi ​

  • Member — un utilisateur dans le contexte d'un serveur (rôles, permissions, surnom).
  • DMChannel — le salon renvoyé par createDM().
  • UserManager — cache global accessible via client.users.
  • BloumeChat.createDM() — équivalent bas niveau de user.createDM().

SDK publié sous licence ISC.