discord-automation
npx machina-cli add skill davepoon/buildwithclaude/discord-automation --openclawDiscord Automation via Rube MCP
Automate Discord operations through Composio's Discord/Discordbot toolkits via Rube MCP.
Toolkit docs: composio.dev/toolkits/discord
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Discord connection via
RUBE_MANAGE_CONNECTIONSwith toolkitsdiscordanddiscordbot - Always call
RUBE_SEARCH_TOOLSfirst to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
RUBE_SEARCH_TOOLSresponds - Call
RUBE_MANAGE_CONNECTIONSwith toolkitdiscordbot(bot operations) ordiscord(user operations) - If connection is not ACTIVE, follow the returned auth link to complete Discord auth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Send Messages
When to use: User wants to send messages to channels or DMs
Tool sequence:
DISCORD_LIST_MY_GUILDS- List guilds the bot belongs to [Prerequisite]DISCORDBOT_LIST_GUILD_CHANNELS- List channels in a guild [Prerequisite]DISCORDBOT_CREATE_MESSAGE- Send a message [Required]DISCORDBOT_UPDATE_MESSAGE- Edit a sent message [Optional]
Key parameters:
channel_id: Channel snowflake IDcontent: Message text (max 2000 characters)embeds: Array of embed objects for rich contentguild_id: Guild ID for channel listing
Pitfalls:
- Bot must have SEND_MESSAGES permission in the channel
- High-frequency sends can hit per-route rate limits; respect Retry-After headers
- Only messages sent by the same bot can be edited
2. Send Direct Messages
When to use: User wants to DM a Discord user
Tool sequence:
DISCORDBOT_CREATE_DM- Create or get DM channel [Required]DISCORDBOT_CREATE_MESSAGE- Send message to DM channel [Required]
Key parameters:
recipient_id: User snowflake ID for DMchannel_id: DM channel ID from CREATE_DM
Pitfalls:
- Cannot DM users who have DMs disabled or have blocked the bot
- CREATE_DM returns existing channel if one already exists
3. Manage Roles
When to use: User wants to create, assign, or remove roles
Tool sequence:
DISCORDBOT_CREATE_GUILD_ROLE- Create a new role [Optional]DISCORDBOT_ADD_GUILD_MEMBER_ROLE- Assign role to member [Optional]DISCORDBOT_DELETE_GUILD_ROLE- Delete a role [Optional]DISCORDBOT_GET_GUILD_MEMBER- Get member details [Optional]DISCORDBOT_UPDATE_GUILD_MEMBER- Update member (roles, nick, etc.) [Optional]
Key parameters:
guild_id: Guild snowflake IDuser_id: User snowflake IDrole_id: Role snowflake IDname: Role namepermissions: Bitwise permission valuecolor: RGB color integer
Pitfalls:
- Role assignment requires MANAGE_ROLES permission
- Target role must be lower in hierarchy than bot's highest role
- DELETE permanently removes the role from all members
4. Manage Webhooks
When to use: User wants to create or use webhooks for external integrations
Tool sequence:
DISCORDBOT_GET_GUILD_WEBHOOKS/DISCORDBOT_LIST_CHANNEL_WEBHOOKS- List webhooks [Optional]DISCORDBOT_CREATE_WEBHOOK- Create a new webhook [Optional]DISCORDBOT_EXECUTE_WEBHOOK- Send message via webhook [Optional]DISCORDBOT_UPDATE_WEBHOOK- Update webhook settings [Optional]
Key parameters:
webhook_id: Webhook IDwebhook_token: Webhook secret tokenchannel_id: Channel for webhook creationname: Webhook namecontent/embeds: Message content for execution
Pitfalls:
- Webhook tokens are secrets; handle securely
- Webhooks can post with custom username and avatar per message
- MANAGE_WEBHOOKS permission required for creation
5. Manage Reactions
When to use: User wants to view or manage message reactions
Tool sequence:
DISCORDBOT_LIST_MESSAGE_REACTIONS_BY_EMOJI- List users who reacted [Optional]DISCORDBOT_DELETE_ALL_MESSAGE_REACTIONS- Remove all reactions [Optional]DISCORDBOT_DELETE_ALL_MESSAGE_REACTIONS_BY_EMOJI- Remove specific emoji reactions [Optional]DISCORDBOT_DELETE_USER_MESSAGE_REACTION- Remove specific user's reaction [Optional]
Key parameters:
channel_id: Channel IDmessage_id: Message snowflake IDemoji_name: URL-encoded emoji orname:idfor custom emojisuser_id: User ID for specific reaction removal
Pitfalls:
- Unicode emojis must be URL-encoded (e.g., '%F0%9F%91%8D' for thumbs up)
- Custom emojis use
name:idformat - DELETE_ALL requires MANAGE_MESSAGES permission
Common Patterns
Snowflake IDs
Discord uses snowflake IDs (64-bit integers as strings) for all entities:
- Guilds, channels, users, roles, messages, webhooks
Permission Bitfields
Permissions are combined using bitwise OR:
- SEND_MESSAGES = 0x800
- MANAGE_ROLES = 0x10000000
- MANAGE_MESSAGES = 0x2000
- ADMINISTRATOR = 0x8
Pagination
- Most list endpoints support
limit,before,afterparameters - Messages: max 100 per request
- Reactions: max 100 per request, use
afterfor pagination
Known Pitfalls
Bot vs User Tokens:
discordbottoolkit uses bot tokens;discorduses user OAuth- Bot operations are preferred for automation
Rate Limits:
- Discord enforces per-route rate limits
- Respect
Retry-Afterheaders on 429 responses
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List guilds | DISCORD_LIST_MY_GUILDS | (none) |
| List channels | DISCORDBOT_LIST_GUILD_CHANNELS | guild_id |
| Send message | DISCORDBOT_CREATE_MESSAGE | channel_id, content |
| Edit message | DISCORDBOT_UPDATE_MESSAGE | channel_id, message_id |
| Get messages | DISCORDBOT_LIST_MESSAGES | channel_id, limit |
| Create DM | DISCORDBOT_CREATE_DM | recipient_id |
| Create role | DISCORDBOT_CREATE_GUILD_ROLE | guild_id, name |
| Assign role | DISCORDBOT_ADD_GUILD_MEMBER_ROLE | guild_id, user_id, role_id |
| Delete role | DISCORDBOT_DELETE_GUILD_ROLE | guild_id, role_id |
| Get member | DISCORDBOT_GET_GUILD_MEMBER | guild_id, user_id |
| Update member | DISCORDBOT_UPDATE_GUILD_MEMBER | guild_id, user_id |
| Get guild | DISCORDBOT_GET_GUILD | guild_id |
| Create webhook | DISCORDBOT_CREATE_WEBHOOK | channel_id, name |
| Execute webhook | DISCORDBOT_EXECUTE_WEBHOOK | webhook_id, webhook_token |
| List webhooks | DISCORDBOT_GET_GUILD_WEBHOOKS | guild_id |
| Get reactions | DISCORDBOT_LIST_MESSAGE_REACTIONS_BY_EMOJI | channel_id, message_id, emoji_name |
| Clear reactions | DISCORDBOT_DELETE_ALL_MESSAGE_REACTIONS | channel_id, message_id |
| Test auth | DISCORDBOT_TEST_AUTH | (none) |
| Get channel | DISCORDBOT_GET_CHANNEL | channel_id |
Powered by Composio
Source
git clone https://github.com/davepoon/buildwithclaude/blob/main/plugins/all-skills/skills/discord-automation/SKILL.mdView on GitHub Overview
Discord Automation via Rube MCP lets you run common Discord operations through Composio toolkits. It supports sending messages, managing channels and roles, and using webhooks and reactions, all orchestrated through Rube MCP. Always call RUBE_SEARCH_TOOLS first to fetch current tool schemas.
How This Skill Works
Install and connect Rube MCP as an MCP server, then verify availability with RUBE_SEARCH_TOOLS. Create a connection with RUBE_MANAGE_CONNECTIONS for either discordbot (bot operations) or discord (user operations); complete auth if needed, and ensure the connection shows ACTIVE before running workflows.
When to Use It
- Post messages to channels or DMs programmatically
- DM a Discord user from an application
- Create, assign, or delete guild roles and manage members
- Create, list, or execute webhooks for external integrations
- Inspect guilds and channels to plan automation flows
Quick Start
- Step 1: Add https://rube.app/mcp as an MCP server and verify RUBE_SEARCH_TOOLS is responsive
- Step 2: Use RUBE_MANAGE_CONNECTIONS to connect to discordbot (bot ops) or discord (user ops) and complete auth if prompted
- Step 3: Run a workflow (e.g., Send Messages) by providing channel_id, guild_id, and content
Best Practices
- Always verify the Rube MCP endpoint and that RUBE_SEARCH_TOOLS responds before starting work
- Ensure the Discord connection is ACTIVE via RUBE_MANAGE_CONNECTIONS before running workflows
- Respect Discord permissions (SEND_MESSAGES, MANAGE_ROLES, etc.) and channel permissions
- Validate IDs (guild_id, channel_id, user_id) and guard against editing other users' messages
- Handle rate limits and errors using Retry-After and exponential backoff
Example Use Cases
- Send a daily summary message to a channel using DISCORDBOT_CREATE_MESSAGE after listing guilds with DISCORD_LIST_MY_GUILDS
- Automatically assign a Member role to new users with DISCORDBOT_CREATE_GUILD_ROLE and DISCORDBOT_ADD_GUILD_MEMBER_ROLE
- Post GitHub or CI notifications to a channel via DISCORDBOT_CREATE_WEBHOOK and DISCORDBOT_EXECUTE_WEBHOOK
- Send a welcome DM to a user with DISCORDBOT_CREATE_DM followed by DISCORDBOT_CREATE_MESSAGE
- Update a previously sent message content or embeds with DISCORDBOT_UPDATE_MESSAGE
Frequently Asked Questions
Related Skills
microsoft-teams-automation
davepoon/buildwithclaude
Automate Microsoft Teams tasks via Rube MCP (Composio): send messages, manage channels, create meetings, handle chats, and search messages. Always search tools first for current schemas.
slack-automation
davepoon/buildwithclaude
Automate Slack messaging, channel management, search, reactions, and threads via Rube MCP (Composio). Send messages, search conversations, manage channels/users, and react to messages programmatically.
telegram-automation
davepoon/buildwithclaude
Automate Telegram tasks via Rube MCP (Composio): send messages, manage chats, share photos/documents, and handle bot commands. Always search tools first for current schemas.
whatsapp-automation
davepoon/buildwithclaude
Automate WhatsApp Business tasks via Rube MCP (Composio): send messages, manage templates, upload media, and handle contacts. Always search tools first for current schemas.