discord-bot

Send messages, embeds, and marketing content to Discord channels via webhooks or bot API. Manage community engagement, announcements, and automated posting. Trigger phrases: "post to discord", "discord message", "discord webhook", "discord embed", "discord announcement", "send to discord", "discord

By openclaudia · 424 installs

npx skills add openclaudia/openclaudia-skills --skill discord-bot

Source repository · Upstream listing

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: Webhook vs. Bot API Feature Webhook Bot API Setup difficulty Easy (2 minutes) Moderate (5 minutes) Send messages Yes Yes Send embeds Yes Yes Send to multiple channels One webhook per channel Any channel the bot can see Edit/delete own messages Yes (with message ID) Yes Read messages No Yes React to messages No Yes Manage roles/members No Yes Rate limits 30 requests/minute per webhook 50 requests/second globally Custom username/avatar per message Yes No (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: 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: 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 Message with Custom Username and Avatar Rich Embed Message Message with Content and Embed Combined Sending Messages via Bot API Send a Message to a Channel Send an Embed via Bot API List Channels in a Server To find the right channel ID: 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 Delete a Message Add a Reaction Discord Embed Reference Embed Structure Field Type Limit Required Description title string 256 chars No Embed title, supports markdown links description string 4096 chars No Main body text, supports full markdown url string No Makes the title a clickable hyperlink color integer No Decimal color code for the left border fields array 25 max No Key value pairs displayed in the embed fields[].name string 256 chars Yes Field title fields[].value string 1024 chars Yes Field content fields[].inline boolean No Display side by side (default: false) thumbnail.url string No Small image in the top right corner image.url string No Large image below the description footer.text string 2048 chars No Small text at the bottom footer.icon url string No Small icon next to footer text author.name string 256 chars No Author name above the title author.url string No Makes author name a link author.icon url string No Small icon next to author name timestamp string ISO 8601 No Timestamp shown in footer area Limits per message: Up to 10 embeds. Total of all embed content must not exceed 6000 characters. Color Reference Color Decimal Hex Use Case OpenClaudia Accent 16738122 ff6b4a Brand default, announcements Success Green 5763719 57F287 Positive updates, milestones Warning Yellow 16776960 FFFF00 Notices, reminders Error Red 15548997 ED4245 Urgent, breaking changes Info Blue 5793266 5865F2 General info, tips Dark (Subtle) 2303786 2326AB Secondary announcements Marketing Content Templates Announcement Post Use for product launches, feature releases, and major updates. Product Launch Use for new product releases with pricing and feature breakdown. Community Update Use for weekly/monthly community updates, metrics, and progress reports. Event Promotion Use for webinars, AMAs, live streams, and community events. Welcome Message Use for onboarding new members. Typically posted by a bot in a welcome channel or sent via DM. Content Share / Blog Post Promotion Use for sharing blog posts, tutorials, videos, or other content with the community. Discord Markdown Reference Discord supports a subset of markdown in message content and embed descriptions/fields: Syntax Result italic or italic italic bold bold bold italic bold italic ~~strikethrough~~ ~~strikethrough~~ underline underlined text inline code inline code code block quote block quote (single line) quote block quote (multi line, rest of message) [text](url) hyperlink item or item bulleted list 1. item numbered list Mentions and Timestamps Syntax Description <@USER ID Mention a user <@&ROLE ID Mention a role < CHANNEL ID Link to a channel @everyone Notify all members @here Notify 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 List Webhooks for a Channel Delete a Webhook 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: 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 ).