interaction que reçoit votre fonction est ce qui vous permet de répondre. interaction.reply() prend ce que prend n’importe quel message : un texte, ou un objet avec des embeds, des fichiers, des composants…
src/commands/secret.ts
Tout ce qu’a une interaction est dans la référence. Ce qu’accepte
reply() est listé dans InteractionReplyOptions.Les cinq méthodes
Les réponses sont envoyées l’une après l’autre, dans l’ordre où elles ont été demandées : vous pouvez appeler
reply() et followUp() sans attendre que la première se termine, et elles arrivent dans cet ordre.
Une commande répond une fois. Un second reply() lève une erreur, et dit quoi faire à la place :
edit() et followUp() ont d’abord besoin d’une réponse : « There is no answer to edit yet: call interaction.reply() first. » et « A follow-up comes after an answer: call interaction.reply() first. »
Réponses que seule la personne voit
Passezephemeral: true à reply() ou followUp() pour ne montrer ce message qu’à la personne qui a utilisé la commande. Personne d’autre ne le voit, et elle peut le faire disparaître.
Pour rendre chaque réponse d’une commande éphémère, mettez ephemeral: true sur la commande elle-même. Chaque reply() et followUp() peut encore dire le contraire avec son propre ephemeral :
src/commands/roll.ts
Quand la réponse prend du temps
Discord veut une réponse en moins de 3 secondes. Vous n’avez pas à vous en soucier : après 2 secondes sans réponse, ChapterJS dit à Discord que la réponse arrive, la personne voit « réfléchit… », et votrereply() la complète, jusqu’à 15 minutes plus tard.
src/commands/report.ts
interaction.defer() si vous voulez que « réfléchit… » apparaisse tout de suite, ou pour choisir à quoi ressemble la réponse :
src/commands/lookup.ts
interaction.deferred dit si la réponse est encore à venir, et interaction.answered si elle a été envoyée ou promise.
Le fait qu’une réponse différée soit éphémère se décide au moment où elle est différée. Pour une commande lente dont la réponse doit être privée, mettez
ephemeral: true sur la commande, ou appelez vous-même interaction.defer({ ephemeral: true }) : quand ChapterJS diffère pour vous, il ne connaît que ce que dit la commande.Modifier ou supprimer la réponse
edit() modifie la réponse qui a été envoyée. Seul ce que vous passez change :
src/commands/countdown.ts
delete() la retire. Les deux fonctionnent pendant 15 minutes après l’utilisation de la commande.
Quand votre fonction échoue
Une erreur n’arrête jamais le bot. La personne reçoit une réponse courte et privée, et vous recevez l’erreur dans votre terminal avec le fichier et la ligne :
Si la commande avait déjà répondu, la mauvaise nouvelle arrive dans un autre message privé ; si la réponse était en attente (« réfléchit… »), elle devient la réponse. Les deux phrases peuvent être traduites : voir Ce que le bot répond de lui-même.
Une fonction qui ne répond jamais
Une commande doit répondre. Quandrun se termine sans appeler reply() (ou defer()), la personne voit « L’application ne répond pas », et votre terminal dit quelle commande :
Traductions
Afficher la commande dans la langue de chaque personne.
Envoyer des messages
Embeds, fichiers, sondages : tout ce qu’une réponse peut contenir.