ZEvent, Team G-Doc et Twitch sont collectés par trois Workers Cloudflare indépendants, avec leurs propres déploiements, Durable Objects, alarmes et journaux.
Workers déployés
| Worker | Source | Hors événement / pendant |
|---|---|---|
zevent-source-zevent |
API officielle ZEvent | 60 s / 15 s |
zevent-source-gdoc |
API Team G-Doc | Goals : 60 s / 30 s Planning : 2 min / 5 min |
zevent-source-twitch |
API Helix Twitch | 60 s / 60 s |
Liste des participants
L’API officielle ZEvent est la source d’autorité. Le collecteur active les nouveaux participants, actualise leurs identifiants et marque comme retirés ceux qui disparaissent. Les abonnements sont conservés en cas de retour, mais un participant retiré n’apparaît plus dans l’autocomplétion et n’est plus envoyé à Twitch.
Chaque Worker a un Cron d’amorçage toutes les minutes. Une alarme Durable Object maintient ensuite sa fréquence propre et applique un backoff plafonné à cinq minutes en cas d’erreur.
Les variables versionnées EVENT_START_AT et EVENT_END_AT définissent la
fenêtre de l’édition. Les alarmes changent automatiquement de cadence au début et à la fin. Le
planning G-Doc est moins souvent chargé pendant l’événement, tandis que les donation goals sont
rafraîchis plus vite.
Service Bindings
Le runtime Discord appelle les collecteurs par ZEVENT_COLLECTOR,
GDOC_COLLECTOR et TWITCH_COLLECTOR. Les collecteurs ne possèdent pas le
token Discord et ne publient aucune URL workers.dev.
Ouvre Workers & Pages puis le Worker de la source concernée et consulte Observability → Logs. Un Tail Worker n’est pas nécessaire tant que les logs natifs suffisent.
Activer ou suspendre un collecteur
Un opérateur peut contrôler ZEvent, Team G-Doc et Twitch depuis la liste des sources du panneau d’administration. Le changement est audité, ne demande aucun redéploiement et prend effet au prochain passage planifié. Une source suspendue apparaît comme inactive sur la page de statut et n’est pas considérée en erreur.
ZEvent et G-Doc sont actifs par défaut. Twitch est initialement inactif.
Préparer Twitch avant sa première activation
- Crée une application dans la console développeur Twitch.
-
Ajoute
TWITCH_CLIENT_IDetTWITCH_CLIENT_SECRETaux Secrets GitHub. -
Laisse
TWITCH_LIVE_NOTIFICATIONS=falsepour éviter les doublons avec ZEvent. - Déploie les secrets, puis ouvre le panneau d’administration.
- Dans la liste des sources, clique sur Activer pour Twitch.
TWITCH_LIVE_NOTIFICATIONS=false désactive uniquement les alertes Twitch de début de
live qui feraient doublon avec ZEvent. Les changements de titre et de jeu restent disponibles.
Il n’existe pas de variable TWITCH_ENABLED. Les secrets autorisent l’accès à Helix
; l’état d’activation est indépendant et conservé dans D1.
Twitch accepte 100 identifiants par requête /streams. Pour 296 streamers suivis, le
collecteur effectue donc trois requêtes par minute.
Pour un live existant, Twitch compare aussi le titre et le jeu. Les préférences
title_changes et game_changes de /follow live sont
indépendantes et désactivées par défaut. Un premier snapshot ou un nouvel identifiant de stream
initialise les valeurs sans produire de fausse alerte.
Journal détaillé
Chaque passage enregistre séparément les volumes observés, les modifications réelles, les notifications créées et sa durée. Les changements couvrent notamment la cagnotte, l’audience, les mises en ligne, les fins de live, les participations G-Doc et les événements ajoutés, modifiés ou supprimés. Ces valeurs alimentent les détails dépliables de la page de statut.
La métrique apiRequests compte chaque appel externe tenté, y compris lorsqu’il
échoue. La page de statut distingue ainsi une collecte complète du nombre de requêtes ZEvent,
G-Doc, Twitch Helix, Twitch OAuth ou Discord produites par cette exécution. Il ne s’agit pas du
compteur de facturation interne des Durable Objects Cloudflare.
Vérifier localement
pnpm collectors:typecheck
pnpm collectors:test
pnpm collectors:bundle