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é | Type | Description |
|---|---|---|
id | string | L'identifiant public (Snowflake) de l'utilisateur. |
username | string | Le nom d'utilisateur. |
tag | string | Le tag/discriminateur à 4 chiffres (ex. "0001"). |
avatar | string | null | L'URL de l'avatar, ou null pour l'avatar par défaut. |
bot | boolean | true 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. |
tagString | string (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.
await channel.send(`Bienvenue ${user.toString()} !`);
// équivalent, via l'interpolation de template literal :
await channel.send(`Bienvenue ${user} !`);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>
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).
const profile = await user.fetchProfile();
console.log(`${profile.username} a ${profile.followersCount} abonné(s).`);
if (profile.bio) console.log(`Bio : ${profile.bio}`);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.
interface MutualServerDTO {
publicId: string;
name: string;
imageUrl: string | null;
}Retour : Promise<MutualServerDTO[]>.
const mutual = await user.fetchMutualServers();
console.log(`${mutual.length} serveur(s) en commun.`);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>.
const dmChannel = await user.createDM();
await dmChannel.send("Bonjour en privé !");const dmChannel = await user.createDM();
await dmChannel.send("Bonjour en privé !");Exemples d'utilisation
Commande !whois combinant profil et serveurs communs
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}`
);
});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().
