aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Bots Discord

Webhook Discord : envoyer des messages dans un salon

Un webhook Discord est le moyen le plus rapide de publier dans un salon : sans écrire une application bot complète, vous pouvez envoyer du texte, des embeds et des fichiers simplement en faisant une requête HTTP vers une seule URL. Dès que vous voulez faire remonter un événement de votre serveur (une nouvelle inscription, une erreur, un paiement, un build terminé) dans un salon en temps réel, le webhook est presque toujours l'option la plus pratique. Dans ce guide, j'explique ce qu'est un webhook, comment en créer un et comment envoyer des messages depuis du code ou un service externe, étape par étape.

Webhook contre bot

Un bot et un webhook ne sont pas la même chose. Un bot se connecte à la Gateway de Discord, peut lire les messages, répondre aux commandes et écouter les interactions des utilisateurs ; c'est une application qui tourne en continu. Un webhook, en revanche, est à sens unique : il ne fait qu'envoyer des messages, il ne peut rien lire ni répondre à des commandes. En contrepartie, il se met en place en quelques secondes et ne nécessite ni token ni processus permanent.

  • Vous voulez seulement pousser une notification/un log dans un salon → webhook.
  • Vous avez besoin de commandes, boutons, slash commands ou de lire les messages → bot.
  • Un webhook peut afficher un nom et un avatar personnalisés sur chaque message envoyé, ce qui est idéal pour distinguer différentes sources dans le même salon.

Comment créer un webhook

Pour créer un webhook, vous avez besoin de la permission Gérer le salon dans ce salon. Les étapes sont :

  • Cliquez sur l'icône d'engrenage (Modifier le salon) à côté du salon ciblé.
  • Suivez Intégrations → Webhooks → Nouveau webhook.
  • Donnez-lui un nom et un avatar, choisissez le salon, puis cliquez sur Copier l'URL du webhook.

L'URL a la forme https://discord.com/api/webhooks/<id>/<token>. La dernière partie de cette URL est un token ; quiconque la connaît peut publier dans ce salon. Ne codez donc pas l'URL en dur et ne la poussez pas sur GitHub ; conservez-la dans une variable d'environnement (par exemple dans un fichier .env).

L'envoi le plus simple : curl

Vous n'avez pas besoin d'écrire de code pour vérifier que le webhook fonctionne. Une commande curl sur une seule ligne suffit :

curl -H "Content-Type: application/json" \
     -d '{"content":"Bonjour le salon ! Ceci est un message de webhook."}' \
     "https://discord.com/api/webhooks/ID/TOKEN"

En cas de succès, Discord renvoie 204 No Content et le message apparaît instantanément dans le salon. Les champs les plus utilisés dans le corps JSON que vous envoyez sont :

  • content — message en texte brut (jusqu'à 2000 caractères).
  • username — le nom affiché pour ce message (remplace celui par défaut du webhook).
  • avatar_url — l'avatar de ce message.
  • embeds — un tableau de contenu en forme de carte enrichie.

Envoyer un webhook avec Python

Dans une vraie application, vous envoyez généralement depuis un langage de programmation. En Python, quelques lignes avec la bibliothèque requests suffisent :

import os
import requests

WEBHOOK_URL = os.environ["DISCORD_WEBHOOK_URL"]

payload = {
    "username": "Bot du serveur",
    "content": "Nouvelle inscription : **alice** vient de rejoindre.",
}

resp = requests.post(WEBHOOK_URL, json=payload, timeout=10)
resp.raise_for_status()  # lève une erreur si ce n'est pas 2xx

Remarquez que nous lisons l'URL via os.environ ; le token ne reste jamais dans le code. Avec raise_for_status(), vous évitez d'avaler silencieusement les requêtes échouées.

Node.js et l'envoi d'un embed

En Node.js, vous n'avez même pas besoin d'une bibliothèque supplémentaire ; les versions modernes incluent un fetch intégré. L'exemple ci-dessous envoie un embed coloré au lieu de texte brut :

const url = process.env.DISCORD_WEBHOOK_URL;

const body = {
  username: "Deploy Bot",
  embeds: [
    {
      title: "Mise en production terminée",
      description: "La version `v1.4.2` est en ligne.",
      color: 0x2ecc71, // vert
      fields: [
        { name: "Environnement", value: "production", inline: true },
        { name: "Durée", value: "42s", inline: true },
      ],
      timestamp: new Date().toISOString(),
    },
  ],
};

await fetch(url, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify(body),
});

Dans les embeds, color est un entier décimal ou hexadécimal, fields crée des zones ordonnées dans la carte, et inline: true les aligne côte à côte. Vous pouvez envoyer au maximum 10 embeds dans une seule requête.

Limites de débit et erreurs fréquentes

Les webhooks Discord appliquent une limite de débit (rate limit). Si vous envoyez des requêtes trop souvent, vous obtiendrez 429 Too Many Requests ; le champ retry_after de la réponse indique combien de secondes attendre. Pour un envoi à fort volume, regroupez vos messages (batch) ou utilisez une file d'attente. Autres points fréquents :

  • Le contenu ne peut pas être vide : au moins l'un des champs content, embeds ou file doit être rempli.
  • Limite de 2000 caractères : tronquez les longs logs ou joignez-les en fichier.
  • Fuite de token : si l'URL est exposée, supprimez l'ancien webhook et créez-en un nouveau.
  • Réponse immédiate : ajoutez ?wait=true à l'URL et Discord renvoie le message créé en JSON, pratique si vous avez besoin de l'ID du message.

Questions fréquentes

Les webhooks sont-ils gratuits, et y a-t-il une limite ?

Oui, les webhooks sont entièrement gratuits. Un salon peut en avoir jusqu'à 10 et un serveur quelques centaines au total. La vraie contrainte n'est pas le nombre, mais la limite de débit appliquée au nombre de requêtes envoyées dans un court laps de temps.

Puis-je lire les messages entrants avec un webhook ?

Non. Un webhook est à sens unique et ne fait qu'envoyer. Pour lire des messages, répondre à des commandes ou écouter les interactions, vous avez besoin d'un vrai bot (discord.js ou discord.py).

Que se passe-t-il si je partage accidentellement mon URL de webhook ?

Quiconque possède cette URL peut publier dans le salon concerné. Allez immédiatement dans les réglages du webhook sur Discord et supprimez l'ancien webhook ; cela invalide l'URL aussitôt. Créez ensuite un nouveau webhook et stockez la nouvelle URL en lieu sûr.

Vous voulez passer votre automatisation Discord au niveau supérieur ? Qu'il s'agisse d'un simple webhook de notification ou d'un bot complet qui répond aux commandes, je peux le construire pour vous. Contactez-moi et parlons de votre projet.

Bu kategorideki tüm yazılar →

Devamı için