Skip to content

DMChannel ​

Représente un salon de messages privés (Direct Message) entre le bot et un autre utilisateur. Hérite de Channel.

Toutes les méthodes de la classe Channel (send(), fetchMessages(), sendTyping(), bulkDelete(), search(), fetchPins()…) sont utilisables sur cette structure, avec type fixé à "DM" et serverId toujours null.

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 ​

En plus de toutes les propriétés héritées de Channel (id, name, type, serverId) :

PropriétéTypeDescription
recipientIdstringL'identifiant public du destinataire. Chaîne vide si les données reçues ne contenaient pas de destinataire (cas limite).
recipientUser | nullL'objet utilisateur du destinataire, déjà résolu à la construction s'il était présent dans la réponse API. null seulement si la charge utile ne comportait aucune information de destinataire.
friendshipStatus"ACCEPTED" | "PENDING" | "NONE"L'état actuel de la relation d'amitié avec le destinataire au moment de la création de l'objet. "NONE" par défaut si l'information est absente.
friendshipIdstring | undefinedL'identifiant de la relation d'amitié sous-jacente, si une demande existe (acceptée ou en attente).

name (hérité de Channel) vaut recipient?.name s'il est connu, sinon la chaîne littérale "DM".

friendshipStatus est un instantané

Comme channels sur Category, friendshipStatus et friendshipId sont figés à la construction de l'objet — ils ne se mettent pas à jour automatiquement si l'amitié change d'état pendant que vous détenez la référence. Ré-appelez client.createDM(userId) ou dmChannel.fetchRecipient() pour rafraîchir les informations liées à l'utilisateur (le statut d'amitié lui-même n'est pas re-résolu par fetchRecipient(), qui ne rafraîchit que le profil).

Méthodes ​

fetchRecipient(): Promise<User> ​

Récupère le profil complet et à jour du destinataire auprès de l'API BloumeChat, met à jour this.recipient, et rafraîchit également le cache global client.users.

Retour : Promise<User> — l'instance User fraîchement récupérée (également accessible ensuite via dmChannel.recipient).

ts
const dm = await user.createDM();
const recipient = await dm.fetchRecipient();
console.log(`Statut actuel de ${recipient.username} : ${recipient.status}`);
js
const dm = await user.createDM();
const recipient = await dm.fetchRecipient();
console.log(`Statut actuel de ${recipient.username} : ${recipient.status}`);

Exemples d'utilisation ​

Ouvrir un DM et envoyer un message ​

Il n'y a pas de constructeur public direct pour DMChannel — on l'obtient toujours via client.createDM(userId) ou user.createDM(), qui renvoient le salon existant s'il y en a déjà un, ou en créent un nouveau.

ts
client.on("guildMemberAdd", async (data) => {
  const user = await client.users.fetch(data.userPublicId);
  const dm = await user.createDM();
  await dm.send("Bienvenue sur le serveur ! N'hésite pas si tu as des questions.");
});
js
client.on("guildMemberAdd", async (data) => {
  const user = await client.users.fetch(data.userPublicId);
  const dm = await user.createDM();
  await dm.send("Bienvenue sur le serveur ! N'hésite pas si tu as des questions.");
});

Distinguer un DM d'un salon de serveur dans un handler générique ​

Comme DMChannel hérite de Channel, un handler qui traite message.channel peut discriminer via type ou serverId :

ts
client.on("messageCreate", async (message) => {
  if (message.channel.type === "DM") {
    await message.reply("Ceci est un message privé — je ne réponds qu'aux commandes ici.");
  }
});
js
client.on("messageCreate", async (message) => {
  if (message.channel.type === "DM") {
    await message.reply("Ceci est un message privé — je ne réponds qu'aux commandes ici.");
  }
});

Voir aussi ​

SDK publié sous licence ISC.