/suggest, qui ouvre un formulaire et publie la suggestion.
Un formulaire est un fichier
Créezsrc/components/suggest.ts (un formulaire se déclare avec modal() et s’exporte, depuis n’importe quel fichier de src/) :
src/components/suggest.ts
showModal() :
src/commands/suggest.ts
/suggest : le formulaire s’ouvre. Remplissez-le, envoyez : le run du formulaire tourne, publie dans le salon, et vous remercie en privé.
Survolez fields dans le fichier du formulaire : summary est un string, details est string | undefined (pas obligatoire), area est 'Le serveur' | 'Le bot' | 'Les événements'. Chaque champ est typé d’après sa sorte, comme les options d’une commande.
Les champs
Un formulaire a de 1 à 5 champs. Chacun a unlabel (45 caractères au plus) et une description facultative. La sorte décide de ce que voit la personne et de ce que reçoit run :
Chaque champ est obligatoire sauf s’il dit
required: false. minLength et maxLength bornent un texte ; min et max disent combien peuvent être choisis ou téléversés.
Depuis un bouton
Un bouton ou un menu peut aussi ouvrir un formulaire. Le formulaire connaît alors le message du bouton (interaction.message) et peut le modifier avec update() au lieu d’envoyer un nouveau message. Les data d’un formulaire fonctionnent comme celles d’un bouton : données à l’ouverture du formulaire, reçues typées dans run :
src/components/edit-topic.ts
src/components/topic.ts
values là où le formulaire est ouvert : topic({ channelId }, { values: { topic: 'Sujet actuel' } }).
Points d’attention
- Un formulaire doit être la première réponse.
showModal()après unreply()ou undefer()est refusé par Discord : ouvrez d’abord le formulaire, répondez à l’envoi dans lerundu formulaire. - Pas de formulaire depuis un formulaire. Discord n’ouvre un formulaire qu’en réponse à une commande ou un composant.
- La personne a tout le temps qu’elle veut. Un formulaire n’est pas soumis aux 3 secondes ; son envoi l’est, et le framework diffère pour vous.
- Les réponses d’un formulaire sont celles d’une commande :
reply(),defer(),edit(),followUp(),delete(), plusupdate()etdeferUpdate()quand un bouton l’a ouvert.
Récapitulatif
- Un formulaire est
modal({ title, fields, run }), exporté ;runreçoitfields, typé selon la sorte. interaction.showModal(form)l’ouvre, depuis une commande, un bouton ou un menu, en première réponse.dataetvaluesse donnent là où le formulaire est ouvert.
Embeds et mise en page
Écrire un embed une fois, et construire des messages avec des textes, des sections et des conteneurs.
Guide : Formulaires
Chaque sorte de champ, en bref.