Interaction est ce avec quoi vous répondez : l’interaction d’une commande est une CommandInteraction, celle d’un bouton ou d’un menu une ComponentInteraction, celle d’un formulaire une ModalInteraction. Discord veut une première réponse en moins de 3 secondes, et accepte des modifications et d’autres messages pendant 15 minutes.
Vous ne créez jamais une interaction : votre fonction
run en reçoit une. Cette page liste tout ce qu’elle a ; comment bien répondre (quand différer, réponses éphémères, ce qui se passe quand run lève une erreur) est dans Répondre.Propriétés
Si
defer() a été appelé et que la réponse est encore à venir. Aussi true après deferUpdate(), jusqu’à ce qu’update() ou reply() la complète.CommandInteraction
Quelqu’un a utilisé une commande slash. Elle a tout ce qui précède, plus : Et une action de plus,showModal().
ComponentInteraction
Quelqu’un a cliqué sur un bouton ou choisi quelque chose dans un menu déroulant d’un message du bot. Elle peut répondre comme une commande, ou modifier le message sur lequel est le composant. Elle a tout ce qu’aInteraction, plus :
Et trois actions de plus : update(), deferUpdate() et showModal().
Documentation de Discord
ModalInteraction
Quelqu’un a envoyé un formulaire du bot. Elle peut répondre comme une commande ; quand un bouton ou un menu a ouvert le formulaire, elle peut aussi modifier leur message. Elle a tout ce qu’aInteraction, plus :
Le message dont le bouton ou le menu a ouvert le formulaire ;
null quand c’est une commande.update() et deferUpdate(), qui lèvent une erreur quand message est null : « This form was opened by a command, not by a button or a menu: there is no message to change. Use interaction.reply(). »
Documentation de Discord
Sur un serveur, en privé
Ce que reçoit une commande est plus précis queCommandInteraction, et suit le where de la commande. Il en va de même pour les composants, avec les types InGuild, InPrivate et InDm.
Avec
where: 'both', run reçoit GuildCommandInteraction | PrivateCommandInteraction : un seul if (interaction.guild) restreint tout.
Documentation de Discord
Helpers
toJSON()
console.log(interaction) ne le montre jamais non plus.
Actions
Les réponses sont envoyées l’une après l’autre, dans l’ordre où elles ont été demandées : vous pouvez appelerreply() et followUp() sans attendre que la première se termine.
reply()
defer() a été appelé (par vous, ou par le framework parce que la réponse prenait du temps), ceci complète la réponse en attente.
Lève une erreur quand l’interaction a déjà reçu une réponse : « This interaction was already answered. Use interaction.followUp() to send another message, or interaction.edit() to change the answer. »
Documentation de Discord
defer()
reply() peut alors prendre jusqu’à 15 minutes. Le framework le fait tout seul quand une réponse prend du temps ; appelez-le vous-même pour choisir quand.
Ne fait rien quand l’interaction a déjà reçu une réponse ou a été différée. Le fait que la réponse soit éphémère se décide ici : sans ephemeral, c’est ce que dit la commande.
update()
ComponentInteraction et une ModalInteraction. Modifie le message sur lequel est le composant, en guise de réponse : son texte, ses embeds, ses composants, ses fichiers. Seul ce que vous passez change ; components: [] retire les boutons et les menus.
Lève une erreur quand l’interaction a déjà reçu un message en réponse ou a été différée avec defer() : « This interaction was already answered: the message can no longer be changed through it. Use interaction.message.edit() to change the message, or interaction.followUp() to send another one. »
Documentation de Discord
deferUpdate()
ComponentInteraction et une ModalInteraction. Dit à Discord que le message changera plus tard : la personne ne voit rien entre-temps, et update() peut alors prendre jusqu’à 15 minutes. Le framework le fait tout seul quand une réponse à un composant prend du temps.
Après deferUpdate(), reply() envoie son message comme une suite, ce qui revient au même pour la personne, et edit() modifie le message du composant.
showModal()
CommandInteraction et une ComponentInteraction. Ouvre un formulaire, en guise de réponse : showModal(report({ userId })), avec un formulaire déclaré avec modal(). Ce doit être la première réponse, et la personne a tout le temps qu’elle veut pour le remplir.
Lève une erreur quand quelque chose a déjà été répondu : « A form can only be the first answer to an interaction: call interaction.showModal() before reply() or defer(), and the framework waits for it. »
Documentation de Discord
edit()
followUp()
delete()
Types
InteractionReply
reply() et followUp().
InteractionReplyOptions
Les options d’une réponse : tout ce que prend un message, saufreplyTo et stickers, plus ephemeral. Elles sont listées dans InteractionReplyOptions.