Passer au contenu principal
Un formulaire (Discord l’appelle un modal) se déclare avec modal(), dans n’importe quel fichier de src/, et s’exporte. Déclarez ses champs ; run les reçoit sous les mêmes noms, typés d’après leur sorte.
src/components/feedback.ts
Une commande ou un bouton l’ouvre avec interaction.showModal() :
src/commands/feedback.ts
C’est tout : fields.text est un string et fields.rating vaut 'Good' | 'Okay' | 'Bad'. Un formulaire doit être la première réponse à une interaction ; la personne a ensuite tout le temps qu’elle veut pour le remplir.
Chaque sorte de champ et les types derrière sont dans la référence. L’interaction d’un formulaire est une ModalInteraction.

Les champs

Un formulaire a de 1 à 5 champs, chacun avec un label (45 caractères au plus) et une description facultative. Ce que reçoit run suit la sorte : Chaque champ est obligatoire sauf s’il dit required: false ; un text ou un radio qui n’est pas obligatoire est alors string | undefined. min et max disent combien peuvent être choisis ou téléversés ; minLength et maxLength quelle longueur peut avoir un texte.
src/components/report.ts

Ouvrir un formulaire depuis un bouton

Un bouton ou un menu peut aussi ouvrir un formulaire. Le formulaire connaît alors le message du bouton (message), et peut le modifier avec update() au lieu d’envoyer un nouveau message :
src/components/rename-button.ts
src/components/rename.ts
data fonctionne comme les données d’un bouton : données à l’ouverture du formulaire, reçues typées dans run.

Ce que contient un formulaire à l’ouverture

Là où vous ouvrez le formulaire, values remplit certains champs à l’avance : un texte, les options choisies d’un menu, d’un radio ou de cases à cocher, ou si une case est cochée.
src/components/edit.ts

D’où un formulaire est envoyé

Un formulaire a un where comme une commande ('guild' par défaut, 'dm' ou 'both'), qui décide de ce que reçoit run à propos de l’endroit. Les réponses fonctionnent comme celles d’une commande : reply(), defer(), edit(), followUp(), delete(), plus update() et deferUpdate() quand un bouton ou un menu a ouvert le formulaire. Ouvrir un formulaire depuis un formulaire n’est pas possible : Discord n’en ouvre un qu’en réponse à une commande ou à un composant.

Embeds et mise en page

Réutiliser un embed, et construire des messages avec des textes, des sections et des conteneurs.

Répondre

Quand différer, réponses privées, ce que voit la personne quand run échoue.