OpenClaw Discord events and operations
Reaction notifications, online-presence wakes with their guards, bot status and auto presence, config writes, the Gateway proxy, and PluralKit
Beyond messages, a Discord bot has a handful of operational surfaces: what it does when someone reacts, whether it notices a teammate coming online, what status it shows, whether chat can rewrite its config, how its traffic leaves the host, and how it treats proxied identities. OpenClaw’s Discord plugin covers each with a small config block. Here they are in turn, with the guards that keep the presence feature from becoming noise.
Reactions and presence events
- Per-guild reaction notifications have four modes, off, own, the default, all, and an allowlist that uses the guild’s users list; reaction events become system events attached to the routed Discord session.
- A guild can opt into routed agent wakes when a human member transitions from offline to online: the presence intent must be enabled in config and as the privileged intent on the application’s bot page, the routed agent needs an enabled heartbeat, and the guild block names a channel id whose viewers are eligible, an optional users list to narrow them, a reconnect suppression window, a burst limit and a burst window.
- OpenClaw seeds current online members from each complete guild snapshot, routes observed offline-to-online transitions, treats a later first online signal for an unseen member as newly available without asserting a prior status, ignores bots and unchanged states, and persists an eight-hour per-user cooldown across restarts; eligibility follows the view-channel permission on the channel or parent, with private threads also requiring membership or manage-threads.
- When Discord establishes a new session, presence-derived events are suppressed for the reconnect window, three hundred seconds by default, while guild state is rebuilt, so re-observed members cannot wake the agent one by one; queued events are also rate-limited per guild to the burst limit, eight per sixty-second sliding window by default, a resumed session is not a new session, and guilds above seventy-five thousand members require an explicit offline update before greeting. The event carries immutable user, guild and channel ids without display names.
The agent decides whether and how to greet.
Status and auto presence
Presence updates are applied when a status or activity field is set or when auto presence is enabled. A status alone sets online, idle or similar; an activity string sets a custom status by default, and an activity type selects playing, streaming, listening, watching, custom or competing, where streaming requires an activity URL and the URL in turn requires the streaming type. Auto presence is a runtime health signal: healthy maps to online, degraded or unknown to idle, and exhausted or unavailable to do-not-disturb, refreshed on a thirty-second interval with a fifteen-second minimum between updates that must not exceed the interval.
Writes, proxy, PluralKit
- Channel-initiated config writes are enabled by default and affect the config set and unset command flows when command features are enabled; a single flag disables them for Discord.
- Discord gateway WebSocket traffic and the startup REST lookups for the application id and allowlist resolution can be routed through an HTTP or HTTPS proxy with an explicit proxy setting, globally or per account; WebSocket connections do not inherit the Gateway process’s ambient proxy environment variables, so the setting is the only way.
- PluralKit resolution maps proxied messages to system member identity with an optional token for private systems: allowlists can use a member-id prefix, member display names match by name or slug only under the dangerous name-matching flag, lookups query the PluralKit API with the original message id, and a failed lookup leaves the proxied message treated as a bot message, dropped unless the allow-bots setting admits it.
OpenClaw on Discord is the channel these blocks configure, and OpenClaw heartbeat the requirement behind presence wakes.
Two kinds of presence
Discord presence here is the bot’s own status and the online transitions of humans in a guild; it is a different thing from the Gateway’s presence roster of connected clients. OpenClaw reactions covers the reaction tool the notification modes complement, and OpenClaw Gateway presence the Gateway-side roster that shares the word.
On Diali
On Diali reaction notifications and bot status follow the upstream defaults for the connected Discord bot, and the presence-events wake needs the privileged presence intent, which is enabled per bot application in the developer portal. Hosted OpenClaw on Diali is the assistant and Diali security describes the boundary the bot token sits behind.
- Reactions become system events; own is the default.
- Presence wakes need the intent, a heartbeat, and eight hours between greetings.
- Health becomes status: online, idle, do not disturb.
Stop reading about it, build one
Set up an agent, pick a channel, and have it working inside the app you already keep open.
