channel.waitForMessage() donne le prochain message qui convient, ou null quand le temps est écoulé.
src/commands/capital.ts
Qui et quoi
Attendre la réponse de la personne qui a utilisé la commande :
src/commands/nickname.ts
matches qui lève une erreur termine l’attente avec cette erreur, levée là où vous attendez : la personne reçoit une réponse simple et vous recevez l’erreur avec sa ligne, comme pour tout ce que fait votre fonction.
Plusieurs messages
channel.collectMessages() prend les mêmes options et rassemble chaque message qui convient jusqu’à ce que within passe, ou que max soient arrivés. Elle les donne, dans l’ordre, peut-être aucun.
src/commands/brainstorm.ts
Un clic
message.waitForClick() attend un clic sur un bouton ou un menu d’un message : celui que donne reply(), par exemple. Le clic qu’elle donne se répond comme dans le run d’un bouton, avec click.interaction.
src/commands/reset.ts
- Un bouton ou un menu qui n’est qu’attendu n’a pas besoin de
run. Une fois que plus rien ne l’attend, un clic dessus répond à la personne qu’il n’est plus disponible. - Un clic pris par une attente n’exécute pas le
runde son bouton. Un clic que l’attente ne prend pas (une autre personne, avecfrom) l’exécute comme d’habitude. click.is(yes)dit lequel a été cliqué ;click.dataest ce que porte le bouton,click.valuesce qui a été choisi dans un menu.- Sans réponse dans les 2 secondes, le bot ne change rien à l’écran pour vous, si bien que la personne ne voit jamais « This interaction failed ». Vous pouvez encore répondre avec
click.interaction.followUp()ouedit().
Une réaction
message.waitForReaction() attend une réaction ajoutée à un message : d’une personne avec from, avec un emoji avec emoji ('👍', ou un emoji personnalisé par son nom).
src/commands/agree.ts
Ce dont elle a besoin
Attendre ne demande rien à déclarer : les intents suivent votre code, comme ceux de vos événements.- Attendre des messages demande à Discord les messages des serveurs et des messages privés, et leur texte : l’intent privilégié Message Content Intent. Quand il n’est pas activé,
chapterjs devle dit, nomme votre fichier et donne le lien du Developer Portal. - Attendre une réaction demande les réactions.
- Attendre un clic ne demande rien.
Bon à savoir
- Une attente vit tant que votre bot tourne : un redémarrage, ou l’arrêt de
chapterjs dev, la termine sans rien (null, ou ce qu’un rassemblement a déjà reçu). Un enregistrement danschapterjs devla garde. - Tout ce qui concerne un serveur arrive au même processus de votre bot : une attente fonctionne pareil dans un gros bot.
- La réponse à l’interaction reste due dans les 3 secondes : répondez d’abord (
reply()), puis attendez. Attendre avant de répondre est répondu pour vous par « le bot réfléchit », comme toute fonction lente.
Tester
Dans un scénario,bot.use() rend la main dès que votre fonction attend, et ce que fait le test ensuite est ce qu’elle attend : bot.say(), bot.click(), bot.select(), bot.react(). Le temps ne passe pas dans le serveur de test : bot.endWaits() termine chaque attente comme si son temps était écoulé.
src/commands/capital.test.ts
Boutons
Des boutons avec leur propre run, qui fonctionnent pendant des semaines.
Tester
Vérifier ce que répond votre bot, sans Discord.