OpenClaw mit Discord verbinden: Bot, Intents und Serverrechte ohne Blindflug
Wenn dein OpenClaw-Bot in Discord online ist, aber nicht antwortet, prüfst du Intents, Serverrechte, Pairing und Runtime in der richtigen Reihenfolge.
Ein Discord-Bot kann online erscheinen und trotzdem keine Nachrichten verarbeiten. Das ist kein eindeutiges Fehlerbild: Der Invite kann unvollständig sein, ein Intent fehlen, OpenClaw kann noch mit einer alten Konfiguration laufen oder eine Nachricht kann an Pairing- und Guild-Regeln scheitern.
Deshalb richtest du die Verbindung in überprüfbaren Etappen ein. Nach jedem Schritt testest du genau eine Ebene, bevor du die nächste hinzunimmst.
Voraussetzungen
Für die Einrichtung brauchst du:
- eine laufende OpenClaw-Installation mit Shell-Zugriff auf den Gateway-Host,
- Zugriff auf das Discord Developer Portal,
- die Berechtigung, einen Bot auf einen Discord-Server einzuladen,
- einen privaten Testserver oder einen abgegrenzten Testkanal,
- einen in OpenClaw konfigurierten Secret-Provider für Umgebungsvariablen.
Teste nicht zuerst in einem stark frequentierten Community-Server. In einem privaten Server lassen sich Discord-Rechte, Mentions und OpenClaw-Regeln getrennt prüfen.
1. Discord-Anwendung und Bot anlegen
Öffne das Discord Developer Portal, wähle New Application und vergib einen Namen. Öffne anschließend in der Seitenleiste Bot und lege dort die Bot-Identität fest.
Aktiviere unter Privileged Gateway Intents:
- Message Content Intent: erforderlich, damit der Bot normale Nachrichten in Guild-Channels lesen kann.
- Server Members Intent: erforderlich, wenn du Rollen-Allowlists, Name-zu-ID-Auflösung oder kanalbezogene Audience-Gruppen verwendest.
- Presence Intent: optional; für einen normalen Text-Bot nicht nötig.
Erwartetes Ergebnis: Im Bot-Bereich existiert eine Bot-Identität und der Message Content Intent ist aktiv.
2. Token sicher an OpenClaw übergeben
Erzeuge den Token auf der Bot-Seite über Reset Token und kopiere ihn. Der Token gehört weder in ein Repository noch in einen Screenshot oder Chat. Wenn er offengelegt wurde, rotierst du ihn im Developer Portal, bevor du weiterarbeitest.
Setze ihn in der Umgebung, in der du die Konfiguration vorbereitest:
export DISCORD_BOT_TOKEN="<YOUR_DISCORD_BOT_TOKEN>"
Der Export gilt nur für diese Shell. Der Prozess, der den Gateway startet, muss dieselbe Variable ebenfalls erhalten. Bei einem Hintergrunddienst konfigurierst du sie deshalb in dessen Service-Umgebung und nicht nur in einem beliebigen Terminal.
Lege anschließend eine SecretRef auf die Umgebungsvariable an und aktiviere den Discord-Kanal:
openclaw config set channels.discord.token \
--ref-provider default \
--ref-source env \
--ref-id DISCORD_BOT_TOKEN
openclaw config set channels.discord.enabled true --strict-json
openclaw config validate
Falls dein Env-Provider nicht default heißt, verwendest du dessen konfigurierte Provider-ID. openclaw config set --help zeigt die SecretRef-Optionen deiner installierten CLI.
Erwartetes Ergebnis: openclaw config validate beendet sich ohne Schemafehler. Der Token selbst wird nicht als Klartext in die Konfiguration geschrieben.
Mit diesem Befehl siehst du, welche Konfigurationsdatei die CLI bearbeitet:
openclaw config file
3. Bot mit den nötigen Rechten einladen
Öffne im Developer Portal OAuth2 und dort den OAuth2 URL Generator. Aktiviere die Scopes:
botapplications.commands
Für normale Textkanäle braucht der Bot mindestens diese Berechtigungen:
- View Channels
- Send Messages
- Read Message History
- Embed Links
- Attach Files
Add Reactions ist optional. Soll der Bot in Threads oder Forum-Threads schreiben, braucht er zusätzlich Send Messages in Threads.
Öffne die erzeugte Invite-URL, wähle deinen Testserver und autorisiere den Bot. Kontrolliere danach die kanalbezogenen Discord-Rechte: Serverrechte allein helfen nicht, wenn ein Kanal sie durch einen Override verweigert.
Erwartetes Ergebnis: Der Bot erscheint im Testserver und darf den vorgesehenen Testkanal sehen sowie dort Nachrichten senden.
4. Gateway neu laden und Verbindung prüfen
Nach Änderungen an Token oder Discord-Konfiguration startest du den laufenden Gateway neu:
openclaw gateway restart
Prüfe danach zuerst Runtime und Transport:
openclaw status
openclaw gateway status
openclaw doctor
openclaw channels status --probe
Die dokumentierte gesunde Basis umfasst eine laufende Runtime, einen erfolgreichen Connectivity-Probe und einen verbundenen Kanaltransport. Die genaue Ausgabe kann je nach Installation und Kanal-Capabilities variieren.
Öffne für den eigentlichen Nachrichtentest ein zweites Terminal:
openclaw logs --follow
Sende dann eine einzelne Testnachricht und beobachte genau den dazugehörigen Log-Eintrag. Beende die Log-Ansicht anschließend mit Ctrl-C.
Wenn bereits openclaw gateway status fehlschlägt, liegt das Problem noch nicht an Discord-Kanalregeln. Wenn der Gateway läuft, aber die Kanalprobe scheitert, prüfst du Token, Gateway-Umgebung und Discord-Verbindung.
5. DM-Pairing abschließen
Discord-DMs verwenden standardmäßig Pairing. Schreibe dem Bot eine Direktnachricht. Ein unbekannter Absender erhält einen Pairing-Code; die ursprüngliche Nachricht wird noch nicht verarbeitet.
Zeige offene Anfragen an und bestätige den Code:
openclaw pairing list discord
openclaw pairing approve discord <CODE>
Pairing-Codes laufen nach einer Stunde ab. Pro Kanal-Account können höchstens drei Anfragen gleichzeitig offen sein. Ist ein Code abgelaufen, sendest du dem Bot erneut eine DM und verwendest die neue Anfrage.
Erwartetes Ergebnis: Nach der Freigabe verarbeitet der Bot eine neue DM und antwortet. Die Freigabe gilt für Direktnachrichten; sie erteilt nicht automatisch Zugriff auf Guild-Channels.
6. Guild-Zugriff getrennt testen
Aktiviere im Discord-Client den Developer Mode und kopiere die Server-ID sowie deine User-ID. Für einen begrenzten Test setzt du eine Guild-Allowlist, verlangst eine Mention und erlaubst deinen Absender:
openclaw config set channels.discord.groupPolicy '"allowlist"' --strict-json
openclaw config set 'channels.discord.guilds["YOUR_SERVER_ID"].requireMention' true --strict-json
openclaw config set 'channels.discord.guilds["YOUR_SERVER_ID"].users' '["YOUR_USER_ID"]' --strict-json
openclaw config validate
openclaw gateway restart
Ersetze die Platzhalter durch die numerischen Discord-IDs und lasse die IDs als Strings stehen. Bei den String-Werten sind die inneren doppelten Anführungszeichen erforderlich, weil --strict-json gültiges JSON erwartet.
Teste anschließend im erlaubten Kanal eine eindeutige Mention, etwa @Bot antworte mit ping.
Erwartetes Ergebnis: Die Mention wird verarbeitet und die Antwort erscheint im Kanal. Eine erfolgreiche DM allein deckt diesen Guild-Test nicht ab, weil Pairing und Guild-Zugriff unterschiedliche Zugriffskontrollen verwenden.
Wenn du später kanalbezogene Regeln ergänzt, teste nach jeder Einschränkung erneut. Prüfe bei einem stillen Kanal sowohl die OpenClaw-Regel als auch die Discord-Permissions dieses konkreten Kanals.
7. Sichtbare Antworten richtig einordnen
Die Runtime kennt für Gruppen- und Kanalgespräche den Config-Pfad messages.groupChat.visibleReplies. Ohne abweichende globale Regel verwendet er standardmäßig automatic: Normale finale Antworten werden wie gewohnt im Raum veröffentlicht.
Der Modus message_tool hat eine andere Semantik. Dann muss der Agent für sichtbare Raumausgaben ausdrücklich message(action=send) verwenden; normaler finaler Text bleibt privat. Das ist nützlich für gezielt gesteuerte Ausgaben, aber beim Debugging setzt du hier nicht zuerst an.
Wenn Discord Typing anzeigt, der Lauf endet und trotzdem kein Beitrag erscheint, prüfe:
- Ist
messages.groupChat.visibleRepliesausdrücklich aufmessage_toolgesetzt? - Hat der Lauf tatsächlich das Message-Tool für den Discord-Raum verwendet?
- Zeigen die Logs einen Zustell- oder Berechtigungsfehler?
Ist keine erzwungene Message-Tool-Ausgabe gewünscht, setzt du den Pfad auf automatic zurück:
openclaw config set messages.groupChat.visibleReplies '"automatic"' --strict-json
openclaw config validate
openclaw gateway restart
Sende danach im betroffenen Discord-Raum erneut eine Testnachricht. Erwartetes Ergebnis: Discord zeigt Typing, und die finale Antwort erscheint anschließend als normaler Beitrag im Kanal.
8. Slash Commands prüfen
Der Invite-Scope applications.commands erlaubt Discord die Registrierung nativer Befehle. OpenClaw verwendet für commands.native standardmäßig auto.
Prüfe nach dem Gateway-Neustart, ob Discord Befehle wie /help, /commands, /status oder /whoami anbietet. Diese Befehle funktionieren nur für autorisierte Absender. Ob Discord den Befehl anzeigt, sagt allein noch nichts darüber aus, ob der jeweilige Absender ihn auch ausführen darf.
Fehlen die Befehle vollständig, prüfst du zuerst den Invite-Scope und danach Gateway-Logs sowie Kanalstatus. Hast du commands.native bewusst deaktiviert, erwartet OpenClaw keine neue native Registrierung.
Fehlerbilder ohne Rätselraten
| Symptom | Zuerst prüfen | Erwartete Abgrenzung |
|---|---|---|
| Bot fehlt im Server | Invite-URL und Scope bot |
Invite-Problem, noch kein OpenClaw-Runtimefehler |
| Bot ist online, liest aber keine normale Guild-Nachricht | Message Content Intent, Kanalrechte und Mention-Regel | Discord-Event oder Zugriff wird blockiert |
| Kanalprobe scheitert nach Token-Wechsel | SecretRef, Service-Umgebung und Gateway-Neustart | Laufender Prozess sieht den neuen Token nicht |
| DM liefert nur einen Code | openclaw pairing list discord |
Transport funktioniert, Freigabe fehlt |
| DM funktioniert, Guild bleibt still | Guild-Allowlist, Absender, Mention und Kanalrechte | DM-Pairing ist nicht die Ursache |
| Typing erscheint, aber kein Beitrag | Logs und messages.groupChat.visibleReplies |
Verarbeitung und sichtbare Zustellung getrennt prüfen |
| Slash Commands fehlen | applications.commands, commands.native und Neustart |
Registrierung oder Autorisierung eingrenzen |
| Threads bleiben still | Send Messages in Threads | Normale Sendeberechtigung reicht dort nicht |
Sicher zurückrollen
Wenn du den Discord-Kanal nach einem fehlgeschlagenen Test deaktivieren möchtest, ohne die übrige OpenClaw-Konfiguration zu verändern, setzt du:
openclaw config set channels.discord.enabled false --strict-json
openclaw config validate
openclaw gateway restart
Wurde der Token offengelegt, reicht das Deaktivieren nicht. Rotiere ihn zusätzlich im Discord Developer Portal und aktualisiere anschließend die Variable in der Gateway-Umgebung.
Was ein vollständiger Test abdeckt
Ein vollständiger Discord-Test besteht aus getrennten Ergebnissen: Die Kanalprobe ist erfolgreich, eine freigegebene DM erhält eine Antwort, eine Mention im erlaubten Guild-Channel wird verarbeitet und ein autorisierter Slash Command funktioniert. Damit prüfst du Transport, Pairing, Guild-Zugriff und Command-Registrierung jeweils an der passenden Stelle.
Kernpunkte
- Intents, Serverrechte, Token, Pairing und Guild-Zugriff sind getrennte Fehlerquellen. Teste sie nacheinander.
- Ein Token-Wechsel wirkt für den laufenden Dienst nach dem Gateway-Neustart. Setze den Token über
channels.discord.tokenals SecretRef. - Validiere Config-Änderungen mit
openclaw config validateund lade den Gateway anschließend neu. - Eine freigegebene DM sagt nichts über den Guild-Zugriff aus: Pairing und Guild-Allowlist benötigen eigene Tests.
- Sichtbare Slash Commands betreffen die Registrierung; ob ein Absender sie ausführen darf, entscheidet die Autorisierung getrennt davon.
Weiterlesen
Transparenz
agentenlog.de nutzt KI-Assistenz für Recherche, Struktur und Entwurf. Inhaltliche Auswahl, Einordnung und Veröffentlichung liegen redaktionell bei agentenlog.de; Quellen und Fakten werden vor Veröffentlichung automatisiert geprüft.
Quellen
Serie: Alle Kanäle verbinden
Das könnte dich auch interessieren
Signal mit OpenClaw verbinden: signal-cli, Pairing, Gruppen und Troubleshooting
Signal mit OpenClaw einrichten: Plugin installieren, signal-cli verlinken, Transport prüfen, DMs pairen, Gruppen testen und Fehler sicher beheben.
OpenClaw Channel-Routing: Mehrere Kanäle und Agenten sauber zuordnen
So ordnest du Telegram, WhatsApp, Discord oder Slack gezielt einem OpenClaw-Agenten zu, prüfst Sessions und vermeidest Antworten im falschen Kanal.
iMessage mit OpenClaw verbinden: Apple Messages auf dem Mac sauber einrichten
So richtest du das offizielle iMessage-Plugin von OpenClaw mit imsg ein, prüfst macOS-Rechte, Pairing, Gruppen und einen entfernten Messages-Mac.