Skip to Content
👋 Willkommen bei HowToUseOpenClaw Schnellstart
KanäleDiscord

Discord (Bot API)

Discord verbinden. Bot-Token und Server-Setup. Status: bereit für DM- und Gildentextkanäle über das offizielle Discord-Bot-Gateway.

Schnelleinrichtung (Anfänger)

  1. Erstellen Sie einen Discord-Bot und kopieren Sie das Bot-Token.
  2. Aktivieren Sie in den Discord-App-Einstellungen Message Content Intent (und Server Members Intent, wenn Sie vorhaben, Zulassen-Listen oder Namenssuche zu verwenden).
  3. Setzen Sie das Token für OpenClaw:
    • Env: DISCORD_BOT_TOKEN=...
    • Oder Konfig: channels.discord.token: "...".
    • Wenn beide gesetzt sind, hat config Vorrang (env fallback ist nur default-account).
  4. Laden Sie den Bot auf Ihren Server mit Nachrichtenberechtigung ein (erstellen Sie einen privaten Server, wenn Sie nur DMs wollen).
  5. Starten Sie das Gateway.
  6. Der DM-Zugang ist standardmäßig gekoppelt; bestätigen Sie den Kopplungscode beim ersten Kontakt.

Minimale Konfiguration:

{ channels: { discord: { enabled: true, token: "YOUR_BOT_TOKEN" } } }

Ziele

  • Sprich mit OpenClaw über Discord-DMs oder Gildenkanäle.
  • Direkte Chats werden in der Hauptsitzung des Agenten zusammengefasst (Standard: agent:main:main); Gildenkanäle bleiben isoliert als agent:<agentId>:discord:channel:<channelId> (Anzeigenamen verwenden discord:<guildSlug>#<channelSlug>).
  • Gruppen-DMs werden standardmäßig ignoriert; aktiviere sie über channels.discord.dm.groupEnabled und schränke sie optional durch channels.discord.dm.groupChannels ein.
  • Halte das Routing deterministisch: Antworten gehen immer zu dem Channel zurück, auf dem sie angekommen sind.

Wie es funktioniert

  1. Erstellen Sie eine Discord-Anwendung → Bot, aktivieren Sie die benötigten Intents (DMs + Gildennachrichten + Nachrichteninhalt) und holen Sie sich das Bot-Token.

  2. Laden Sie den Bot auf Ihren Server ein und geben Sie ihm die erforderlichen Berechtigungen, um Nachrichten zu lesen/zu senden, wenn Sie ihn verwenden möchten.

  3. Konfigurieren Sie OpenClaw mit channels.discord.token (oder DISCORD_BOT_TOKEN als Ersatz).

  4. Starten Sie das Gateway; es startet den Discord-Kanal automatisch, wenn ein Token verfügbar ist (zuerst in der Konfiguration, dann in der Umgebung) und channels.discord.enabled nicht false ist.

    • Wenn Sie env vars bevorzugen, setzen Sie DISCORD_BOT_TOKEN (ein Konfigurationsblock ist optional).
  5. Direkte Chats: benutze user:<id> (oder eine <@id> Erwähnung) wenn du sie abgibst; alle Turns landen in der gemeinsamen main Session. Bloße numerische IDs sind zweideutig und werden abgelehnt.

  6. Gildenkanäle: benutze channel:<channelId> für die Übergabe. Erwähnungen sind standardmäßig erforderlich und können pro Gilde oder pro Kanal eingestellt werden.

  7. Direkte Chats: standardmäßig sicher über channels.discord.dm.policy (Standard: Pairing"). Unbekannte Absender erhalten einen Pairing-Code (läuft nach 1 Stunde ab); Freigabe über openclaw pairing approve discord <code>.

    • Um das alte “offen für jeden” Verhalten beizubehalten: setze channels.discord.dm.policy="open" und channels.discord.dm.allowFrom=["*"].
    • Um eine harte Liste zuzulassen: setzen Sie channels.discord.dm.policy="allowlist" und listen Sie die Absender in channels.discord.dm.allowFrom.
    • Um alle DMs zu ignorieren: setze channels.discord.dm.enabled=false oder channels.discord.dm.policy="disabled".
  8. Gruppen-DMs werden standardmäßig ignoriert; aktivieren Sie sie mit channels.discord.dm.groupEnabled und schränken Sie sie optional mit channels.discord.dm.groupChannels ein.

  9. Optionale Gildenregeln: setze channels.discord.guilds, verschlüsselt durch Gilden-ID (bevorzugt) oder Slug, mit Regeln pro Kanal.

  10. Optionale native Befehle: commands.native steht standardmäßig auf "auto" (an für Discord/Telegram, aus für Slack). Überschreiben mit channels.discord.commands.native: true|false|"auto"; false löscht zuvor registrierte Befehle. Textbefehle werden durch commands.text gesteuert und müssen als eigenständige /... Nachrichten gesendet werden. Verwenden Sie commands.useAccessGroups: false, um Zugriffsgruppenprüfungen für Befehle zu umgehen.

  11. Optionaler Gildenkontextverlauf: Setze channels.discord.historyLimit (Standardwert 20, fällt zurück auf messages.groupChat.historyLimit), um die letzten N Gildennachrichten als Kontext einzubeziehen, wenn auf eine Erwähnung geantwortet wird. Setze 0 zum Deaktivieren.

  12. Reaktionen: Der Agent kann Reaktionen über das discord-Tool auslösen (gated by channels.discord.actions.*).

    • Semantik des Entfernens von Reaktionen: siehe /tools/reactions.
    • Das discord-Werkzeug ist nur sichtbar, wenn der aktuelle Kanal Discord ist.
  13. Native Befehle verwenden isolierte Sitzungsschlüssel (agent:<agentId>:discord:slash:<userId>) anstelle der gemeinsamen main Sitzung.

Hinweis: Die Auflösung von Name → id nutzt die Suche nach Gildenmitgliedern und erfordert Server Members Intent; wenn der Bot keine Mitglieder suchen kann, verwendet er ids oder <@id>-Erwähnungen. Hinweis: Slugs werden klein geschrieben und Leerzeichen durch - ersetzt. Channel-Namen werden ohne das führende # geschrieben. Hinweis: Die Zeilen des Gildenkontextes [from:] enthalten author.tag + id, um das Anpinnen von Antworten zu erleichtern.

Konfig schreibt

Standardmäßig ist es Discord erlaubt, Konfigurationsaktualisierungen zu schreiben, die durch /config set|unset ausgelöst werden (erfordert commands.config: true).Deaktivieren mit:

{ channels: { discord: { configWrites: false } } }

Wie Sie Ihren eigenen Bot erstellen

Dies ist das “Discord Developer Portal”, um OpenClaw in einem Server (Gilden)-Kanal wie #help zu betreiben.

1) Erstellen Sie die Discord-App + Bot-Benutzer

  1. Discord-Entwicklerportal → AnwendungenNeue Anwendung
  2. In Ihrer App:
    • BotBot hinzufügen
    • Kopieren Sie das Bot Token (das ist das, was Sie in DISCORD_BOT_TOKEN eintragen)

2) Aktivieren Sie die Gateway-Intents, die OpenClaw braucht

Discord blockiert “privilegierte Intents”, es sei denn, Sie aktivieren sie explizit in BotPrivileged Gateway Intents:

  • Nachrichteninhalt-Intent (wird in den meisten Gilden benötigt, um den Nachrichtentext zu lesen; ohne diesen Intent wird “Used disallowed intents” angezeigt oder der Bot verbindet sich, reagiert aber nicht auf Nachrichten)
  • Server Members Intent (empfohlen; erforderlich für einige Mitglieder-/Benutzer-Suchvorgänge und den Abgleich von Erlaubnislisten in Gilden)

Du brauchst normalerweise nicht Presence Intent.

3) Generieren Sie eine Einladungs-URL (OAuth2 URL Generator)

In Ihrer App: OAuth2URL Generator****Scopes

  • bot
  • applications.commands (erforderlich für native Befehle)

Bot-Berechtigungen (minimale Grundeinstellung)

  • ✅ Kanäle anzeigen
  • ✅ Nachrichten senden
  • ✅ Nachrichtenverlauf lesen
  • ✅ Links einbetten
  • ✅ Dateien anhängen
  • ✅ Reaktionen hinzufügen (optional, aber empfohlen)
  • ✅ Externe Emojis / Sticker verwenden (optional; nur wenn Sie sie möchten)

Kopieren Sie die generierte URL, öffnen Sie sie, wählen Sie Ihren Server und installieren Sie den Bot.

4) Erhalte die IDs (Gilde/Benutzer/Kanal)

Discord verwendet überall numerische IDs; OpenClaw config bevorzugt IDs.

  1. Discord (Desktop/Web) → BenutzereinstellungenErweitertEntwicklermodus aktivieren
  2. Rechtsklick:
    • Servername → Server-ID kopieren (Gilden-ID)
    • Kanal (z.B. #help) → Kanal-ID kopieren
    • Ihr Benutzer → Benutzer-ID kopieren

5) OpenClaw konfigurieren

Token

Setzen Sie das Bot-Token per env var (empfohlen auf Servern):

  • DISCORD_BOT_TOKEN=...

Oder über config:

{ channels: { discord: { enabled: true, token: "YOUR_BOT_TOKEN" } } }

Unterstützung für mehrere Konten: Verwenden Sie channels.discord.accounts mit Token pro Konto und optionalem Name. Siehe gateway/configuration für das gemeinsame Muster.

Allowlist + Kanal-Routing

Beispiel “Einzelner Server, nur mich zulassen, nur #help zulassen”:

{ channels: { discord: { enabled: true, dm: { enabled: false }, guilds: { "YOUR_GUILD_ID": { users: ["YOUR_USER_ID"], requireMention: true, channels: { help: { allow: true, requireMention: true } } } }, retry: { attempts: 3, minDelayMs: 500, maxDelayMs: 30000, jitter: 0.1 } } } }

Anmerkungen:

  • requireMention: true bedeutet, dass der Bot nur antwortet, wenn er erwähnt wird (empfohlen für gemeinsame Kanäle).
  • Die agents.list[].groupChat.mentionPatterns (oder messages.groupChat.mentionPatterns) zählen auch als Erwähnungen für Gildennachrichten.
  • Multi-Agent Überschreibung: setze pro-Agent Muster auf agents.list[].groupChat.mentionPatterns.
  • Wenn channels vorhanden ist, wird jeder nicht aufgeführte Channel standardmäßig verweigert.
  • Benutze einen "*" Channel-Eintrag, um die Standardeinstellungen auf alle Channels anzuwenden; explizite Channel-Einträge setzen den Platzhalter außer Kraft.
  • Threads erben die übergeordnete Channel-Konfiguration (allowlist, requireMention, Skills, Prompts, etc.), es sei denn, du fügst die Channel-ID des Threads explizit hinzu.
  • Von Bots verfasste Nachrichten werden standardmäßig ignoriert; setze channels.discord.allowBots=true um sie zuzulassen (eigene Nachrichten bleiben gefiltert).
  • Warnung: Wenn Sie Antworten an andere Bots zulassen (channels.discord.allowBots=true), verhindern Sie Bot-zu-Bot-Antwortschleifen mit requireMention, channels.discord.guilds.*.channels.<id>.users allowlists, und/oder klaren Leitplanken in AGENTS.md und SOUL.md.

6) Überprüfen Sie, ob es funktioniert

  1. Starten Sie das Gateway.
  2. Senden Sie in Ihrem Server-Kanal: @Krill hello (oder wie auch immer Ihr Botname lautet).
  3. Wenn nichts passiert: siehe Fehlerbehebung unten.

Fehlersuche

  • Erstens: Führen Sie openclaw doctor und openclaw channels status --probe aus (umsetzbare Warnungen + schnelle Überprüfungen).

  • “Used disallowed intents ”: Aktivieren Sie Message Content Intent (und wahrscheinlich Server Members Intent) im Developer Portal, und starten Sie dann das Gateway neu.

  • Bot verbindet sich, antwortet aber nie in einem Gildenkanal:

    • Fehlender Message Content Intent, oder
    • Dem Bot fehlen Channel-Berechtigungen (Anzeigen/Senden/Verlauf lesen), oder
    • Deine Konfiguration erfordert Erwähnungen und du hast es nicht erwähnt, oder
    • Deine Gilde/Channel-Zulassungsliste verweigert den Channel/Nutzer.
  • requireMention: false und trotzdem keine Antworten:

  • channels.discord.groupPolicy steht standardmäßig auf allowlist; setze sie auf "open" oder füge einen Gildeneintrag unter channels.discord.guilds hinzu (liste optional Kanäle unter channels.discord.guilds.<id>.channels auf, um sie einzuschränken).

    • Wenn Sie nur DISCORD_BOT_TOKEN setzen und nie einen channels.discord Abschnitt erstellen, wird die Laufzeit standardmäßig groupPolicy auf open gesetzt. Fügen Sie channels.discord.groupPolicy hinzu, channels.defaults.groupPolicy` oder eine Gilden-/Channel-Zulassungsliste, um sie zu sperren.
  • requireMention muss unter channels.discord.guilds (oder einem bestimmten Channel) stehen. channels.discord.requireMention auf der obersten Ebene wird ignoriert.

  • Berechtigungsprüfungen (channels status --probe) prüfen nur numerische Channel-IDs. Wenn Sie Slugs/Namen als channels.discord.guilds.*.channels-Schlüssel verwenden, kann die Prüfung keine Berechtigungen verifizieren.

  • DMs funktionieren nicht: channels.discord.dm.enabled=false, channels.discord.dm.policy="disabled", oder du wurdest noch nicht zugelassen (channels.discord.dm.policy="pairing").

Fähigkeiten & Grenzen

  • DMs und Gilden-Textchannels (Threads werden als separate Channels behandelt; Sprache wird nicht unterstützt).
  • Tippindikatoren werden best-effort gesendet; Nachrichten-Chunking verwendet channels.discord.textChunkLimit (Standard 2000) und teilt große Antworten nach Zeilenzahl auf (channels.discord.maxLinesPerMessage, Standard 17).
  • Optionales Newline Chunking: Setzen Sie channels.discord.chunkMode="newline", um Leerzeilen (Absatzgrenzen) vor dem Chunking aufzuteilen.
  • Datei-Uploads werden bis zu der konfigurierten channels.discord.mediaMaxMb unterstützt (Standard 8 MB).
  • Standardmäßig werden Gildenantworten mit Erwähnungen versehen, um lärmende Bots zu vermeiden.
  • Antwortkontext wird injiziert, wenn eine Nachricht auf eine andere Nachricht verweist (zitierter Inhalt + ids).
  • Natives Antwort-Threading ist standardmäßig ausgeschaltet; mit channels.discord.replyToMode und Antwort-Tags aktivieren.

Wiederholungsrichtlinie

Ausgehende Discord-API-Aufrufe werden bei Ratenbeschränkungen (429) mit Discord retry_after wiederholt, wenn verfügbar, mit exponentiellem Backoff und Jitter. Konfigurieren Sie über channels.discord.retry. Siehe Retry policy.

Konfigurieren

{ channels: { discord: { enabled: true, token: "abc.123", groupPolicy: "allowlist", guilds: { "*": { channels: { general: { allow: true } } } }, mediaMaxMb: 8, actions: { reactions: true, stickers: true, emojiUploads: true, stickerUploads: true, polls: true, permissions: true, messages: true, threads: true, pins: true, search: true, memberInfo: true, roleInfo: true, roles: false, channelInfo: true, channels: true, voiceStatus: true, events: true, moderation: false }, replyToMode: "off", dm: { enabled: true, policy: "pairing", // pairing | allowlist | open | disabled allowFrom: ["123456789012345678", "steipete"], groupEnabled: false, groupChannels: ["clawd-dm"] }, guilds: { "*": { requireMention: true }, "123456789012345678": { slug: "friends-of-clawd", requireMention: false, reactionNotifications: "own", users: ["987654321098765432", "steipete"], channels: { general: { allow: true }, help: { allow: true, requireMention: true, users: ["987654321098765432"], skills: ["search", "docs"], systemPrompt: "Keep answers short." } } } } } } }

Ack-Reaktionen werden global gesteuert über messages.ackReaction + messages.ackReactionScope gesteuert. Benutze messages.removeAckAfterReply um die Ack-Reaktion zu löschen, nachdem der Bot geantwortet hat.

  • dm.enabled: setze false um alle DMs zu ignorieren (Standard true).

  • dm.policy: DM-Zugangskontrolle (pairing empfohlen). "open" erfordert dm.allowFrom=["*"].

  • dm.allowFrom: DM-Zugriffsliste (Benutzer-IDs oder Namen). Wird von dm.policy="allowlist" und für die dm.policy="open"-Überprüfung verwendet. Der Assistent akzeptiert Benutzernamen und löst sie in IDs auf, wenn der Bot Mitglieder suchen kann.

  • dm.groupEnabled: Aktiviert Gruppen-DMs (Voreinstellung false).

  • dm.groupChannels: optionale Erlaubnisliste für Gruppen-DM-Kanal-Ids oder Slugs.

  • groupPolicy: steuert die Behandlung von Gilden-Channels (open|disabled|allowlist); allowlist erfordert Channel-Allowlists.

  • guilds: Regeln für jede Gilde, verschlüsselt durch die Gilden-ID (bevorzugt) oder den Slug.

  • guilds. "*": Standardeinstellungen pro Gilde, die angewendet werden, wenn kein expliziter Eintrag existiert.

  • guilds.<id>.slug: optionaler freundlicher Slug, der für Anzeigenamen verwendet wird.

  • guilds.<id>.users: optionale Benutzererlaubnisliste pro Gilde (IDs oder Namen).

  • guilds.<id>.tools: optionale Überschreibungen pro Gilde (allow/deny/alsoAllow), die verwendet werden, wenn die Channel-Überschreibung fehlt.

  • guilds.<id>.toolsBySender: optionale Überschreibungen der Werkzeugrichtlinien pro Absender auf Gildenebene (wird verwendet, wenn der Channel-Override fehlt; ”*“-Platzhalter wird unterstützt).

  • guilds.<id>.channels.<channel>.allow: erlaubt/verweigert den Channel, wenn groupPolicy="allowlist".

  • guilds.<id>.channels.<channel>.requireMention: Erwähnung des Gating für den Channel.

  • guilds.<id>.channels.<channel>.tools: optionale Überschreibungen der Tool-Richtlinie pro Kanal (allow/deny/alsoAllow).

  • guilds.<id>.channels.<channel>.toolsBySender: optionale Überschreibungen der Werkzeugrichtlinien pro Absender innerhalb des Kanals (`”*“-Wildcard unterstützt).

  • guilds.<id>.channels.<channel>.users: optionale Benutzererlaubnisliste pro Kanal.

  • guilds.<id>.channels.<channel>.skills: Skill-Filter (omit = alle Skills, empty = keine).

  • guilds.<id>.channels.<channel>.systemPrompt: zusätzlicher Systemprompt für den Channel (kombiniert mit Channel-Thema).

  • guilds.<id>.channels.<channel>.enabled: setze false um den Channel zu deaktivieren.

  • guilds.<id>.channels: Channel-Regeln (Schlüssel sind Channel-Slugs oder -IDs).

  • guilds.<id>.requireMention: Anforderung an die Erwähnung pro Gilde (überschreibbar pro Kanal).

  • guilds.<id>.reactionNotifications: Reaktionssystem-Ereignis-Modus (off, own, all, allowlist).

  • TextChunkLimit: Größe der ausgehenden Textchunks (Zeichen). Voreinstellung: 2000.

  • chunkMode: length (Voreinstellung) teilt nur auf, wenn textChunkLimit überschritten wird; newline teilt auf Leerzeilen (Absatzgrenzen) vor der Längenaufteilung auf.

  • maxLinesPerMessage: weiche maximale Zeilenzahl pro Nachricht. Voreinstellung: 17.

  • mediaMaxMb: Klemme für eingehende Medienauf der Festplatte gespeichert.

  • historyLimit: Anzahl der letzten Gildennachrichten, die bei der Beantwortung einer Erwähnung als Kontext mit einbezogen werden (Standardwert 20; fällt zurück auf messages.groupChat.historyLimit; 0 deaktiviert).

  • dmHistoryLimit: DM-History-Limit in Benutzer-Turns. Überschreibt pro Benutzer: dms["<Benutzer_id>"].historyLimit.

  • retry: Wiederholungsrichtlinie für ausgehende Discord-API-Aufrufe (Versuche, minDelayMs, maxDelayMs, Jitter).

  • actions: Tool Gates für jede Aktion; weglassen, um alle zuzulassen (zum Deaktivieren false setzen).

    • reactions (deckt react + read reactions ab)
    • Sticker, emojiUploads, stickerUploads, polls, permissions, messages, threads, pins, search
    • memberInfo, roleInfo, channelInfo, voiceStatus, events
    • Channels (Kanäle erstellen/bearbeiten/löschen + Kategorien + Berechtigungen)
    • Rollen (Rolle hinzufügen/entfernen, Standard false)
    • Moderation (Timeout/Kick/Bann, Voreinstellung false)

Reaktionsbenachrichtigungen verwenden guilds.<id>.reactionNotifications:

  • off: keine Reaktionsereignisse.
  • own: Reaktionen auf die eigenen Nachrichten des Bots (Voreinstellung).
  • all: alle Reaktionen auf alle Nachrichten.
  • allowlist: Reaktionen von guilds.<id>.users auf alle Nachrichten (leere Liste deaktiviert).

Voreinstellungen für Tool-Aktionen

AktionsgruppeStandardAnmerkungen
ReaktionenaktiviertReagieren + Reaktionen auflisten + EmojiListe
AufkleberaktiviertAufkleber senden
emojiUploadsaktiviertEmojis hochladen
stickerUploadsaktiviertSticker hochladen
UmfragenaktiviertUmfragen erstellen
permissionsenabledChannel permission snapshot
NachrichtenaktiviertLesen/Senden/Bearbeiten/Löschen
ThreadsaktiviertErstellen/Listen/Antworten
PinsaktiviertPin/unpin/list
SucheaktiviertNachrichtensuche (Vorschaufunktion)
memberInfoaktiviertMitgliederinfo
roleInfoaktiviertRollenliste
channelInfoaktiviertKanalinfo + Liste
channelsaktiviertKanal-/Kategorieverwaltung
voiceStatusaktiviertSprachstatusabfrage
eventsaktiviertGeplante Ereignisse auflisten/erstellen
RollendeaktiviertRolle hinzufügen/entfernen
ModerationdeaktiviertTimeout/Kick/Bann
  • replyToMode: off (Standard), first, oder all. Gilt nur, wenn das Modell ein Antwort-Tag enthält.

Antwort-Tags

Um eine Antwort anzufordern, kann das Modell ein Tag in seine Ausgabe aufnehmen:

  • [[reply_to_current]] - Antwort auf die auslösende Discord-Nachricht.
  • [[reply_to:<id>]] - Antwort auf eine bestimmte Nachrichten-ID aus dem Kontext/der Historie. Aktuelle Nachrichten-IDs werden an Prompts als [message_id: ...] angehängt; History-Einträge enthalten bereits IDs.

Das Verhalten wird durch channels.discord.replyToMode gesteuert:

  • Aus”: Tags ignorieren.
  • first: nur der erste ausgehende Chunk/Attachment ist eine Antwort.
  • all”: jeder ausgehende Chunk/Attachment ist eine Antwort.

Allowlist passende Hinweise:

  • allowFrom/users/groupChannels akzeptieren ids, Namen, Tags, oder Erwähnungen wie <@id>.
  • Präfixe wie discord:/user: (Benutzer) und channel: (Gruppen-DMs) werden unterstützt.
  • Verwenden Sie *, um jeden Absender/Kanal zuzulassen.
  • Wenn guilds.<id>.channels vorhanden ist, werden Kanäle, die nicht aufgeführt sind, standardmäßig verweigert.
  • Wenn guilds.<id>.channels weggelassen wird, sind alle Channels in der zugelassenen Gilde erlaubt.
  • Um keine Channels zu erlauben, setze channels.discord.groupPolicy: "disabled" (oder behalte eine leere Erlaubnisliste).
  • Der Konfigurationsassistent akzeptiert Gilden-/Kanalnamen (öffentlich + privat) und löst sie in IDs auf, wenn möglich.
  • Beim Start löst OpenClaw die Kanal-/Benutzernamen in den Zulassungslisten in IDs auf (wenn der Bot Mitglieder suchen kann) und protokolliert die Zuordnung; nicht aufgelöste Einträge werden wie eingegeben beibehalten.

Hinweise zum nativen Befehl:

  • Die registrierten Befehle spiegeln die Chat-Befehle von OpenClaw wider.
  • Native Befehle beachten dieselben Erlaubnislisten wie DMs/Gildennachrichten (channels.discord.dm.allowFrom, channels.discord.guilds, Regeln pro Kanal).
  • Slash-Befehle können immer noch in der Discord-Benutzeroberfläche für Benutzer sichtbar sein, die nicht auf der Erlaubnisliste stehen; OpenClaw erzwingt die Erlaubnislisten bei der Ausführung und antwortet “nicht autorisiert”.

Werkzeug-Aktionen

Der Agent kann discord mit Aktionen aufrufen wie:

  • react / reactions (Reaktionen hinzufügen oder auflisten)
  • sticker, poll, permissions
  • readMessages, sendMessage, editMessage, deleteMessage
  • Die Nutzdaten der Lese-/Such-/Pin-Tools umfassen normalisierte timestampMs (UTC-Epoche ms) und timestampUtc neben dem rohen Discord timestamp.
  • threadCreate, threadList, threadReply
  • pinMessage, unpinMessage, listPins
  • searchMessages, memberInfo, roleInfo, roleAdd, roleRemove, emojiList
  • channelInfo, channelList, voiceStatus, eventList, eventCreate
  • timeout, kick, ban

Discord-Nachrichten-IDs werden im injizierten Kontext ([discord message id: ...] und in den Verlaufszeilen) angezeigt, damit der Agent sie ansprechen kann. Emoji können Unicode sein (z. B. ) oder eine benutzerdefinierte Emoji-Syntax wie <:party_blob:1234567890>.

Sicherheit & Ops

  • Behandeln Sie das Bot-Token wie ein Passwort; bevorzugen Sie die Umgebungsvariable DISCORD_BOT_TOKEN auf überwachten Hosts oder sperren Sie die Berechtigungen der Konfigurationsdatei.
  • Geben Sie dem Bot nur die Rechte, die er braucht (normalerweise Lesen/Senden von Nachrichten).
  • Wenn der Bot feststeckt oder die Rate begrenzt ist, starten Sie das Gateway neu (openclaw gateway --force), nachdem Sie sichergestellt haben, dass kein anderer Prozess die Discord-Sitzung besitzt.
Zuletzt aktualisiert am: