Skill

SkillsProductivity & Integrations › Communication

discord

Discord ops via the message tool (channel=discord).

Freerisk: low
discordreactmarkdown

Tools: message

The full skill

— name: discord description: "Discord ops via the message tool (channel=discord)." metadata: { "openclaw": { "emoji": "🎮", "requires": { "config": ["channels.discord.token"] } } } allowed-tools: ["message"] — # Discord (Via `message`) Use the `message` tool. No provider-specific `discord` tool exposed to the agent. ## Musts – Always: `channel: "discord"`. – Respect gating: `channels.discord.actions.*` (some default off: `roles`, `moderation`, `presence`, `channels`). – Prefer explicit ids: `guildId`, `channelId`, `messageId`, `userId`. – Multi-account: optional `accountId`. ## Guidelines – Avoid Markdown tables in outbound Discord messages. – Mention users as `<@USER_ID>`. – Prefer Discord components v2 (`components`) for rich UI; use legacy `embeds` only when you must. ## Targets – Send-like actions: `to: "channel:<id>"` or `to: "user:<id>"`. – Message-specific actions: `channelId: "<id>"` (or `to`) + `messageId: "<id>"`. ## Common Actions (Examples) Send message: “`json { "action": "send", "channel": "discord", "to": "channel:123", "message": "hello", "silent": true } “` Send with media: “`json { "action": "send", "channel": "discord", "to": "channel:123", "message": "see attachment", "media": "file:///tmp/example.png" } “` – Optional `silent: true` to suppress Discord notifications. Send with components v2 (recommended for rich UI): “`json { "action": "send", "channel": "discord", "to": "channel:123", "message": "Status update", "components": "[Carbon v2 components]" } “` – `components` expects Carbon component instances (Container, TextDisplay, etc.) from JS/TS integrations. – Do not combine `components` with `embeds` (Discord rejects v2 + embeds). Legacy embeds (not recommended): “`json { "action": "send", "channel": "discord", "to": "channel:123", "message": "Status update", "embeds": [{ "title": "Legacy", "description": "Embeds are legacy." }] } “` – `embeds` are ignored when components v2 are present. React: “`json { "action": "react", "channel": "discord", "channelId": "123", "messageId": "456", "emoji": "✅" } “` Read: “`json { "action": "read", "channel": "discord", "to": "channel:123", "limit": 20 } “` Edit / delete: “`json { "action": "edit", "channel": "discord", "channelId": "123", "messageId": "456", "message": "fixed typo" } “` “`json { "action": "delete", "channel": "discord", "channelId": "123", "messageId": "456" } “` Poll: “`json { "action": "poll", "channel": "discord", "to": "channel:123", "pollQuestion": "Lunch?", "pollOption": ["Pizza", "Sushi", "Salad"], "pollMulti": false, "pollDurationHours": 24 } “` Pins: “`json { "action": "pin", "channel": "discord", "channelId": "123", "messageId": "456" } “` Threads: “`json { "action": "thread-create", "channel": "discord", "channelId": "123", "messageId": "456", "threadName": "bug triage" } “` Search: “`json { "action": "search", "channel": "discord", "guildId": "999", "query": "release notes", "channelIds": ["123", "456"], "limit": 10 } “` Presence (often gated): “`json { "action": "set-presence", "channel": "discord", "activityType": "playing", "activityName": "with fire", "status": "online" } “` ## Writing Style (Discord) – Short, conversational, low ceremony. – No markdown tables. – Mention users as `<@USER_ID>`.