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
- Ouvrez le site du module Cron et connectez-vous avec votre compte Rawtoh — même session que le tableau de bord
- 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
- 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.
| Expression | Se déclenche |
|---|---|
* * * * * | Toutes les minutes |
*/15 * * * * | Toutes les 15 minutes |
0 9 * * * | Tous les jours à 9 h |
0 20 * * 5 | Le vendredi à 20 h |
0 0 1 * * | Le premier du mois à minuit |
Événements
| Événement | Description |
|---|---|
cron.tick | Un 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
cron.list— les crons de l’instance avec leur prochaine exécution, pratique pour afficher « prochain récap à… » quelque part
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
- Toutes les heures en live → rappeler le planning dans le chat, faire tourner un message sponsor
- Chaque matin → publier les stats de la veille dans Discord, remettre à zéro les compteurs du jour dans le stockage
- Cinq minutes avant le stream → passer OBS sur la scène d’attente, mettre à jour le titre Twitch
- Chaque nuit → nettoyer les entrées expirées du stockage