From 49a6a085af1dbaf96b47232aa21592417ff8bba6 Mon Sep 17 00:00:00 2001 From: nocode Date: Mon, 20 Jul 2026 13:49:45 +0200 Subject: [PATCH] feat(announcement): add schedule configuration for automated announcements Create a new schedule configuration file that allows defining automated announcements with flexible scheduling options. Supports two scheduling methods: - Interval-based: every X seconds/minutes/hours/days - Cron-based: standard 5-field cron syntax for precise scheduling Announcements can use presets (discord, restart, event) or custom title/text combinations. Includes comprehensive documentation and commented examples. --- lua/bladw_announcement/shared/sh_schedule.lua | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 lua/bladw_announcement/shared/sh_schedule.lua diff --git a/lua/bladw_announcement/shared/sh_schedule.lua b/lua/bladw_announcement/shared/sh_schedule.lua new file mode 100644 index 0000000..afe35f3 --- /dev/null +++ b/lua/bladw_announcement/shared/sh_schedule.lua @@ -0,0 +1,54 @@ +BladW = BladW or {} +BladW.Announcement = BladW.Announcement or {} + +-- ───────────────────────────────────────────── +-- Annonces automatiques (mon petit cron maison) +-- Chaque ligne = une annonce qui part toute seule. +-- +-- QUAND ? une seule des deux clés : +-- +-- every = "30m" -> ça répète tous les X. Unités : s (sec), m (min), h (heure), d (jour) +-- ex : "45s", "10m", "2h", "1d" +-- +-- cron = "0 3 * * *" -> comme sur Linux, 5 champs séparés par un espace : +-- 1) minute 0-59 +-- 2) heure 0-23 +-- 3) jour du mois 1-31 +-- 4) mois 1-12 +-- 5) jour semaine 0-6 (0 = dimanche) +-- +-- dans chaque champ je peux mettre : +-- * -> tout le temps +-- */5 -> tous les 5 (0, 5, 10...) +-- 1-5 -> une plage (de 1 à 5) +-- 1,3,5 -> une liste +-- +-- quelques exemples qui parlent : +-- "*/15 * * * *" -> toutes les 15 min +-- "0 * * * *" -> à chaque heure pile +-- "0 */2 * * *" -> toutes les 2 heures +-- "0 20 * * 5" -> tous les vendredis à 20h +-- "30 4 1 * *" -> le 1er du mois à 4h30 +-- (c'est l'heure du serveur qui compte) +-- +-- QUOI ? soit un preset, soit du sur-mesure : +-- preset = "restart" -> reprend un preset (voir sh_presets.lua) +-- title = "...", text = "..." -> annonce perso +-- (si je mets les deux, title/text passent devant le preset) +-- +-- Pour couper une ligne : je la commente (--) ou je la dégage. +-- ───────────────────────────────────────────── +BladW.Announcement.Schedules = { + + -- rappel Discord toutes les 30 min + { every = "30m", preset = "discord" }, + + -- petite astuce à chaque heure pile + { cron = "0 * * * *", title = "Astuce", text = "Tapez /bannonce pour gérer les annonces." }, + + -- exemples à décommenter au besoin + -- { cron = "0 5 * * *", preset = "restart" }, -- reboot tous les jours à 5h + -- { cron = "0 20 * * 5", preset = "event" }, -- event le vendredi à 20h + -- { every = "2h", preset = "discord" }, -- rappel Discord toutes les 2h + +}