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

Discord Webhook gebruiken: berichten naar een kanaal sturen

Een Discord webhook is de snelste manier om in een kanaal te posten: zonder een volledige bottoepassing te schrijven, kun je tekst, embeds en bestanden versturen door simpelweg een HTTP-verzoek naar één URL te doen. Zodra je een gebeurtenis vanaf je server (een nieuwe aanmelding, een fout, een betaling, een afgeronde build) in real time in een kanaal wilt laten verschijnen, is een webhook bijna altijd de meest praktische keuze. In deze gids leg ik stap voor stap uit wat een webhook is, hoe je er een aanmaakt en hoe je berichten verstuurt vanuit code of vanuit een externe dienst.

Webhook versus bot

Een bot en een webhook zijn niet hetzelfde. Een bot verbindt met de Discord Gateway, kan berichten lezen, op commando's reageren en naar gebruikersinteracties luisteren; het is een doorlopend draaiende toepassing. Een webhook daarentegen is eenrichtingsverkeer: hij verstuurt alleen berichten, kan niets lezen en niet op commando's reageren. In ruil daarvoor is hij in seconden opgezet en heeft hij geen token of langdurig draaiend proces nodig.

  • Alleen een melding/log in een kanaal plaatsen → webhook.
  • Commando's, knoppen, slash commands of berichten lezen nodig → bot.
  • Een webhook kan bij elk bericht een aangepaste naam en avatar tonen, ideaal om verschillende bronnen in hetzelfde kanaal te onderscheiden.

Hoe maak je een webhook aan

Om een webhook aan te maken heb je de rechten Kanaal beheren in dat kanaal nodig. De stappen zijn:

  • Klik op het tandwielicoon (Kanaal bewerken) naast het doelkanaal.
  • Volg Integraties → Webhooks → Nieuwe webhook.
  • Geef hem een naam en avatar, kies het kanaal en klik op Webhook-URL kopiëren.

De URL heeft de vorm https://discord.com/api/webhooks/<id>/<token>. Het laatste deel van deze URL is een token; iedereen die het kent kan in dat kanaal posten. Zet de URL dus niet hard in je code en push hem niet naar GitHub; bewaar hem in een omgevingsvariabele (bijvoorbeeld in een .env-bestand).

De eenvoudigste verzending: curl

Je hoeft geen code te schrijven om te testen of de webhook werkt. Eén regel curl is genoeg:

curl -H "Content-Type: application/json" \
     -d '{"content":"Hallo kanaal! Dit is een webhook-bericht."}' \
     "https://discord.com/api/webhooks/ID/TOKEN"

Bij succes geeft Discord 204 No Content terug en verschijnt het bericht direct in het kanaal. De meest gebruikte velden in de JSON-body die je verstuurt zijn:

  • content — bericht in platte tekst (maximaal 2000 tekens).
  • username — de naam die voor dit bericht wordt getoond (overschrijft de standaard van de webhook).
  • avatar_url — de avatar voor dit bericht.
  • embeds — een array met inhoud in de vorm van een rijke kaart.

Een webhook versturen met Python

In een echte toepassing verstuur je meestal vanuit een programmeertaal. In Python zijn een paar regels met de requests-bibliotheek genoeg:

import os
import requests

WEBHOOK_URL = os.environ["DISCORD_WEBHOOK_URL"]

payload = {
    "username": "Server Bot",
    "content": "Nieuwe aanmelding: **alice** is zojuist toegetreden.",
}

resp = requests.post(WEBHOOK_URL, json=payload, timeout=10)
resp.raise_for_status()  # gooi een fout als het geen 2xx is

Merk op dat we de URL via os.environ uitlezen; het token staat nooit in de code. Met raise_for_status() voorkom je dat mislukte verzoeken stilletjes worden ingeslikt.

Node.js en een embed versturen

In Node.js heb je niet eens een extra bibliotheek nodig; moderne versies bevatten een ingebouwde fetch. Het voorbeeld hieronder verstuurt een gekleurde embed in plaats van platte tekst:

const url = process.env.DISCORD_WEBHOOK_URL;

const body = {
  username: "Deploy Bot",
  embeds: [
    {
      title: "Release voltooid",
      description: "Versie `v1.4.2` staat nu live.",
      color: 0x2ecc71, // groen
      fields: [
        { name: "Omgeving", value: "production", inline: true },
        { name: "Duur", value: "42s", inline: true },
      ],
      timestamp: new Date().toISOString(),
    },
  ],
};

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

In embeds is color een decimaal of hexadecimaal geheel getal, maakt fields nette vakken in de kaart en zet inline: true ze naast elkaar. Je kunt maximaal 10 embeds in één verzoek versturen.

Rate limits en veelgemaakte fouten

Discord webhooks hanteren een rate limit. Als je te vaak verzoeken stuurt krijg je 429 Too Many Requests; het veld retry_after in het antwoord vertelt hoeveel seconden je moet wachten. Voor verzending in groot volume bundel je je berichten (batch) of gebruik je een wachtrij. Andere punten waar mensen vaak tegenaan lopen:

  • Inhoud mag niet leeg zijn: minstens een van content, embeds of file moet gevuld zijn.
  • Limiet van 2000 tekens: kort lange logs in of voeg ze als bestand toe.
  • Tokenlek: als de URL is uitgelekt, verwijder de oude webhook en maak een nieuwe aan.
  • Direct antwoord nodig: voeg ?wait=true aan de URL toe en Discord geeft het aangemaakte bericht als JSON terug, handig als je de bericht-ID nodig hebt.

Veelgestelde vragen

Zijn webhooks gratis, en is er een limiet?

Ja, webhooks zijn volledig gratis. Een kanaal kan er maximaal 10 hebben en een server enkele honderden in totaal. De echte beperking is niet het aantal, maar de rate limit op hoeveel verzoeken je in korte tijd verstuurt.

Kan ik inkomende berichten lezen met een webhook?

Nee. Een webhook is eenrichtingsverkeer en verstuurt alleen. Om berichten te lezen, op commando's te reageren of naar gebruikersinteracties te luisteren heb je een echte bot nodig (discord.js of discord.py).

Wat gebeurt er als ik per ongeluk mijn webhook-URL deel?

Iedereen met die URL kan in het betreffende kanaal posten. Ga meteen naar de webhook-instellingen in Discord en verwijder de oude webhook; daarmee wordt de URL direct ongeldig. Maak vervolgens een nieuwe webhook aan en bewaar de nieuwe URL veilig.

Wil je je Discord-automatisering naar een hoger niveau tillen? Of het nu een eenvoudige notificatie-webhook is of een volledige bot die op commando's reageert, ik bouw het voor je. Neem contact met me op en laten we het over je project hebben.

Bu kategorideki tüm yazılar →

Devamı için