discord
This Claude Code skill enables agents to perform Discord operations through the `message` tool by setting `channel: "discord"`. It supports sending messages with optional media or rich UI components, reacting to messages with emojis, reading message history, editing or deleting messages, and creating polls within Discord channels or direct messages, while respecting configured action permissions and preferring explicit guild, channel, and message IDs for reliability.
git clone --depth 1 https://github.com/the-open-agent/openagent /tmp/discord && cp -r /tmp/discord/skills/discord ~/.claude/skills/discordSKILL.md
# 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>`.Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.
Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks OpenClaw to add a note, list notes, search notes, or manage note folders.
Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
Create, search, and manage Bear notes via grizzly CLI.
Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.
BluOS CLI (blu) for discovery, playback, grouping, and volume.
Use when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
Capture frames or clips from RTSP/ONVIF cameras.