Openclaw-master-skills discord
Use when you need to control Discord from Clawdbot via the discord tool: send messages, react, post or upload stickers, upload emojis, run polls, manage threads/pins/search, fetch permissions or member/role/channel info, or handle moderation actions in Discord DMs or channels.
install
source · Clone the upstream repo
git clone https://github.com/LeoYeAI/openclaw-master-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/LeoYeAI/openclaw-master-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/discord" ~/.claude/skills/leoyeai-openclaw-master-skills-discord && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/LeoYeAI/openclaw-master-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/discord" ~/.openclaw/skills/leoyeai-openclaw-master-skills-discord && rm -rf "$T"
manifest:
skills/discord/SKILL.mdsource content
Discord Actions
Overview
Use
discord to manage messages, reactions, threads, polls, and moderation. You can disable groups via discord.actions.* (defaults to enabled, except roles/moderation). The tool uses the bot token configured for Clawdbot.
Inputs to collect
- For reactions:
,channelId
, and anmessageId
.emoji - For stickers/polls/sendMessage: a
target (to
orchannel:<id>
). Optionaluser:<id>
text.content - Polls also need a
plus 2–10question
.answers - For media:
withmediaUrl
for local files orfile:///path
for remote.https://... - For emoji uploads:
,guildId
,name
, optionalmediaUrl
(limit 256KB, PNG/JPG/GIF).roleIds - For sticker uploads:
,guildId
,name
,description
,tags
(limit 512KB, PNG/APNG/Lottie JSON).mediaUrl
Message context lines include
discord message id and channel fields you can reuse directly.
Note:
sendMessage uses to: "channel:<id>" format, not channelId. Other actions like react, readMessages, editMessage use channelId directly.
Actions
React to a message
{ "action": "react", "channelId": "123", "messageId": "456", "emoji": "✅" }
List reactions + users
{ "action": "reactions", "channelId": "123", "messageId": "456", "limit": 100 }
Send a sticker
{ "action": "sticker", "to": "channel:123", "stickerIds": ["9876543210"], "content": "Nice work!" }
- Up to 3 sticker IDs per message.
can beto
for DMs.user:<id>
Upload a custom emoji
{ "action": "emojiUpload", "guildId": "999", "name": "party_blob", "mediaUrl": "file:///tmp/party.png", "roleIds": ["222"] }
- Emoji images must be PNG/JPG/GIF and <= 256KB.
is optional; omit to make the emoji available to everyone.roleIds
Upload a sticker
{ "action": "stickerUpload", "guildId": "999", "name": "clawdbot_wave", "description": "Clawdbot waving hello", "tags": "👋", "mediaUrl": "file:///tmp/wave.png" }
- Stickers require
,name
, anddescription
.tags - Uploads must be PNG/APNG/Lottie JSON and <= 512KB.
Create a poll
{ "action": "poll", "to": "channel:123", "question": "Lunch?", "answers": ["Pizza", "Sushi", "Salad"], "allowMultiselect": false, "durationHours": 24, "content": "Vote now" }
defaults to 24; max 32 days (768 hours).durationHours
Check bot permissions for a channel
{ "action": "permissions", "channelId": "123" }
Ideas to try
- React with ✅/⚠️ to mark status updates.
- Post a quick poll for release decisions or meeting times.
- Send celebratory stickers after successful deploys.
- Upload new emojis/stickers for release moments.
- Run weekly “priority check” polls in team channels.
- DM stickers as acknowledgements when a user’s request is completed.
Action gating
Use
discord.actions.* to disable action groups:
(react + reactions list + emojiList)reactions
,stickers
,polls
,permissions
,messages
,threads
,pinssearch
,emojiUploadsstickerUploads
,memberInfo
,roleInfo
,channelInfo
,voiceStatusevents
(role add/remove, defaultroles
)false
(timeout/kick/ban, defaultmoderation
)false
Read recent messages
{ "action": "readMessages", "channelId": "123", "limit": 20 }
Send/edit/delete a message
{ "action": "sendMessage", "to": "channel:123", "content": "Hello from Clawdbot" }
With media attachment:
{ "action": "sendMessage", "to": "channel:123", "content": "Check out this audio!", "mediaUrl": "file:///tmp/audio.mp3" }
uses formatto
orchannel:<id>
for DMs (notuser:<id>
!)channelId
supports local files (mediaUrl
) and remote URLs (file:///path/to/file
)https://...- Optional
with a message ID to reply to a specific messagereplyTo
{ "action": "editMessage", "channelId": "123", "messageId": "456", "content": "Fixed typo" }
{ "action": "deleteMessage", "channelId": "123", "messageId": "456" }
Threads
{ "action": "threadCreate", "channelId": "123", "name": "Bug triage", "messageId": "456" }
{ "action": "threadList", "guildId": "999" }
{ "action": "threadReply", "channelId": "777", "content": "Replying in thread" }
Pins
{ "action": "pinMessage", "channelId": "123", "messageId": "456" }
{ "action": "listPins", "channelId": "123" }
Search messages
{ "action": "searchMessages", "guildId": "999", "content": "release notes", "channelIds": ["123", "456"], "limit": 10 }
Member + role info
{ "action": "memberInfo", "guildId": "999", "userId": "111" }
{ "action": "roleInfo", "guildId": "999" }
List available custom emojis
{ "action": "emojiList", "guildId": "999" }
Role changes (disabled by default)
{ "action": "roleAdd", "guildId": "999", "userId": "111", "roleId": "222" }
Channel info
{ "action": "channelInfo", "channelId": "123" }
{ "action": "channelList", "guildId": "999" }
Voice status
{ "action": "voiceStatus", "guildId": "999", "userId": "111" }
Scheduled events
{ "action": "eventList", "guildId": "999" }
Moderation (disabled by default)
{ "action": "timeout", "guildId": "999", "userId": "111", "durationMinutes": 10 }
Discord Writing Style Guide
Keep it conversational! Discord is a chat platform, not documentation.
Do
- Short, punchy messages (1-3 sentences ideal)
- Multiple quick replies > one wall of text
- Use emoji for tone/emphasis 🦞
- Lowercase casual style is fine
- Break up info into digestible chunks
- Match the energy of the conversation
Don't
- No markdown tables (Discord renders them as ugly raw
)| text | - No
for casual chat (use bold or CAPS for emphasis)## Headers - Avoid multi-paragraph essays
- Don't over-explain simple things
- Skip the "I'd be happy to help!" fluff
Formatting that works
- bold for emphasis
for technical termscode- Lists for multiple items
-
quotes for referencing
- Wrap multiple links in
to suppress embeds<>
Example transformations
❌ Bad:
I'd be happy to help with that! Here's a comprehensive overview of the versioning strategies available: ## Semantic Versioning Semver uses MAJOR.MINOR.PATCH format where... ## Calendar Versioning CalVer uses date-based versions like...
✅ Good:
versioning options: semver (1.2.3), calver (2026.01.04), or yolo (`latest` forever). what fits your release cadence?