Discord (Bot API)¶
Status: klaar voor DM’s en tekstkanalen in servers via de officiële Discord-botgateway.
Snelle installatie (beginner)¶
- Maak een Discord-bot en kopieer de bot-token.
- Schakel in de instellingen van de Discord-app Message Content Intent in (en Server Members Intent als je toegestane lijsten of naamopzoekingen wilt gebruiken).
- Stel de token in voor OpenClaw:
- Env:
DISCORD_BOT_TOKEN=...- Of config:channels.discord.token: "...". - Als beide zijn ingesteld, heeft config voorrang (env-terugval is alleen voor het standaardaccount). - Nodig de bot uit op je server met berichtenrechten (maak een privésserver als je alleen DM’s wilt).
- Start de Gateway.
- DM-toegang is standaard gekoppeld; keur de koppelcode goed bij het eerste contact.
Minimale config:
{
channels: {
discord: {
enabled: true,
token: "YOUR_BOT_TOKEN",
},
},
}
Doelen¶
- Praten met OpenClaw via Discord-DM’s of serverkanalen.
- Directe chats worden samengevoegd in de hoofdsessie van de agent (standaard
agent:main:main); serverkanalen blijven geïsoleerd alsagent:<agentId>:discord:channel:<channelId>(weergavenamen gebruikendiscord:<guildSlug>#<channelSlug>). - Groeps-DM’s worden standaard genegeerd; inschakelen via
channels.discord.dm.groupEnableden optioneel beperken metchannels.discord.dm.groupChannels. - Routering deterministisch houden: antwoorden gaan altijd terug naar het kanaal waarop ze zijn binnengekomen.
Hoe het werkt¶
- Maak een Discord-applicatie → Bot, schakel de benodigde intents in (DM’s + serverberichten + berichtinhoud) en pak de bot-token.
- Nodig de bot uit op je server met de rechten om berichten te lezen/verzenden waar je hem wilt gebruiken.
- Configureer OpenClaw met
channels.discord.token(ofDISCORD_BOT_TOKENals terugval). - Start de Gateway; deze start automatisch het Discord-kanaal wanneer een token beschikbaar is (eerst config, env als terugval) en
channels.discord.enablednietfalseis. - Als je env-vars verkiest, stelDISCORD_BOT_TOKENin (een configblok is optioneel). - Directe chats: gebruik
user:<id>(of een<@id>-vermelding) bij het afleveren; alle beurten komen in de gedeeldemain-sessie terecht. Kale numerieke ID’s zijn dubbelzinnig en worden geweigerd. - Serverkanalen: gebruik
channel:<channelId>voor aflevering. Vermeldingen zijn standaard vereist en kunnen per server of per kanaal worden ingesteld. - Directe chats: standaard beveiligd via
channels.discord.dm.policy(standaard:"pairing"). Onbekende afzenders krijgen een koppelcode (verloopt na 1 uur); keur goed viaopenclaw pairing approve discord <code>. - Om het oude “open voor iedereen”-gedrag te behouden: stelchannels.discord.dm.policy="open"enchannels.discord.dm.allowFrom=["*"]in. - Voor een harde toegestane lijst: stelchannels.discord.dm.policy="allowlist"in en vermeld afzenders inchannels.discord.dm.allowFrom. - Om alle DM’s te negeren: stelchannels.discord.dm.enabled=falseofchannels.discord.dm.policy="disabled"in. - Groeps-DM’s worden standaard genegeerd; inschakelen via
channels.discord.dm.groupEnableden optioneel beperken metchannels.discord.dm.groupChannels. - Optionele serverregels: stel
channels.discord.guildsin, gesleuteld op server-id (voorkeur) of slug, met regels per kanaal. - Optionele native opdrachten:
commands.nativestaat standaard op"auto"(aan voor Discord/Telegram, uit voor Slack). Overschrijf metchannels.discord.commands.native: true|false|"auto";falsewist eerder geregistreerde opdrachten. Tekstopdrachten worden geregeld doorcommands.texten moeten als zelfstandige/...-berichten worden verzonden. Gebruikcommands.useAccessGroups: falseom toegangscontrole voor opdrachten te omzeilen.- Volledige opdrachtenlijst + config: Slash commands
- Optionele servercontextgeschiedenis: stel
channels.discord.historyLimitin (standaard 20, valt terug opmessages.groupChat.historyLimit) om de laatste N serverberichten als context mee te nemen bij het antwoorden op een vermelding. Stel0in om uit te schakelen. - Reacties: de agent kan reacties activeren via de
discord-tool (afgeschermd doorchannels.discord.actions.*).- Semantiek voor het verwijderen van reacties: zie /tools/reactions.
- De
discord-tool wordt alleen beschikbaar gesteld wanneer het huidige kanaal Discord is.
- Native opdrachten gebruiken geïsoleerde sessiesleutels (
agent:<agentId>:discord:slash:<userId>) in plaats van de gedeeldemain-sessie.
Let op: Naam → id-resolutie gebruikt zoeken naar serverleden en vereist Server Members Intent; als de bot geen leden kan doorzoeken, gebruik id’s of <@id>-vermeldingen.
Let op: Slugs zijn lowercase met spaties vervangen door -. Kanaalnamen worden geslugged zonder de leidende #.
Let op: Servercontext-[from:]-regels bevatten author.tag + id om ping-klare antwoorden te vergemakkelijken.
Config-wegschrijvingen¶
Standaard mag Discord config-updates wegschrijven die worden getriggerd door /config set|unset (vereist commands.config: true).
Uitschakelen met:
{
channels: { discord: { configWrites: false } },
}
Je eigen bot maken¶
Dit is de installatie in het “Discord Developer Portal” voor het draaien van OpenClaw in een serverkanaal zoals #help.
1. Maak de Discord-app + botgebruiker¶
- Discord Developer Portal → Applications → New Application
- In je app:
- Bot → Add Bot
- Kopieer de Bot Token (dit is wat je invult in
DISCORD_BOT_TOKEN)
2) Schakel de gateway-intents in die OpenClaw nodig heeft¶
Discord blokkeert “privileged intents” tenzij je ze expliciet inschakelt.
In Bot → Privileged Gateway Intents, schakel in:
- Message Content Intent (vereist om berichttekst te lezen in de meeste servers; zonder dit zie je “Used disallowed intents” of verbindt de bot maar reageert niet op berichten)
- Server Members Intent (aanbevolen; vereist voor sommige lid-/gebruikersopzoekingen en het matchen van toegestane lijsten in servers)
Je hebt Presence Intent meestal niet nodig. Het instellen van de eigen aanwezigheid van de bot (actie setPresence) gebruikt gateway OP3 en vereist deze intent niet; deze is alleen nodig als je aanwezigheidupdates van andere serverleden wilt ontvangen.
3. Genereer een uitnodigings-URL (OAuth2 URL Generator)¶
In je app: OAuth2 → URL Generator
Scopes
- ✅
bot - ✅
applications.commands(vereist voor native opdrachten)
Bot Permissions (minimale basis)
- ✅ View Channels
- ✅ Send Messages
- ✅ Read Message History
- ✅ Embed Links
- ✅ Attach Files
- ✅ Add Reactions (optioneel maar aanbevolen)
- ✅ Use External Emojis / Stickers (optioneel; alleen als je ze wilt)
Vermijd Administrator tenzij je aan het debuggen bent en de bot volledig vertrouwt.
Kopieer de gegenereerde URL, open deze, kies je server en installeer de bot.
4. Verkrijg de id’s (server/gebruiker/kanaal)¶
Discord gebruikt overal numerieke id’s; OpenClaw-config verkiest id’s.
- Discord (desktop/web) → User Settings → Advanced → schakel Developer Mode in
- Rechtsklik:
- Servernaam → Copy Server ID (server-id)
- Kanaal (bijv.
#help) → Copy Channel ID - Je gebruiker → Copy User ID
5) Configureer OpenClaw¶
Token¶
Stel de bot-token in via env-var (aanbevolen op servers):
DISCORD_BOT_TOKEN=...
Of via config:
{
channels: {
discord: {
enabled: true,
token: "YOUR_BOT_TOKEN",
},
},
}
Ondersteuning voor meerdere accounts: gebruik channels.discord.accounts met per-account tokens en optioneel name. Zie gateway/configuration voor het gedeelde patroon.
Toegestane lijst + kanaalroutering¶
Voorbeeld “één server, alleen ik toestaan, alleen #help toestaan”:
{
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,
},
},
},
}
Notities:
requireMention: truebetekent dat de bot alleen antwoordt wanneer hij wordt vermeld (aanbevolen voor gedeelde kanalen).agents.list[].groupChat.mentionPatterns(ofmessages.groupChat.mentionPatterns) tellen ook als vermeldingen voor serverberichten.- Multi-agent-override: stel per-agent patronen in op
agents.list[].groupChat.mentionPatterns. - Als
channelsaanwezig is, wordt elk kanaal dat niet is vermeld standaard geweigerd. - Gebruik een
"*"-kanaalingang om standaardwaarden toe te passen op alle kanalen; expliciete kanaalingangen overschrijven de wildcard. - Threads erven de configuratie van het bovenliggende kanaal (toegestane lijst,
requireMention, Skills, prompts, enz.) tenzij je de thread-kanaal-id expliciet toevoegt. - Eigenaars-hint: wanneer een per-server of per-kanaal
users-toegestane lijst overeenkomt met de afzender, behandelt OpenClaw die afzender als de eigenaar in de systeemprompt. Voor een globale eigenaar over kanalen heen, stelcommands.ownerAllowFromin. - Door de bot geschreven berichten worden standaard genegeerd; stel
channels.discord.allowBots=truein om ze toe te staan (eigen berichten blijven gefilterd). - Waarschuwing: als je antwoorden op andere bots toestaat (
channels.discord.allowBots=true), voorkom bot-tot-bot-antwoordlussen metrequireMention,channels.discord.guilds.*.channels.<id>.users-toegestane lijsten en/of door guardrails te wissen inAGENTS.mdenSOUL.md.
6. Verifieer dat het werkt¶
- Start de Gateway.
- Stuur in je serverkanaal:
@Krill hello(of wat je botnaam ook is). - Als er niets gebeurt: controleer Problemen oplossen hieronder.
Problemen oplossen¶
- Eerst: voer
openclaw doctorenopenclaw channels status --probeuit (actiegerichte waarschuwingen + snelle audits). - “Used disallowed intents”: schakel Message Content Intent (en waarschijnlijk Server Members Intent) in het Developer Portal in en start daarna de Gateway opnieuw.
- Bot verbindt maar antwoordt nooit in een serverkanaal:
- Ontbrekende Message Content Intent, of
- De bot mist kanaalrechten (View/Send/Read History), of
- Je config vereist vermeldingen en je hebt die niet gebruikt, of
- Je server-/kanaaltoegestane lijst weigert het kanaal/de gebruiker.
requireMention: falsemaar nog steeds geen antwoorden:channels.discord.groupPolicystaat standaard op allowlist; stel het in op"open"of voeg een serververmelding toe onderchannels.discord.guilds(optioneel kanalen opsommen onderchannels.discord.guilds.<id>.channelsom te beperken).- Als je alleen
DISCORD_BOT_TOKENinstelt en nooit eenchannels.discord-sectie maakt, stelt de runtimegroupPolicystandaard in opopen. Voegchannels.discord.groupPolicy,channels.defaults.groupPolicyof een server-/kanaaltoegestane lijst toe om het af te schermen. requireMentionmoet onderchannels.discord.guildsstaan (of een specifiek kanaal).channels.discord.requireMentionop het hoogste niveau wordt genegeerd.- Rechtenaudits (
channels status --probe) controleren alleen numerieke kanaal-id’s. Als je slugs/namen gebruikt alschannels.discord.guilds.*.channels-sleutels, kan de audit de rechten niet verifiëren. - DM’s werken niet:
channels.discord.dm.enabled=false,channels.discord.dm.policy="disabled", of je bent nog niet goedgekeurd (channels.discord.dm.policy="pairing"). - Uitvoeringsgoedkeuringen in Discord: Discord ondersteunt een knop-UI voor uitvoeringsgoedkeuringen in DM’s (Eenmalig toestaan / Altijd toestaan / Weigeren).
/approve <id> ...is alleen voor doorgestuurde goedkeuringen en zal de knopprompts van Discord niet oplossen. Als je❌ Failed to submit approval: Error: unknown approval idziet of de UI nooit verschijnt, controleer: channels.discord.execApprovals.enabled: truein je config.- Of je Discord-gebruikers-id in
channels.discord.execApprovals.approversstaat (de UI wordt alleen naar goedkeurders gestuurd). - Gebruik de knoppen in de DM-prompt (Eenmalig toestaan, Altijd toestaan, Weigeren).
- Zie Exec approvals en Slash commands voor de bredere goedkeurings- en opdrachtflow.
Mogelijkheden & beperkingen¶
- DM’s en tekstkanalen in servers (threads worden als aparte kanalen behandeld; voice wordt niet ondersteund).
- Typindicatoren worden best-effort verzonden; berichtopdeling gebruikt
channels.discord.textChunkLimit(standaard 2000) en splitst lange antwoorden op regelaantal (channels.discord.maxLinesPerMessage, standaard 17). - Optionele alinea-opdeling: stel
channels.discord.chunkMode="newline"in om te splitsen op lege regels (alinea-grenzen) vóór lengte-opdeling. - Uploads van bestanden worden ondersteund tot de geconfigureerde
channels.discord.mediaMaxMb(standaard 8 MB). - Antwoorden in servers zijn standaard vermeldings-afgeschermd om lawaaierige bots te vermijden.
- Antwoordcontext wordt geïnjecteerd wanneer een bericht naar een ander bericht verwijst (geciteerde inhoud + id’s).
- Native antwoord-threading staat standaard uit; schakel in met
channels.discord.replyToModeen reply-tags.
Herhaalbeleid¶
Uitgaande Discord-API-aanroepen herhalen bij rate limits (429) met Discord retry_after waar beschikbaar, met exponentiële backoff en jitter. Configureer via channels.discord.retry. Zie Retry policy.
Config¶
{
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,
presence: false,
},
replyToMode: "off",
dm: {
enabled: true,
policy: "pairing", // pairing | allowlist | open | disabled
allowFrom: ["123456789012345678", "steipete"],
groupEnabled: false,
groupChannels: ["openclaw-dm"],
},
guilds: {
"*": { requireMention: true },
"123456789012345678": {
slug: "friends-of-openclaw",
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-reacties worden globaal geregeld via messages.ackReaction +
messages.ackReactionScope. Gebruik messages.removeAckAfterReply om de
ack-reactie te verwijderen nadat de bot heeft geantwoord.
dm.enabled: stelfalsein om alle DM’s te negeren (standaardtrue).dm.policy: DM-toegangsbeheer (pairingaanbevolen)."open"vereistdm.allowFrom=["*"].dm.allowFrom: DM-toegestane lijst (gebruikers-id’s of namen). Gebruikt doordm.policy="allowlist"en voordm.policy="open"-validatie. De wizard accepteert gebruikersnamen en lost ze op naar id’s wanneer de bot leden kan doorzoeken.dm.groupEnabled: groeps-DM’s inschakelen (standaardfalse).dm.groupChannels: optionele toegestane lijst voor groeps-DM-kanaal-id’s of slugs.groupPolicy: regelt de afhandeling van serverkanalen (open|disabled|allowlist);allowlistvereist kanaaltoegestane lijsten.guilds: per-serverregels gesleuteld op server-id (voorkeur) of slug.guilds."*": standaard per-serverinstellingen die worden toegepast wanneer geen expliciete vermelding bestaat.guilds.<id>.slug: optionele vriendelijke slug voor weergavenamen.guilds.<id>.users: optionele per-servergebruikers-toegestane lijst (id’s of namen).guilds.<id>.tools: optionele per-server toolbeleid-overschrijvingen (allow/deny/alsoAllow) gebruikt wanneer de kanaaloverschrijving ontbreekt.guilds.<id>.toolsBySender: optionele per-afzender toolbeleid-overschrijvingen op serverniveau (van toepassing wanneer de kanaaloverschrijving ontbreekt;"*"-wildcard ondersteund).guilds.<id>.channels.<channel>.allow: sta het kanaal toe/weiger wanneergroupPolicy="allowlist".guilds.<id>.channels.<channel>.requireMention: vermelding-afscherming voor het kanaal.guilds.<id>.channels.<channel>.tools: optionele per-kanaal toolbeleid-overschrijvingen (allow/deny/alsoAllow).guilds.<id>.channels.<channel>.toolsBySender: optionele per-afzender toolbeleid-overschrijvingen binnen het kanaal ("*"-wildcard ondersteund).guilds.<id>.channels.<channel>.users: optionele per-kanaal gebruikers-toegestane lijst.guilds.<id>.channels.<channel>.skills: skillfilter (weglaten = alle Skills, leeg = geen).guilds.<id>.channels.<channel>.systemPrompt: extra systeemprompt voor het kanaal. Discord-kanaaltopics worden als onbetrouwbare context geïnjecteerd (niet als systeemprompt).guilds.<id>.channels.<channel>.enabled: stelfalsein om het kanaal uit te schakelen.guilds.<id>.channels: kanaalregels (sleutels zijn kanaalslugs of id’s).guilds.<id>.requireMention: per-server vermeldingseis (overschrijfbaar per kanaal).guilds.<id>.reactionNotifications: reactiestelsel-gebeurtenismodus (off,own,all,allowlist).textChunkLimit: uitgaande tekst-chunkgrootte (tekens). Standaard: 2000.chunkMode:length(standaard) splitst alleen bij overschrijden vantextChunkLimit;newlinesplitst op lege regels (alinea-grenzen) vóór lengte-opdeling.maxLinesPerMessage: zachte maximale regellimiet per bericht. Standaard: 17.mediaMaxMb: begrens inkomende media die op schijf worden opgeslagen.historyLimit: aantal recente serverberichten om als context mee te nemen bij het antwoorden op een vermelding (standaard 20; valt terug opmessages.groupChat.historyLimit;0schakelt uit).dmHistoryLimit: DM-geschiedenislimeit in gebruikersbeurten. Per-gebruiker-overschrijvingen:dms["<user_id>"].historyLimit.retry: herhaalbeleid voor uitgaande Discord-API-aanroepen (pogingen, minDelayMs, maxDelayMs, jitter).pluralkit: los PluralKit-geproxiede berichten op zodat systeemleden als afzonderlijke afzenders verschijnen.actions: per-actie tool-afschermingen; weglaten om alles toe te staan (stelfalsein om uit te schakelen).reactions(dekt reageren + reacties lezen)stickers,emojiUploads,stickerUploads,polls,permissions,messages,threads,pins,searchmemberInfo,roleInfo,channelInfo,voiceStatus,eventschannels(kanalen + categorieën + rechten maken/bewerken/verwijderen)roles(rollen toevoegen/verwijderen, standaardfalse)moderation(timeout/kick/ban, standaardfalse)presence(botstatus/-activiteit, standaardfalse)execApprovals: Discord-specifieke uitvoeringsgoedkeurings-DM’s (knop-UI). Ondersteuntenabled,approvers,agentFilter,sessionFilter.
Reactiemeldingen gebruiken guilds.<id>.reactionNotifications:
off: geen reactiegebeurtenissen.own: reacties op de eigen berichten van de bot (standaard).all: alle reacties op alle berichten.allowlist: reacties vanguilds.<id>.usersop alle berichten (lege lijst schakelt uit).
PluralKit (PK)-ondersteuning¶
Schakel PK-opzoekingen in zodat geproxiede berichten worden opgelost naar het onderliggende systeem + lid.
Wanneer ingeschakeld gebruikt OpenClaw de lididentiteit voor toegestane lijsten en labelt de
afzender als Member (PK:System) om onbedoelde Discord-pings te voorkomen.
{
channels: {
discord: {
pluralkit: {
enabled: true,
token: "pk_live_...", // optional; required for private systems
},
},
},
}
Notities bij toegestane lijsten (PK ingeschakeld):
- Gebruik
pk:<memberId>indm.allowFrom,guilds.<id>.usersof per-kanaalusers. - Weergavenamen van leden worden ook gematcht op naam/slug.
- Opzoekingen gebruiken de oorspronkelijke Discord-bericht-id (het pre-proxy-bericht), zodat de PK-API dit alleen binnen zijn venster van 30 minuten kan oplossen.
- Als PK-opzoekingen mislukken (bijv. privé-systeem zonder token), worden geproxiede berichten
behandeld als botberichten en verworpen tenzij
channels.discord.allowBots=true.
Standaarden voor toolacties¶
| Actiegroep | Standaard | Notities |
|---|---|---|
| reactions | ingeschakeld | Reageren + reacties tonen + emojiList |
| stickers | ingeschakeld | Stickers verzenden |
| emojiUploads | ingeschakeld | Emoji’s uploaden |
| stickerUploads | ingeschakeld | Stickers uploaden |
| polls | ingeschakeld | Polls maken |
| permissions | ingeschakeld | Snapshot van kanaalrechten |
| messages | ingeschakeld | Lezen/verzenden/bewerken/verwijderen |
| threads | ingeschakeld | Maken/lijsten/antwoorden |
| pins | ingeschakeld | Vastzetten/losmaken/lijsten |
| search | ingeschakeld | Berichten zoeken (previewfunctie) |
| memberInfo | ingeschakeld | Lid informatie |
| roleInfo | ingeschakeld | Rollenlijst |
| channelInfo | ingeschakeld | Kanaalinformatie + lijst |
| channels | ingeschakeld | Kanaal-/categoriebeheer |
| voiceStatus | ingeschakeld | Voice-status opzoeken |
| events | ingeschakeld | Geplande events tonen/maken |
| rollen | uitgeschakeld | Rollen toevoegen/verwijderen |
| moderatie | uitgeschakeld | Timeout/kick/ban |
| aanwezigheid | uitgeschakeld | Botstatus/-activiteit (setPresence) |
replyToMode:off(standaard),firstofall. Geldt alleen wanneer het model een reply-tag bevat.
Reply-tags¶
Om een antwoord in een thread te vragen, kan het model één tag in zijn uitvoer opnemen:
[[reply_to_current]]— antwoord op het triggerende Discord-bericht.[[reply_to:<id>]]— antwoord op een specifieke bericht-id uit context/geschiedenis. Huidige bericht-id’s worden aan prompts toegevoegd als[message_id: …]; geschiedenisvermeldingen bevatten al id’s.
Gedrag wordt geregeld door channels.discord.replyToMode:
off: tags negeren.first: alleen de eerste uitgaande chunk/bijlage is een antwoord.all: elke uitgaande chunk/bijlage is een antwoord.
Notities bij het matchen van toegestane lijsten:
allowFrom/users/groupChannelsaccepteren id’s, namen, tags of vermeldingen zoals<@id>.- Prefixen zoals
discord:/user:(gebruikers) enchannel:(groeps-DM’s) worden ondersteund. - Gebruik
*om elke afzender/elk kanaal toe te staan. - Wanneer
guilds.<id>.channelsaanwezig is, worden niet-vermelde kanalen standaard geweigerd. - Wanneer
guilds.<id>.channelsontbreekt, zijn alle kanalen in de toegestane server toegestaan. - Om geen kanalen toe te staan, stel
channels.discord.groupPolicy: "disabled"in (of houd een lege toegestane lijst). - De configuratiewizard accepteert
Guild/Channel-namen (publiek + privé) en lost ze waar mogelijk op naar id’s. - Bij het opstarten lost OpenClaw kanaal-/gebruikersnamen in toegestane lijsten op naar id’s (wanneer de bot leden kan doorzoeken) en logt de mapping; niet-opgeloste items blijven zoals ingevoerd.
Notities bij native opdrachten:
- De geregistreerde opdrachten weerspiegelen de chatopdrachten van OpenClaw.
- Native opdrachten respecteren dezelfde toegestane lijsten als DM’s/serverberichten (
channels.discord.dm.allowFrom,channels.discord.guilds, per-kanaalregels). - Slash-commando’s kunnen in de Discord-UI zichtbaar blijven voor gebruikers die niet op de toegestane lijst staan; OpenClaw handhaaft de toegestane lijsten bij uitvoering en antwoordt met “niet geautoriseerd”.
Toolacties¶
De agent kan discord aanroepen met acties zoals:
react/reactions(reacties toevoegen of tonen)sticker,poll,permissionsreadMessages,sendMessage,editMessage,deleteMessage- Lees-/zoek-/pin-toolpayloads bevatten genormaliseerde
timestampMs(UTC-epoch ms) entimestampUtcnaast ruwe Discordtimestamp. threadCreate,threadList,threadReplypinMessage,unpinMessage,listPinssearchMessages,memberInfo,roleInfo,roleAdd,roleRemove,emojiListchannelInfo,channelList,voiceStatus,eventList,eventCreatetimeout,kick,bansetPresence(botactiviteit en online status)
Discord-bericht-id’s worden zichtbaar gemaakt in de geïnjecteerde context ([discord message id: …] en geschiedenisregels) zodat de agent ze kan targeten.
Emoji kunnen unicode zijn (bijv. ✅) of aangepaste emoji-syntaxis zoals <:party_blob:1234567890>.
Veiligheid & beheer¶
- Behandel de bot-token als een wachtwoord; geef de voorkeur aan de
DISCORD_BOT_TOKENenv-var op beheerde hosts of vergrendel de bestandsrechten van de config. - Geef de bot alleen de rechten die hij nodig heeft (meestal Berichten lezen/verzenden).
- Als de bot vastloopt of rate limited is, herstart de Gateway (
openclaw gateway --force) nadat je hebt bevestigd dat geen andere processen de Discord-sessie bezitten.