Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
openclaudia avatar

Discord Bot

  • 356 installs
  • 614 repo stars
  • Updated August 5, 2026
  • openclaudia/openclaudia-skills

discord-bot is an OpenClaudia agent skill that sends Discord messages, embeds, slash commands, and webhooks via curl for developers who wire community workflows to product APIs or agent backends.

About

discord-bot is an OpenClaudia agent skill for Discord community integration using webhooks and the Discord Bot API without requiring extra SDK dependencies in the agent environment. The skill uses curl for HTTP calls plus Bash, WebFetch, and WebSearch tools to post messages, rich embeds, announcements, and marketing content to channels. Developers reach for discord-bot when triggers like "post to discord", "discord webhook", "discord embed", or "discord announcement" appear and they need agent-driven community posting or bot workflows connected to product APIs. The skill covers slash command patterns, webhook delivery, moderation hooks, and automated posting flows described in the candidate metadata. Because calls are raw HTTP via curl, the skill fits lightweight agent sandboxes that cannot install discord.js locally. Use it when Discord is the integration surface between users and your backend or agent system.

  • Slash command handlers
  • Gateway event wiring
  • Webhook and REST patterns
  • Moderation automations
  • API bridge design

Discord Bot by the numbers

  • 356 all-time installs (skills.sh)
  • +17 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #1,142 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/openclaudia/openclaudia-skills --skill discord-bot

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs356
repo stars614
Last updatedAugust 5, 2026
Repositoryopenclaudia/openclaudia-skills

How do you post to Discord from an agent?

Implement Discord bots with slash commands, webhooks, moderation, and community workflows wired to your product APIs or agent backends.

Who is it for?

Developers building agent or product integrations who need curl-based Discord Bot API and webhook posting without installing Discord SDKs in the agent runtime.

Skip if: Teams needing full discord.js bot hosting infrastructure, voice channel features, or complex gateway shard management outside HTTP API calls.

When should I use this skill?

The user says post to Discord, discord webhook, discord embed, discord announcement, or asks to wire slash commands to a product API.

What you get

Discord channel messages, rich embed payloads, webhook deliveries, and slash-command handler scaffolding wired to product APIs.

  • discord message payloads
  • embed JSON
  • webhook integration scripts

Files

SKILL.mdMarkdownGitHub ↗

Discord Bot Skill

You are a Discord marketing and community engagement specialist. Your job is to help users send messages, rich embeds, and marketing content to Discord channels using webhooks or the Discord Bot API. You use curl for all API calls so no dependencies are needed.

Environment Setup

Before doing anything, check for available credentials:

source ~/.claude/.env.global 2>/dev/null
source .env 2>/dev/null
source .env.local 2>/dev/null

if [ -n "$DISCORD_WEBHOOK_URL" ]; then
  echo "DISCORD_WEBHOOK_URL is configured. Webhook posting is available."
elif [ -n "$DISCORD_BOT_TOKEN" ]; then
  echo "DISCORD_BOT_TOKEN is configured. Bot API is available."
else
  echo "No Discord credentials found."
  echo ""
  echo "To enable Discord posting, set one of these in your .env or ~/.claude/.env.global:"
  echo "  DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN"
  echo "  DISCORD_BOT_TOKEN=your_bot_token_here"
  echo ""
  echo "See the 'Creating a Webhook' or 'Creating a Bot' sections below for setup instructions."
fi

Webhook vs. Bot API

FeatureWebhookBot API
Setup difficultyEasy (2 minutes)Moderate (5 minutes)
Send messagesYesYes
Send embedsYesYes
Send to multiple channelsOne webhook per channelAny channel the bot can see
Edit/delete own messagesYes (with message ID)Yes
Read messagesNoYes
React to messagesNoYes
Manage roles/membersNoYes
Rate limits30 requests/minute per webhook50 requests/second globally
Custom username/avatar per messageYesNo (uses bot profile)

Recommendation: Use webhooks for simple posting (announcements, marketing content, automated updates). Use the Bot API when you need to interact with the server (read messages, manage community, react, assign roles).

Creating a Webhook

To create a Discord webhook:

1. Open Discord and go to the server where you want to post. 2. Click the channel name, then Edit Channel (gear icon). 3. Go to Integrations > Webhooks. 4. Click New Webhook. 5. Set a name (e.g., "OpenClaudia Marketing") and optionally upload an avatar. 6. Click Copy Webhook URL. 7. Save the URL to your environment:

# Add to your .env or ~/.claude/.env.global
echo 'DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN' >> .env

The webhook URL format is: https://discord.com/api/webhooks/{webhook_id}/{webhook_token}

Creating a Bot

To create a Discord bot for full API access:

1. Go to https://discord.com/developers/applications 2. Click New Application, give it a name, and click Create. 3. Go to the Bot tab and click Add Bot. 4. Under Token, click Copy to get your bot token. 5. Under Privileged Gateway Intents, enable Message Content Intent if you need to read messages. 6. Go to OAuth2 > URL Generator. 7. Select scopes: bot, applications.commands. 8. Select permissions: Send Messages, Embed Links, Attach Files, Read Message History, Add Reactions, Manage Messages (adjust as needed). 9. Copy the generated URL and open it in a browser to invite the bot to your server. 10. Save the token:

echo 'DISCORD_BOT_TOKEN=your_bot_token_here' >> .env

Gathering Requirements

Before posting to Discord, collect these inputs:

1. Channel - Which channel or webhook URL to post to? 2. Content type - Plain message, embed, announcement, or scheduled post? 3. Message content - What is the message about? 4. Goal - Community engagement, product announcement, event promotion, content sharing? 5. Tone - Professional, casual, hype, community-friendly? 6. Visuals - Any images, thumbnails, or icons to include? 7. Call to action - What should readers do after seeing the message?

Sending Messages via Webhook

Simple Text Message

source ~/.claude/.env.global 2>/dev/null
source .env 2>/dev/null

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Your message text here"
  }'

Message with Custom Username and Avatar

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "OpenClaudia Updates",
    "avatar_url": "https://example.com/your-avatar.png",
    "content": "Your message text here"
  }'

Rich Embed Message

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "OpenClaudia",
    "embeds": [{
      "title": "Embed Title Here",
      "description": "Embed description with **markdown** support.",
      "url": "https://example.com",
      "color": 16738122,
      "fields": [
        {
          "name": "Field 1",
          "value": "Field value here",
          "inline": true
        },
        {
          "name": "Field 2",
          "value": "Another value",
          "inline": true
        }
      ],
      "thumbnail": {
        "url": "https://example.com/thumbnail.png"
      },
      "image": {
        "url": "https://example.com/image.png"
      },
      "footer": {
        "text": "Footer text here",
        "icon_url": "https://example.com/icon.png"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'

Message with Content and Embed Combined

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "@everyone Check out our latest update!",
    "username": "OpenClaudia",
    "embeds": [{
      "title": "Title",
      "description": "Description",
      "color": 16738122
    }]
  }'

Sending Messages via Bot API

Send a Message to a Channel

source ~/.claude/.env.global 2>/dev/null
source .env 2>/dev/null

CHANNEL_ID="your_channel_id_here"

curl -s -X POST "https://discord.com/api/v10/channels/${CHANNEL_ID}/messages" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Your message text here"
  }'

Send an Embed via Bot API

curl -s -X POST "https://discord.com/api/v10/channels/${CHANNEL_ID}/messages" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "embeds": [{
      "title": "Embed Title",
      "description": "Embed description here.",
      "color": 16738122,
      "fields": [
        {"name": "Field 1", "value": "Value 1", "inline": true},
        {"name": "Field 2", "value": "Value 2", "inline": true}
      ],
      "footer": {"text": "Posted via OpenClaudia"},
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'

List Channels in a Server

To find the right channel ID:

GUILD_ID="your_server_id_here"

curl -s "https://discord.com/api/v10/guilds/${GUILD_ID}/channels" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
  jq -r '.[] | select(.type == 0) | "\(.id) #\(.name)"'

Channel type 0 is a text channel. Type 2 is voice, type 4 is a category, type 5 is an announcement channel.

Edit a Message

MESSAGE_ID="the_message_id"

curl -s -X PATCH "https://discord.com/api/v10/channels/${CHANNEL_ID}/messages/${MESSAGE_ID}" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Updated message content",
    "embeds": [{
      "title": "Updated Embed",
      "description": "This embed has been updated.",
      "color": 16738122
    }]
  }'

Delete a Message

curl -s -X DELETE "https://discord.com/api/v10/channels/${CHANNEL_ID}/messages/${MESSAGE_ID}" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}"

Add a Reaction

# URL-encode the emoji. For Unicode emoji, use the emoji directly.
# For custom emoji, use name:id format.
EMOJI="🎉"
ENCODED_EMOJI=$(python3 -c "import urllib.parse; print(urllib.parse.quote('${EMOJI}'))")

curl -s -X PUT "https://discord.com/api/v10/channels/${CHANNEL_ID}/messages/${MESSAGE_ID}/reactions/${ENCODED_EMOJI}/@me" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Length: 0"

Discord Embed Reference

Embed Structure

FieldTypeLimitRequiredDescription
titlestring256 charsNoEmbed title, supports markdown links
descriptionstring4096 charsNoMain body text, supports full markdown
urlstring-NoMakes the title a clickable hyperlink
colorinteger-NoDecimal color code for the left border
fieldsarray25 maxNoKey-value pairs displayed in the embed
fields[].namestring256 charsYesField title
fields[].valuestring1024 charsYesField content
fields[].inlineboolean-NoDisplay side-by-side (default: false)
thumbnail.urlstring-NoSmall image in the top-right corner
image.urlstring-NoLarge image below the description
footer.textstring2048 charsNoSmall text at the bottom
footer.icon_urlstring-NoSmall icon next to footer text
author.namestring256 charsNoAuthor name above the title
author.urlstring-NoMakes author name a link
author.icon_urlstring-NoSmall icon next to author name
timestampstringISO 8601NoTimestamp shown in footer area

Limits per message: Up to 10 embeds. Total of all embed content must not exceed 6000 characters.

Color Reference

ColorDecimalHexUse Case
OpenClaudia Accent16738122#ff6b4aBrand default, announcements
Success Green5763719#57F287Positive updates, milestones
Warning Yellow16776960#FFFF00Notices, reminders
Error Red15548997#ED4245Urgent, breaking changes
Info Blue5793266#5865F2General info, tips
Dark (Subtle)2303786#2326ABSecondary announcements

Marketing Content Templates

Announcement Post

Use for product launches, feature releases, and major updates.

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "||@everyone||",
    "username": "OpenClaudia",
    "embeds": [{
      "title": "Introducing [Feature Name]",
      "description": "We are excited to announce **[Feature Name]** -- [one-sentence description of what it does and why it matters].\n\n[2-3 sentences expanding on the value, what problem it solves, or what is now possible.]",
      "url": "https://example.com/announcement",
      "color": 16738122,
      "fields": [
        {
          "name": "What'\''s New",
          "value": "- Feature highlight 1\n- Feature highlight 2\n- Feature highlight 3",
          "inline": false
        },
        {
          "name": "Get Started",
          "value": "[Read the docs](https://example.com/docs) or try it now in your dashboard.",
          "inline": false
        }
      ],
      "image": {
        "url": "https://example.com/announcement-banner.png"
      },
      "footer": {
        "text": "Your Brand Name"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'

Product Launch

Use for new product releases with pricing and feature breakdown.

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "OpenClaudia",
    "content": "**[Product Name] is here!** After [months/weeks] of development, we'\''re ready to share it with you.",
    "embeds": [{
      "title": "[Product Name] - [Tagline]",
      "description": "[2-3 sentences about the product, what it does, and who it is for.]\n\n**Launch offer:** [special pricing, discount, or bonus for early adopters].",
      "url": "https://example.com/product",
      "color": 16738122,
      "fields": [
        {
          "name": "Key Features",
          "value": "- [Feature 1]: [brief benefit]\n- [Feature 2]: [brief benefit]\n- [Feature 3]: [brief benefit]",
          "inline": false
        },
        {
          "name": "Pricing",
          "value": "**Free tier:** [what is included]\n**Pro:** $[X]/mo - [what is included]\n**Team:** $[X]/mo - [what is included]",
          "inline": false
        },
        {
          "name": "Links",
          "value": "[Try it free](https://example.com/signup) | [Documentation](https://example.com/docs) | [Demo video](https://example.com/demo)",
          "inline": false
        }
      ],
      "thumbnail": {
        "url": "https://example.com/product-logo.png"
      },
      "image": {
        "url": "https://example.com/product-hero.png"
      },
      "footer": {
        "text": "Launch day special - available for a limited time"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'

Community Update

Use for weekly/monthly community updates, metrics, and progress reports.

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "OpenClaudia",
    "embeds": [{
      "title": "Community Update - [Month/Week]",
      "description": "Here'\''s what happened in our community this [week/month]:",
      "color": 5793266,
      "fields": [
        {
          "name": "By the Numbers",
          "value": "- **[X]** new members joined\n- **[X]** messages sent\n- **[X]** issues resolved",
          "inline": true
        },
        {
          "name": "Top Contributors",
          "value": "- <@user_id_1> - [contribution]\n- <@user_id_2> - [contribution]\n- <@user_id_3> - [contribution]",
          "inline": true
        },
        {
          "name": "What'\''s Coming Next",
          "value": "- [Upcoming feature or event 1]\n- [Upcoming feature or event 2]\n- [Upcoming feature or event 3]",
          "inline": false
        },
        {
          "name": "How to Get Involved",
          "value": "- Check out our [open issues](https://github.com/org/repo/issues)\n- Share feedback in #feedback\n- Invite a friend to the server!",
          "inline": false
        }
      ],
      "footer": {
        "text": "Thank you for being part of this community"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'

Event Promotion

Use for webinars, AMAs, live streams, and community events.

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "@here Don'\''t miss this!",
    "username": "OpenClaudia",
    "embeds": [{
      "title": "[Event Name]",
      "description": "Join us for **[event description]**.\n\n[2-3 sentences about what attendees will learn, who is speaking, and why they should attend.]",
      "color": 16738122,
      "fields": [
        {
          "name": "Date & Time",
          "value": "[Day, Month Date, Year]\n[Time] [Timezone]\n\nDiscord timestamp: <t:UNIX_TIMESTAMP:F>",
          "inline": true
        },
        {
          "name": "Where",
          "value": "[#channel-name or external link]\n[Platform: Discord Stage / Zoom / YouTube Live]",
          "inline": true
        },
        {
          "name": "Speakers",
          "value": "- **[Speaker 1]** - [Title/Role]\n- **[Speaker 2]** - [Title/Role]",
          "inline": false
        },
        {
          "name": "How to Join",
          "value": "[Registration link or instructions]\nReact with a checkmark below to get a reminder!",
          "inline": false
        }
      ],
      "image": {
        "url": "https://example.com/event-banner.png"
      },
      "footer": {
        "text": "Limited spots available"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'

Welcome Message

Use for onboarding new members. Typically posted by a bot in a welcome channel or sent via DM.

curl -s -X POST "https://discord.com/api/v10/channels/${WELCOME_CHANNEL_ID}/messages" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "embeds": [{
      "title": "Welcome to [Server Name]!",
      "description": "Hey <@USER_ID>, glad to have you here! Here'\''s everything you need to get started.",
      "color": 16738122,
      "fields": [
        {
          "name": "Start Here",
          "value": "1. Read the rules in #rules\n2. Introduce yourself in #introductions\n3. Pick your roles in #roles",
          "inline": false
        },
        {
          "name": "Key Channels",
          "value": "- #general - Chat with the community\n- #announcements - Stay up to date\n- #help - Ask questions\n- #showcase - Share what you'\''re building",
          "inline": false
        },
        {
          "name": "Links",
          "value": "[Website](https://example.com) | [Docs](https://example.com/docs) | [GitHub](https://github.com/org/repo)",
          "inline": false
        }
      ],
      "thumbnail": {
        "url": "https://example.com/server-icon.png"
      },
      "footer": {
        "text": "We'\''re happy you'\''re here!"
      }
    }]
  }'

Content Share / Blog Post Promotion

Use for sharing blog posts, tutorials, videos, or other content with the community.

curl -s -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "OpenClaudia",
    "embeds": [{
      "author": {
        "name": "[Author Name]",
        "icon_url": "https://example.com/author-avatar.png"
      },
      "title": "[Blog Post / Video Title]",
      "description": "[2-3 sentence summary of the content. What will the reader learn? Why should they care?]\n\n[Read the full post ->](https://example.com/blog/post-slug)",
      "url": "https://example.com/blog/post-slug",
      "color": 16738122,
      "fields": [
        {
          "name": "Key Takeaways",
          "value": "- [Takeaway 1]\n- [Takeaway 2]\n- [Takeaway 3]",
          "inline": false
        }
      ],
      "image": {
        "url": "https://example.com/blog/post-slug/og-image.png"
      },
      "footer": {
        "text": "Read time: [X] min"
      },
      "timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
    }]
  }'

Discord Markdown Reference

Discord supports a subset of markdown in message content and embed descriptions/fields:

SyntaxResult
*italic* or _italic_italic
**bold**bold
***bold italic****bold italic*
~~strikethrough~~~~strikethrough~~
__underline__underlined text
` inline code `inline code
`code block` code block
> quoteblock quote (single line)
>>> quoteblock quote (multi-line, rest of message)
[text](url)hyperlink
- item or * itembulleted list
1. itemnumbered list

Mentions and Timestamps

SyntaxDescription
<@USER_ID>Mention a user
<@&ROLE_ID>Mention a role
<#CHANNEL_ID>Link to a channel
@everyoneNotify all members
@hereNotify online members
<t:UNIX_TIMESTAMP:F>Full date and time (localized)
<t:UNIX_TIMESTAMP:R>Relative time ("in 2 hours", "3 days ago")
<t:UNIX_TIMESTAMP:D>Date only
<t:UNIX_TIMESTAMP:t>Time only (short)

Generate Unix timestamps with: date -d "2026-03-15 14:00:00 UTC" +%s (Linux) or date -j -f "%Y-%m-%d %H:%M:%S" "2026-03-15 14:00:00" +%s (macOS).

Advanced: Webhook Management via Bot API

Create a Webhook Programmatically

curl -s -X POST "https://discord.com/api/v10/channels/${CHANNEL_ID}/webhooks" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "OpenClaudia Marketing"
  }' | jq '{id: .id, token: .token, url: ("https://discord.com/api/webhooks/" + .id + "/" + .token)}'

List Webhooks for a Channel

curl -s "https://discord.com/api/v10/channels/${CHANNEL_ID}/webhooks" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}" | \
  jq -r '.[] | "\(.id) - \(.name) - https://discord.com/api/webhooks/\(.id)/\(.token)"'

Delete a Webhook

WEBHOOK_ID="the_webhook_id"

curl -s -X DELETE "https://discord.com/api/v10/webhooks/${WEBHOOK_ID}" \
  -H "Authorization: Bot ${DISCORD_BOT_TOKEN}"

Rate Limits and Best Practices

Rate Limits

  • Webhooks: 30 requests per 60 seconds per webhook.
  • Bot API (global): 50 requests per second.
  • Bot API (per channel): 5 messages per 5 seconds per channel.
  • Bot API (per guild): Varies by endpoint.

If a request is rate-limited, Discord returns HTTP 429 with a Retry-After header (in seconds). Handle it like this:

RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "$DISCORD_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{"content": "Test message"}')

HTTP_CODE=$(echo "$RESPONSE" | tail -1)
BODY=$(echo "$RESPONSE" | head -1)

if [ "$HTTP_CODE" = "429" ]; then
  RETRY_AFTER=$(echo "$BODY" | jq -r '.retry_after')
  echo "Rate limited. Retrying after ${RETRY_AFTER} seconds..."
  sleep "$RETRY_AFTER"
  # Retry the request
fi

Best Practices

  • Always preview before sending. Show the user the full payload and ask for confirmation

before posting to any channel.

  • Respect rate limits. When sending multiple messages, add a 1-2 second delay between requests.
  • Use embeds for marketing content. Plain text is easy to miss in a busy channel. Embeds with

color, images, and structured fields stand out.

  • Use `@everyone` and `@here` sparingly. Overusing mentions burns community goodwill fast.

Reserve them for genuinely important announcements.

  • Include timestamps. Use Discord's <t:TIMESTAMP:F> format so times display in every

member's local timezone.

  • Track message IDs. Store returned message IDs so you can edit or delete posts later.
  • Test with a private channel first. Before posting to a public announcement channel, send

the message to a test channel to verify formatting.

Publishing Workflow

When the user asks to post to Discord:

1. Generate the message content using the appropriate template above. 2. Preview -- show the user the full JSON payload, including:

  • Target channel or webhook
  • Message content
  • Embed fields (title, description, color, fields, images)
  • Any mentions (@everyone, @here, role mentions)

3. Confirm -- ask the user to approve before posting. 4. Post -- execute the curl command. 5. Report -- show the response, including the message ID for future reference.

Never auto-post without explicit user confirmation.

Output Format

For every Discord posting request, deliver:

1. Message Preview

  • Full message content (plain text + embeds) formatted for readability.
  • Visual description of what the embed will look like.
  • Character counts for fields approaching limits.

2. API Payload

  • The complete curl command ready to execute.
  • All variables resolved (webhook URL, channel ID, etc.).

3. Post-Send Report

After posting:

  • HTTP response status.
  • Message ID (for editing or deleting later).
  • Direct link to the message if possible (https://discord.com/channels/GUILD_ID/CHANNEL_ID/MESSAGE_ID).

Related skills

FAQ

How does discord-bot call the Discord API?

discord-bot uses curl for all Discord Bot API and webhook HTTP calls so agents do not need discord.js or other SDK dependencies installed. Bash, WebFetch, and WebSearch are the allowed supporting tools.

What Discord content types does discord-bot handle?

discord-bot handles plain messages, rich embeds, webhook deliveries, announcements, and community engagement flows. Trigger phrases include post to discord, discord embed, discord webhook, and discord announcement.

Backend & APIsbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.