From sundial-org-awesome-openclaw-skills-4
Controls Discord via Clawdbot tool: send/react messages, upload stickers/emojis, create polls, manage threads/pins/search, fetch permissions/member/channel info, moderate DMs/channels.
npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-2 --plugin sundial-org-awesome-openclaw-skills-4This skill uses the workspace's default tool permissions.
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.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
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.
channelId, messageId, and an emoji.to target (channel:<id> or user:<id>). Optional content text.question plus 2–10 answers.mediaUrl with file:///path for local files or https://... for remote.guildId, name, mediaUrl, optional roleIds (limit 256KB, PNG/JPG/GIF).guildId, name, description, tags, mediaUrl (limit 512KB, PNG/APNG/Lottie JSON).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.
{
"action": "react",
"channelId": "123",
"messageId": "456",
"emoji": "✅"
}
{
"action": "reactions",
"channelId": "123",
"messageId": "456",
"limit": 100
}
{
"action": "sticker",
"to": "channel:123",
"stickerIds": ["9876543210"],
"content": "Nice work!"
}
to can be user:<id> for DMs.{
"action": "emojiUpload",
"guildId": "999",
"name": "party_blob",
"mediaUrl": "file:///tmp/party.png",
"roleIds": ["222"]
}
roleIds is optional; omit to make the emoji available to everyone.{
"action": "stickerUpload",
"guildId": "999",
"name": "clawdbot_wave",
"description": "Clawdbot waving hello",
"tags": "👋",
"mediaUrl": "file:///tmp/wave.png"
}
name, description, and tags.{
"action": "poll",
"to": "channel:123",
"question": "Lunch?",
"answers": ["Pizza", "Sushi", "Salad"],
"allowMultiselect": false,
"durationHours": 24,
"content": "Vote now"
}
durationHours defaults to 24; max 32 days (768 hours).{
"action": "permissions",
"channelId": "123"
}
Use discord.actions.* to disable action groups:
reactions (react + reactions list + emojiList)stickers, polls, permissions, messages, threads, pins, searchemojiUploads, stickerUploadsmemberInfo, roleInfo, channelInfo, voiceStatus, eventsroles (role add/remove, default false)moderation (timeout/kick/ban, default false){
"action": "readMessages",
"channelId": "123",
"limit": 20
}
{
"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"
}
to uses format channel:<id> or user:<id> for DMs (not channelId!)mediaUrl supports local files (file:///path/to/file) and remote URLs (https://...)replyTo with a message ID to reply to a specific message{
"action": "editMessage",
"channelId": "123",
"messageId": "456",
"content": "Fixed typo"
}
{
"action": "deleteMessage",
"channelId": "123",
"messageId": "456"
}
{
"action": "threadCreate",
"channelId": "123",
"name": "Bug triage",
"messageId": "456"
}
{
"action": "threadList",
"guildId": "999"
}
{
"action": "threadReply",
"channelId": "777",
"content": "Replying in thread"
}
{
"action": "pinMessage",
"channelId": "123",
"messageId": "456"
}
{
"action": "listPins",
"channelId": "123"
}
{
"action": "searchMessages",
"guildId": "999",
"content": "release notes",
"channelIds": ["123", "456"],
"limit": 10
}
{
"action": "memberInfo",
"guildId": "999",
"userId": "111"
}
{
"action": "roleInfo",
"guildId": "999"
}
{
"action": "emojiList",
"guildId": "999"
}
{
"action": "roleAdd",
"guildId": "999",
"userId": "111",
"roleId": "222"
}
{
"action": "channelInfo",
"channelId": "123"
}
{
"action": "channelList",
"guildId": "999"
}
{
"action": "voiceStatus",
"guildId": "999",
"userId": "111"
}
{
"action": "eventList",
"guildId": "999"
}
{
"action": "timeout",
"guildId": "999",
"userId": "111",
"durationMinutes": 10
}
Keep it conversational! Discord is a chat platform, not documentation.
| text |)## Headers for casual chat (use bold or CAPS for emphasis)code for technical termsquotes for referencing
<> to suppress embeds❌ 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?