Skip to content
Guides

OpenClaw on Discord

Intents, the invite URL, guild allowlists, and the bot that sees nothing

6 min read

OpenClaw joins Discord as a bot over the official gateway: DMs and guild channels, voice channels, threads and forum channels, with approvals and interactive components in the messages themselves. The setup has more clicks than any other channel, because Discord makes you create an application, grant intents, generate an invite and collect three IDs before the bot can say a word. Here is the sequence, the access model, and why a bot that joined fine sees nothing.

Setup

  • Create an application in the Developer Portal, open Bot, and name it after your agent.
  • Enable the privileged intents: Message Content is required for normal guild messages; Server Members is recommended and needed for role allowlists and name matching; Presence is optional.
  • Reset Token generates your first token, despite the name. Set it on the machine as an environment variable and reference it from config; never paste it in chat.
  • Generate the invite URL with the bot and application-commands scopes and the baseline permissions: view channels, send messages, read history, embed links, attach files. Add the thread permissions if it will post in threads.
  • Enable Developer Mode, copy the server ID and your user ID, allow DMs from server members, then pair from an existing channel or from the CLI.

The docs recommend a private server as the bot’s workspace, and they say something specific about memory in guild channels: plan for it, because a busy channel becomes context. After the portal there are three configuration steps: the first pairing, a guild allowlist entry, and an explicit setting if you want it to answer without a mention.

Who it answers

DM policy follows the standard model, with the allowlist able to reference named access groups shared across channels. Guilds are allowlisted, and once a guild carries a channel map only the listed channels are allowed. Roles can route to specific agents, and native commands carry their own authorisation. Discord DMs default to pairing.

If DM policy is not open, unknown users are blocked (or prompted for pairing in pairing mode).

The bot that sees nothing

  • Used disallowed intents, or no guild messages at all: enable Message Content, and Server Members if you resolve users, then restart the Gateway.
  • Guild messages blocked: the group policy, the guild allowlist, a channel map that lists only some channels, and the mention rule, in that order. Status warns when the policy is allowlist and no guild is configured.
  • Mention rule off but still blocked: the setting sits in the wrong place, or the sender is filtered by a guild or channel user allowlist.
  • Slow or duplicate replies: Discord applies no channel-owned timeout to queued turns, so a stuck session shows up in the logs as a slow listener.
  • Bot-to-bot loops and voice transcription drops have their own entries on the troubleshooting page.

The cross-channel ladder is in OpenClaw not responding.

On Diali

The Developer Portal steps are Discord’s and stay yours; Diali’s guided setup walks them in order, keeps the token in the vault, and runs the Gateway. Intents, allowlists and the mention rule are still decisions you make. Discord on Diali is the channel page; Hosted OpenClaw on Diali is the assistant.

  • Application, intents, token, invite, three IDs.
  • Guild and channel maps are allowlists.
  • No messages usually means an intent first, then a policy.
Get started

Stop reading about it, build one

Set up an agent, pick a channel, and have it working inside the app you already keep open.