Intégration Discord
Cette API expose toutes les briques nécessaires au bot Discord interne de Zone01 Rouen : configuration des salons et rôles, liaison login ↔ ID Discord, catalogues de technologies et templates de recherche d’emploi.
Bootstrap du bot
Au démarrage, charge la config complète une seule fois :
curl /api/v1/discord/config/full{
"success": true,
"config": {
"guild_id": 1234567890123456789,
"forum_channel_id": 9876543210,
"role_ping_cdi": 555,
"channel_progress_p1_2024": 777
}
}Les
BIGINTPostgres sont convertis automatiquement ennumberJS, donc directement utilisables dansclient.channels.fetch(id).
Récupérer un seul champ
Si tu n’as besoin que d’un canal ou rôle précis :
curl /api/v1/discord/role_ping_cdi/config
# → { "success": true, "name": "role_ping_cdi", "value": 555 }⚠️ Le
nameest validé contre une liste blanche (cf. Discord —:name/config). Utiliser un champ hors liste renvoie400.
Lier un apprenant à son compte Discord
Quand un apprenant tape /link <login> dans Discord :
curl -X PUT /api/v1/discord-users \
-H "Content-Type: application/json" \
-d '{ "login": "alice", "discord_id": "1234567890" }'C’est un upsert — la même requête fonctionne pour créer ou mettre à jour. Pour résoudre dans l’autre sens (login → ID Discord) :
curl /api/v1/discord-users/aliceMention ciblée
Combiner les deux endpoints précédents permet d’envoyer un message ciblé :
- Lister les apprenants en retard via
/promotions/:eventId/students. - Pour chaque apprenant, résoudre son ID Discord via
/discord-users/:login. - Envoyer un DM ou un ping dans le salon
channel_progress_p1_2024.
Tags & technologies
Pour les commandes de tagging (ex. /tech) :
curl /api/v1/discord/technologies{
"success": true,
"technologies": [
{ "id": 1, "name": "Go" },
{ "id": 2, "name": "Rust" }
]
}Templates de requêtes d’emploi
Pour les commandes d’agrégation d’offres (ex. /job) :
curl /api/v1/discord/job-queriesÉcoles interdites
Liste utilisée par les commandes anti-spam / vérification d’inscription :
curl /api/v1/discord/forbidden-schools