Passer au contenu principal
Une tâche se déclare avec task(), dans n’importe quel fichier de src/, et s’exporte. Elle dit quand tourner et quoi faire ; ChapterJS la lance une fois le bot connecté, et continue de la lancer tant que le bot est en ligne.
src/tasks/report.ts
C’est tout : chaque lundi à 9 h, heure de Paris, la tâche tourne avec les serveurs où se trouve le bot. Le nom de l’export (ou du fichier, pour un export par défaut) est le nom de la tâche, et rien d’autre n’est à enregistrer.
Tout ce que déclare un fichier de tâche est dans la référence.

Régulièrement

every est une durée : un nombre et une unité, s, m, h ou d. La tâche tourne à cet intervalle, compté à partir du moment où le bot se connecte.
src/tasks/cleanup.ts
'30s', '10m', '2h', '1d' et '1h30m' fonctionnent tous ; une fois par seconde est le plus rapide.

À des heures données

cron est une expression cron standard : minute, heure, jour du mois, mois et jour de la semaine. Sans timezone, la tâche suit l’horloge de la machine sur laquelle tourne le bot. Avec un fuseau ('Europe/Paris', 'America/New_York'…), elle suit cette horloge, changements d’heure compris : une heure qui n’existe pas ce jour-là est sautée, une heure qui arrive deux fois ne tourne qu’une fois. Un cron faux, ou qui n’arrive jamais ('0 0 31 2 *'), est une erreur au chargement du fichier, avec quoi écrire.

Tourner tout de suite

onStart: true lance aussi la tâche une fois dès que le bot est connecté, sans attendre son premier horaire :
src/tasks/status.ts

Ce que reçoit run

Quand un passage est long, ou échoue

Un passage encore en cours quand arrive l’horaire suivant n’est pas lancé deux fois : cet horaire est sauté, et votre terminal le dit.
Un passage qui lève une erreur est signalé avec le fichier et la ligne, et la tâche garde son prochain horaire. Rien n’arrête le bot. Pendant que le bot se reconnecte à Discord, une tâche qui devait tourner est sautée et signalée ; elle tourne à nouveau à son prochain horaire.

En développement, en production

Dans chapterjs dev, enregistrer un fichier de tâche remplace ce qu’elle fait sans changer quand : une tâche qui tourne toutes les heures garde son prochain horaire à travers le rechargement. Changer every ou cron recompte la tâche à partir de l’enregistrement. Dans chapterjs start, un bot réparti sur plusieurs processus lance chaque tâche une fois, dans son premier processus.

Référence : task()

Chaque champ d’un fichier de tâche, et ce que reçoit run.

Envoyer des messages

Ce qu’une tâche peut publier, et où.