Documentation officielle du projet

Configurer Discord

Le bot utilise les interactions HTTP : Discord appelle le Worker Cloudflare à chaque commande. Il n’y a pas de connexion Gateway permanente. Configure d’abord l’application, déploie le Worker, puis enregistre les endpoints HTTP.

Deux endpoints différents

/discord/interactions reçoit les commandes slash. /discord/events reçoit les événements d’autorisation et de désautorisation de l’application. Ce dernier est un Event Webhook, pas un webhook entrant créé dans un salon Discord.

1. Créer ou ouvrir l’application

  1. Ouvre le Developer Portal.Va sur Discord Developer Portal et sélectionne l’application.
  2. Ouvre General Information.Copie Application ID dans DISCORD_APPLICATION_ID et Public Key dans DISCORD_PUBLIC_KEY sur GitHub.
  3. Configure les pages légales.Terms of Service URL : https://zevent.app/terms. Privacy Policy URL : https://zevent.app/privacy.

2. Configurer le Bot Token

  1. Ouvre Bot.Crée le bot si Discord le demande.
  2. Réinitialise le token si nécessaire.Copie immédiatement sa valeur dans le secret GitHub DISCORD_TOKEN.
  3. Laisse les intents privilégiés désactivés.Le runtime HTTP n’utilise ni Presence Intent, ni Server Members Intent, ni Message Content Intent.
  4. Autorise l’installation publique.Le bot doit pouvoir être ajouté aux serveurs si le projet est destiné au public.

3. Configurer OAuth2

  1. Ouvre OAuth2.Copie le Client Secret dans DISCORD_CLIENT_SECRET sur GitHub.
  2. Ajoute le callback d’installation.Dans Redirects, ajoute exactement https://bot.zevent.app/discord/install/callback.
  3. Ajoute le callback admin.Ajoute exactement https://admin-api.zevent.app/oauth/callback.
  4. Enregistre.Les URLs, chemins, slashs et protocoles doivent être strictement identiques aux variables GitHub.

4. Configurer Installation

  1. Active les deux contextes.Coche Guild Install et User Install.
  2. Choisis Custom URL.Dans Install Link, sélectionne Custom URL et utilise https://zevent.app/install.
  3. N’utilise pas Discord Provided Link en parallèle.install_params et custom_install_url sont mutuellement exclusifs. Le workflow efface automatiquement les anciens paramètres lors du déploiement.

5. Déployer le Worker avant les endpoints

Lance une première fois le workflow GitHub. Vérifie ensuite que https://bot.zevent.app/healthz répond. Discord teste immédiatement les signatures et les réponses PING lorsqu’un endpoint est enregistré ; une URL qui ne pointe pas encore vers le Worker sera refusée.

6. Configurer l’Interactions Endpoint URL

  1. Retourne dans General Information.Repère le champ Interactions Endpoint URL.
  2. Colle l’URL.https://bot.zevent.app/discord/interactions
  3. Clique sur Save Changes.Discord envoie une requête PING signée. Le Worker vérifie la signature avec DISCORD_PUBLIC_KEY et répond automatiquement.
  4. En cas de refus.Vérifie que l’URL est en HTTPS, que le Worker est déployé et que la Public Key GitHub appartient à la même application.

7. Configurer l’Event Webhook

  1. Ouvre Webhooks dans le menu de l’application.Utilise la section Event Webhooks, pas « Integrations » dans un serveur Discord.
  2. Renseigne Endpoint URL.https://bot.zevent.app/discord/events
  3. Active Events.Active le bouton d’envoi des événements HTTP.
  4. Sélectionne deux événements.APPLICATION_AUTHORIZED et APPLICATION_DEAUTHORIZED.
  5. Enregistre.Discord envoie également un PING signé et attend une réponse HTTP 204.
Configuration automatique

Avec DISCORD_EVENT_WEBHOOK_URL et DISCORD_INSTALL_CALLBACK_URL dans les variables GitHub, le job Configure Discord installation contexts applique ces réglages après chaque déploiement du Worker. Les étapes manuelles ci-dessus servent à comprendre et vérifier le résultat dans le portail.

8. Vérifier les commandes

  1. Installe sur un serveur.Utilise https://zevent.app/install, puis exécute /setup channel.
  2. Installe sur ton compte.Exécute /events, /goals ou /schedule dans un contexte compatible.
  3. Vérifie l’admin.L’installation utilisateur doit apparaître dans le panneau après l’événement APPLICATION_AUTHORIZED.