RawtohRawtoh/Docs
Documentation

Module Cron

Déclencheurs planifiés — lancez vos automatisations toutes les minutes, chaque matin, ou sur n’importe quelle expression cron.

Le module Cron émet des événements selon un planning. Définissez autant de crons nommés que vous voulez, chacun avec son expression et son fuseau horaire, et utilisez-les comme déclencheurs : un récap quotidien, un rappel toutes les heures de stream, un nettoyage à minuit.

Premiers pas

  1. Ouvrez le site du module Cron et connectez-vous avec votre compte Rawtoh — même session que le tableau de bord
  2. Choisissez votre organisation et cliquez sur Installer avec Rawtoh. Le module crée une instance de module dans votre organisation, enrôle sa paire de clés et se connecte. Vous devez avoir le rôle propriétaire
  3. Ajoutez vos crons : un nom, un planning en syntaxe cron et un fuseau horaire

Une instance par organisation suffit : tous ses crons émettent le même événement, distingués par leur nom.

Plannings

Expressions cron classiques à cinq champs, évaluées dans le fuseau du cron (un nom IANA comme Europe/Paris), donc l’heure d’été est gérée pour vous.

ExpressionSe déclenche
* * * * *Toutes les minutes
*/15 * * * *Toutes les 15 minutes
0 9 * * *Tous les jours à 9 h
0 20 * * 5Le vendredi à 20 h
0 0 1 * *Le premier du mois à minuit

Événements

ÉvénementDescription
cron.tickUn cron s’est déclenché. Le payload contient son name, son schedule, son timezone et le timestamp (epoch, millisecondes)

Il n’y a qu’un seul événement pour tous les crons de l’instance. Un déclencheur sur cron.tick filtre donc sur le nom :

import { event } from "rawtoh"

// Plusieurs crons peuvent tomber à la même minute : choisissez le vôtre par son nom.
export default event.payload.name === "recap-quotidien"

Ce que vous pouvez faire

import { module } from "rawtoh"

const crons = await module("cron").request("cron.list")
// [{ name: "recap-quotidien", schedule: "0 9 * * *", timezone: "Europe/Paris", next_run: 1760000000000 }]

Les crons se créent et se modifient sur le site du module, pas depuis les scripts : un planning ne peut pas se changer lui-même par accident.

Exemple : un récap quotidien dans Discord

Un cron nommé recap-quotidien sur 0 9 * * *, le déclencheur ci-dessus, et cette action :

import { event, module, storage } from "rawtoh"

const subs = (await storage.get("subs-du-jour")) ?? 0
await module("discord").request("message.send", {
  channel_id: "123456789012345678",
  content: `Récap du ${new Date(event.payload.timestamp).toLocaleDateString("fr")} : ${subs} nouveaux abonnés`,
})
await storage.set("subs-du-jour", 0)

Exemples d’automatisations