Blog

· 4 Min. Lesezeit

Ankündigungen an Discord, Slack und Telegram mit einem API-Aufruf schicken

Schick Release Notes und Ankündigungen aus deiner App in einen Discord-Kanal, einen Slack-Kanal und einen Telegram-Kanal – mit einer REST-Anfrage und ohne Entwickler-Apps, die du registrieren musst.

Deine Community lebt an drei Orten: einem Discord-Server, einem Slack-Workspace und einem Telegram-Kanal. Bei jedem Release tippt jemand dieselbe Ankündigung von Hand in alle drei. Meist kommt sie zu spät, manchmal fehlt sie in einem der Kanäle, und die Formatierung sitzt nie ganz.

Selbst automatisieren heißt drei verschiedene Integrationen:

  • Discord will eine JSON-Payload an einen Kanal-Webhook, Bilder als Embeds und ein Limit von 2.000 Zeichen.
  • Slack will eine andere Payload-Form an eine URL für einen Incoming Webhook.
  • Telegram will einen Bot-Token, eine Chat-ID und eine andere Methode für Text, Fotos, Videos und Alben.

Diese Anleitung zeigt, wie du dieselbe Ankündigung mit einer Anfrage über Hapi an alle drei schickst. Keines der drei braucht eine Entwickler-App oder ein Plattform-Review. In etwa zehn Minuten kannst du live sein.

Schritt 1: Von jeder Plattform einen Zugang holen

Discord: Öffne deinen Server und geh zu Servereinstellungen → Integrationen → Webhooks → Neuer Webhook (auf Englisch: Server Settings → Integrations → Webhooks → New Webhook). Wähl den Kanal (zum Beispiel #announcements) und klick auf Webhook-URL kopieren (Copy Webhook URL).

Slack: Leg einen Incoming Webhook für deinen Workspace an und wähl den Kanal, in den er postet (zum Beispiel #launches). Kopier die URL, die mit https://hooks.slack.com/services/ beginnt.

Telegram: Schreib @BotFather, schick /newbot und kopier den Bot-Token. Füg den Bot deinem Kanal als Admin hinzu. Die Chat-ID ist der @username des Kanals oder die numerische ID bei privaten Kanälen.

Schritt 2: In Hapi verbinden

Lege ein kostenloses Hapi-Konto an, öffne Accounts → Connect und füg jeden Zugang ein. Hapi prüft vor dem Speichern, dass jede Webhook-URL ein echter Discord- oder Slack-Webhook ist. Webhook-URLs und Bot-Tokens werden im Ruhezustand verschlüsselt (AES-256-GCM) und nie an den Browser zurückgeschickt. Niemand in deinem Team kann sie aus dem Dashboard kopieren.

Dann erstellst du unter API keys einen API-Key und legst ihn in deine Umgebung:

bash
export HAPI_API_KEY="hapi_live_..."

Schritt 3: Eine Ankündigung überall hinschicken

bash
curl -X POST https://hapi.tools/v1/posts \
  -H "Authorization: Bearer $HAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: release-2-4-0" \
  -d '{
    "content": "v2.4 is out 🎉 Dark mode, CSV export and 3x faster search. Full notes: https://example.com/changelog",
    "platforms": ["discord", "slack", "telegram"],
    "mediaUrls": ["https://example.com/v2.4-banner.png"]
  }'

Du bekommst eine 201 mit einem Ergebnis pro Kanal zurück. So siehst du sofort, dass der Beitrag in Discord, Slack und Telegram angekommen ist.

Aus deiner Release-Pipeline (Node.js)

Der nützlichste Ort für diesen Aufruf ist das Ende deines Deploy-Skripts. Die Ankündigung geht raus, sobald ein Release live ist:

js
await fetch("https://hapi.tools/v1/posts", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.HAPI_API_KEY}`,
    "Content-Type": "application/json",
    // Same key on a retried deploy = no duplicate announcement.
    "Idempotency-Key": `release-${process.env.RELEASE_VERSION}`,
  },
  body: JSON.stringify({
    content: `${process.env.RELEASE_VERSION} is live 🚀 ${process.env.RELEASE_NOTES_URL}`,
    platforms: ["discord", "slack", "telegram"],
  }),
});

Der Idempotency-Key zählt hier. CI-Jobs werden wiederholt, und ohne ihn kann ein wackliges Deploy dasselbe Release dreimal ankündigen.

Schritt 4: Die Nachricht pro Kanal anpassen

Dein Slack-Workspace ist vielleicht für Kunden, dein Telegram-Kanal für die breitere Community. Mit platformOptions änderst du den Text pro Kanal in derselben Anfrage:

json
{
  "content": "v2.4 is out 🎉 Dark mode, CSV export and 3x faster search.",
  "platforms": ["discord", "slack", "telegram"],
  "platformOptions": {
    "slack": { "content": "v2.4 is live for all workspaces. Dark mode, CSV export and faster search. Questions? Reply in this thread." },
    "telegram": { "content": "v2.4 is out 🎉 Dark mode, CSV export, 3x faster search. Changelog: https://example.com/changelog" }
  }
}

Hapi prüft jede Fassung gegen die Limits dieser Plattform, bevor es die Anfrage annimmt. Läuft dein Discord-Text über 2.000 Zeichen, merkst du es jetzt und nicht nach dem Release.

Schritt 5: Zum richtigen Zeitpunkt planen

Launch um 9 Uhr in der Zeitzone deiner Nutzer, nicht wann das Deploy gerade fertig wurde? Ergänz eine Uhrzeit:

json
{
  "content": "Launch day 🚀 v3.0 is here.",
  "platforms": ["discord", "slack", "telegram"],
  "scheduledAt": "2026-11-20T09:00:00-05:00",
  "timezone": "America/New_York"
}

Keine dieser drei Plattformen lässt einen Webhook oder Bot eine Nachricht für später planen. Hapi hält den Beitrag zurück und schickt ihn pünktlich. Danach feuert es einen signierten Webhook post.published oder post.failed an deine App, mit dem Ergebnis für jeden Kanal.

Gut zu wissen

  • Bilder: Discord zeigt bis zu 10 Bilder als Embeds. Telegram schickt ein einzelnes Foto oder Video, oder ein Album mit bis zu 10, wenn du mehrere anhängst. Hängst du Medien an, begrenzt Telegram die Bildunterschrift auf 1.024 Zeichen. Fass Ankündigungen mit Bild also kurz.
  • Telegram-Antworten: Ergänz firstComment, dann postet Hapi das als Antwort auf deine Ankündigung. Praktisch für ein „Hier diskutieren“ oder einen Nachtrag mit dem vollständigen Changelog.
  • Löschen: Discord- und Telegram-Beiträge kannst du über DELETE /v1/posts/{id} löschen. Incoming Webhooks von Slack können Nachrichten nicht löschen. Prüf den Slack-Text also, bevor er rausgeht.
  • Mehr Netzwerke, derselbe Aufruf: Füg "x", "linkedin" oder "bluesky" zu platforms hinzu, um gleichzeitig öffentlich anzukündigen.

Was du dir ersparst

  • drei Payload-Formate und drei Sätze von Limits
  • Webhook-URLs und Bot-Tokens sicher verschlüsseln und speichern
  • einen Scheduler, weil keine dieser Plattformen für dich plant
  • Wiederholungen ohne Duplikate und eine Fehlermeldung pro Kanal

Starte deine 15-tägige Testphase → Die Testphase für 5 $ umfasst 5 verbundene Kanäle und 300 Beiträge über 15 Tage: genug für Discord, Slack und Telegram ab dem ersten Tag.