Agent skill
discord
Discord API for servers and messages. Use when user mentions "Discord", "discord.com", "discord.gg", shares a Discord link, "Discord server", or asks about Discord bots.
Install this agent skill to your Project
npx add-skill https://github.com/vm0-ai/vm0-skills/tree/main/discord
SKILL.md
Discord Bot API
Use the Discord Bot API via direct curl calls to manage channels, guilds, messages, and users.
Official docs:
https://discord.com/developers/docs
When to Use
Use this skill when you need to:
- Send messages to specific channels
- Read messages from channels
- Manage channels (create, edit, delete)
- Get server info (guilds, members, roles)
- React to messages and moderate content
- Create webhooks programmatically
For simple message posting, use discord-webhook skill instead.
Prerequisites
1. Create Application
- Go to Discord Developer Portal
- Click "New Application" and give it a name
- Go to "Bot" section and click "Add Bot"
2. Get Bot Token
- In Bot section, click "Reset Token"
- Copy the token (shown only once)
export DISCORD_BOT_TOKEN="MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.ABcDeF.xxxxx..."
3. Enable Intents (if needed)
In Bot section, enable:
- Presence Intent (for user status)
- Server Members Intent (for member list)
- Message Content Intent (for reading messages)
4. Invite Bot to Server
- Go to OAuth2 → URL Generator
- Select scopes:
bot,applications.commands - Select permissions needed (e.g., Send Messages, Read Messages)
- Copy URL and open in browser to invite
5. Get IDs
Enable Developer Mode: User Settings → Advanced → Developer Mode Right-click any channel/user/server → Copy ID
How to Use
Base URL: https://discord.com/api/v10
Authorization header: Authorization: Bot YOUR_TOKEN
1. Get Current Bot User
curl -s "https://discord.com/api/v10/users/@me" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" | jq '{id, username, discriminator}'
2. Send Message to Channel
Write to /tmp/discord_request.json:
{
"content": "Hello from bot!"
}
Then run (replace <your-channel-id> with the actual channel ID):
curl -s -X POST "https://discord.com/api/v10/channels/<your-channel-id>/messages" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" -H "Content-Type: application/json" -d @/tmp/discord_request.json
3. Send Embed Message
Write to /tmp/discord_request.json:
{
"embeds": [
{
"title": "Bot Message",
"description": "This is from the bot API",
"color": 5793266
}
]
}
Then run (replace <your-channel-id> with the actual channel ID):
curl -s -X POST "https://discord.com/api/v10/channels/<your-channel-id>/messages" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" -H "Content-Type: application/json" -d @/tmp/discord_request.json
4. Get Channel Info
Replace <your-channel-id> with the actual channel ID:
curl -s "https://discord.com/api/v10/channels/<your-channel-id>" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" | jq '{id, name, type, guild_id}'
5. Get Channel Messages
Replace <your-channel-id> with the actual channel ID:
curl -s "https://discord.com/api/v10/channels/<your-channel-id>/messages?limit=10" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" | jq '.[] | {id, author: .author.username, content}'
6. Get Specific Message
Replace <your-channel-id> and <your-message-id> with the actual IDs:
curl -s "https://discord.com/api/v10/channels/<your-channel-id>/messages/<your-message-id>" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" | jq '{id, content, author: .author.username}'
7. Delete Message
Replace <your-channel-id> and <your-message-id> with the actual IDs:
curl -s -X DELETE "https://discord.com/api/v10/channels/<your-channel-id>/messages/<your-message-id>" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)"
8. Add Reaction
Replace <your-channel-id> and <your-message-id> with the actual IDs:
curl -s -X PUT "https://discord.com/api/v10/channels/<your-channel-id>/messages/<your-message-id>/reactions/%F0%9F%91%8D/@me" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" -H "Content-Length: 0"
Note: Emoji must be URL encoded (👍 = %F0%9F%91%8D)
9. Get Guild (Server) Info
Replace <your-guild-id> with the actual guild ID:
curl -s "https://discord.com/api/v10/guilds/<your-guild-id>" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" | jq '{id, name, member_count, owner_id}'
10. List Guild Channels
Replace <your-guild-id> with the actual guild ID:
curl -s "https://discord.com/api/v10/guilds/<your-guild-id>/channels" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" | jq '.[] | {id, name, type}'
11. Get Guild Members
Replace <your-guild-id> with the actual guild ID:
curl -s "https://discord.com/api/v10/guilds/<your-guild-id>/members?limit=10" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" | jq '.[] | {user: .user.username, nick, joined_at}'
12. Get Guild Roles
Replace <your-guild-id> with the actual guild ID:
curl -s "https://discord.com/api/v10/guilds/<your-guild-id>/roles" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" | jq '.[] | {id, name, color, position}'
13. Create Webhook
Write to /tmp/discord_request.json:
{
"name": "My Webhook"
}
Then run (replace <your-channel-id> with the actual channel ID):
curl -s -X POST "https://discord.com/api/v10/channels/<your-channel-id>/webhooks" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" -H "Content-Type: application/json" -d @/tmp/discord_request.json | jq '{id, token, url: "https://discord.com/api/webhooks/\(.id)/\(.token)"}'
14. List Channel Webhooks
Replace <your-channel-id> with the actual channel ID:
curl -s "https://discord.com/api/v10/channels/<your-channel-id>/webhooks" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" | jq '.[] | {id, name, token}'
15. Create Text Channel
Write to /tmp/discord_request.json:
{
"name": "new-channel",
"type": 0
}
Then run (replace <your-guild-id> with the actual guild ID):
curl -s -X POST "https://discord.com/api/v10/guilds/<your-guild-id>/channels" -H "Authorization: Bot $(printenv DISCORD_BOT_TOKEN)" -H "Content-Type: application/json" -d @/tmp/discord_request.json | jq '{id, name}'
Channel Types
| Type | Description |
|---|---|
| 0 | Text channel |
| 2 | Voice channel |
| 4 | Category |
| 5 | Announcement |
| 13 | Stage |
| 15 | Forum |
Guidelines
- Rate limits: Check
X-RateLimit-*headers; implement backoff - Token security: Never expose bot tokens
- Permissions: Bot needs appropriate permissions for each action
- Intents: Enable required intents in Developer Portal
- API version: Use
/v10for latest stable API
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
brave-search
Brave Search API for web search. Use when user says "search web", "Brave search", or asks to "find on web" without specifying Google.
supadata
Supadata API for YouTube/web data. Use when user mentions "Supadata", "YouTube data", "channel stats", or web scraping data.
roadmap-planning
Build and prioritize product roadmaps using scoring models like RICE, ICE, and value-effort matrices. Activate when creating a product roadmap, prioritizing features, sequencing initiatives, mapping dependencies, balancing team capacity, choosing between Now/Next/Later or quarterly planning, or communicating roadmap tradeoffs to executives and stakeholders.
qdrant
Qdrant API for vector search. Use when user mentions "Qdrant", "vector database", "semantic search", or embeddings storage.
calendly
Calendly scheduling API. Use when user mentions "Calendly", "calendly.com", "schedule a meeting", "booking link", "event types", or asks about interview scheduling.
stripe
Stripe API for payments. Use when user mentions "Stripe", "payment", "subscription", "billing", "invoice", or asks about payment processing.
Didn't find tool you were looking for?