diff --git a/docs/channels/discord.md b/docs/channels/discord.md
index e55b03a10..3f3031fa3 100644
--- a/docs/channels/discord.md
+++ b/docs/channels/discord.md
@@ -386,6 +386,59 @@ See [Slash commands](/tools/slash-commands) for command catalog and behavior.
+
+ Presence updates are applied only when you set a status or activity field.
+
+ Status only example:
+
+```json5
+{
+ channels: {
+ discord: {
+ status: "idle",
+ },
+ },
+}
+```
+
+ Activity example (custom status is the default activity type):
+
+```json5
+{
+ channels: {
+ discord: {
+ activity: "Focus time",
+ activityType: 4,
+ },
+ },
+}
+```
+
+ Streaming example:
+
+```json5
+{
+ channels: {
+ discord: {
+ activity: "Live coding",
+ activityType: 1,
+ activityUrl: "https://twitch.tv/openclaw",
+ },
+ },
+}
+```
+
+ Activity type map:
+
+ - 0: Playing
+ - 1: Streaming (requires `activityUrl`)
+ - 2: Listening
+ - 3: Watching
+ - 4: Custom (uses the activity text as the status state; emoji is optional)
+ - 5: Competing
+
+
+
Discord supports button-based exec approvals in DMs.
@@ -515,6 +568,7 @@ High-signal Discord fields:
- delivery: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage`
- media/retry: `mediaMaxMb`, `retry`
- actions: `actions.*`
+- presence: `activity`, `status`, `activityType`, `activityUrl`
- features: `pluralkit`, `execApprovals`, `intents`, `agentComponents`, `heartbeat`, `responsePrefix`
## Safety and operations