Un fichier d’embed
Un embed utilisé à plusieurs endroits se déclare avecembed() et s’exporte. C’est une fonction de ce qu’il affiche, ou l’embed lui-même quand il ne change jamais. Créez src/components/card.ts :
src/components/card.ts
src/commands/card.ts
channel.send({ embeds: [card(member)] }). card(member) renvoie l’embed, vérifié par rapport aux limites de Discord au moment de l’envoi. Un fichier d’embed est une fonction comme une autre, à une différence près : il est vérifié et typé comme un embed. Un titre de plus de 256 caractères, une couleur qui n’est pas un nombre, sont des erreurs avec la limite dans le message.
Contrairement aux boutons et aux formulaires, un embed n’est jamais cliqué, donc il n’a ni run ni nom à renvoyer : le déclarer en fait seulement une pièce à importer là où un message en a besoin.
member.avatarURL() est l’image du membre, et member.highestRole.color la couleur de son rôle le plus haut, sous forme de nombre ; 0 veut dire pas de couleur, d’où le ||. Le paramètre typé, member: GuildMember, est le seul endroit de ce tutoriel où vous écrivez un type : un fichier d’embed est une fonction de ce que vous voulez lui donner, alors vous dites ce qu’il prend.Des messages faits de composants
Discord a une seconde façon de mettre en page un message, sanscontent ni embeds : un message fait uniquement de composants. Des textes, des sections avec une miniature ou un bouton à côté, des galeries d’images, des séparateurs, et des conteneurs avec une ligne de couleur comme un embed. Ils s’écrivent avec des helpers importés de chapterjs, là où est le message :
src/commands/profile-card.ts
content et embeds sont refusés, et le framework le dit avant l’envoi. Mettez le texte dans text(), qui accepte le Markdown, et l’apparence d’un embed dans un container().
Vos boutons et menus y vont aussi, dans une
row() ou seuls comme accessoire d’une section. Un message contient 40 composants au plus, ceux qui sont imbriqués compris.
Lequel utiliser
Les embeds sont plus simples et suffisent pour la plupart des choses : un titre, quelques champs, une image. Les messages en composants sont pour les mises en page qu’un embed ne sait pas faire : un bouton à côté d’un paragraphe, plusieurs images en grille, un fichier affiché à un endroit précis. Prenez les embeds par défaut, et passez aux helpers de mise en page quand un embed ne suffit plus.Récapitulatif
- Un embed utilisé plusieurs fois est
embed(...), exporté : une fonction de ce qu’il affiche, ou l’embed lui-même. text(),section(),container()et les autres construisent un message fait de composants, sanscontentniembeds.- Les deux sont vérifiés par rapport aux limites de Discord avant tout envoi.
Menus et conversations
Une commande dans le menu du clic droit, et une question qui attend sa réponse.
Guide : Embeds et mise en page
Chaque helper, en bref.