Works with Paperclip
How Discord fits into a Paperclip company.
Discord drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.
S
SaaS FactoryPaired
Pre-configured AI company — 18 agents, 18 skills, one-time purchase.
$27$59
Explore packSource file
SKILL.md197 linesExpandCollapse
---name: discorddescription: "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>`.