Skip to content
Back to skills

Discord

ASecurity

Build and automate Discord integrations (bots, webhooks, slash commands, and REST API workflows). Use when the user mentions Discord, a Discord server/guild, channels, webhooks, bot tokens, slash commands/application commands, discord.js, or discord.py.

  • 151 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added June 5, 2026
developmentpythongobashapi

Works with

  • api

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned June 5, 2026

npx -y skills add OpenHands/extensions --skill discord --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Discord?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Discord
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/openhands-discord/badge)](https://www.skillsdirectory.com/skills/openhands-discord)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: discord
description: Build and automate Discord integrations (bots, webhooks, slash commands, and REST API workflows). Use when the user mentions Discord, a Discord server/guild, channels, webhooks, bot tokens, slash commands/application commands, discord.js, or discord.py.
triggers:
  - discord
  - discord api
  - discord bot
  - discord webhook
  - discord.js
  - discord.py
---

# Discord

Use this skill when implementing or automating Discord integrations.

## Pick the right approach

1. **Incoming webhooks (best for one-way posting)**
   - Good for CI notifications, alerts, build status, etc.
   - No bot user needed.
   - See: https://discord.com/developers/docs/resources/webhook#execute-webhook

2. **Bot token + REST API (two-way / richer automation)**
   - Use when you need to post as a bot, manage channels, read history, moderate, etc.
   - REST API base: `https://discord.com/api/v10`
   - Most REST calls use `Authorization: Bot <token>`.

3. **Interactions / slash commands (user-invoked commands)**
   - Use application commands and interaction webhooks.
   - Typically requires running a web server to receive interactions and respond quickly.

## Secrets & safety

- **Never hard-code tokens**. Use environment variables:
  - `DISCORD_WEBHOOK_URL` for incoming webhooks
  - `DISCORD_BOT_TOKEN` for bot REST API calls
- Treat webhook URLs as secrets (they include a token).
- Do **not** automate normal user accounts (“self-bots”). Use official bot/OAuth flows.

## Footguns / safety notes (read this)

- **Webhook URLs are secrets** (the token is embedded in the URL). Don’t paste them into issues, logs, CI output, or chat.
- **Mentions are dangerous by default**: always set `allowed_mentions` to something strict (these examples use `{"parse": []}`) to avoid accidentally pinging `@everyone` / roles.
- **Watch for accidental secret logging**:
  - If you build your own scripts, avoid including full webhook URLs in exception messages.
  - The bundled scripts sanitize webhook URLs in error output, but you should still avoid printing the URL yourself.
- **Rate limits**: handle HTTP 429 with `retry_after`/`Retry-After`, and don’t retry forever.

## Quick recipes

### Post a message via an incoming webhook (recommended)

Discord requires at least one of `content`, `embeds`, `components`, `file`, or `poll`.

```bash
curl -sS -X POST \
  -H 'Content-Type: application/json' \
  -d '{"content":"Hello from OpenHands","allowed_mentions":{"parse":[]}}' \
  "$DISCORD_WEBHOOK_URL"
```

### Post a message to a channel with a bot token

Endpoint: `POST /channels/{channel_id}/messages` (Create Message)

```bash
CHANNEL_ID="..."

curl -sS -X POST "https://discord.com/api/v10/channels/${CHANNEL_ID}/messages" \
  -H "Authorization: Bot $DISCORD_BOT_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"content":"Hello from my bot","allowed_mentions":{"parse":[]}}'
```

Docs: https://discord.com/developers/docs/resources/channel#create-message

## Automation scripts (bundled)

These scripts are self-contained and only use the Python standard library.

- Post to a webhook:
  ```bash
  python3 -m skills.discord.scripts.post_webhook --content "Build finished" --wait
  ```

- Post to a channel using a bot token:
  ```bash
  python3 -m skills.discord.scripts.send_message --channel-id "$CHANNEL_ID" --content "Hello"
  ```

## Rate limits

- Don’t hard-code limits. Use Discord’s `Retry-After` / `retry_after` and rate-limit headers when present.
- On HTTP **429**, wait for the provided delay (clamp to a sane maximum, add small jitter), then retry.

Docs: https://discord.com/developers/docs/topics/rate-limits

## Slash commands / application commands

- Use **guild commands** for fast iteration (instant updates).
- Use **global commands** when ready; propagation can take longer.

Docs: https://discord.com/developers/docs/interactions/application-commands

## Reference

For more details (OAuth2 flows, command registration endpoints, troubleshooting), see:
- [references/REFERENCE.md](references/REFERENCE.md)

Files in this skill

  • .plugin/plugin.json563 B
  • README.md988 B
  • SKILL.md4 KB
  • references/REFERENCE.md2.8 KB
  • scripts/_http.py3.9 KB
  • scripts/post_webhook.py2.6 KB
  • scripts/send_message.py2.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.