Sends, reads, and lists Discord messages and channels via the Discord REST API using a bot token. Uses curl and jq for API calls.
How this skill is triggered — by the user, by Claude, or both
Slash command
/acedatacloud-ai-media:discordbotWhen to use
Trigger when the user wants to send, read, or list things on Discord through their bot: list the servers/channels the bot can see, read recent messages in a channel, or post / reply in a channel. Messages are sent as the BOT, not the user's personal account, and only in servers the bot has been invited to with the right permissions.
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
We drive the [Discord API](https://discord.com/developers/docs/reference)
We drive the Discord API
with curl + jq using the user's bot token in $DISCORDBOT_TOKEN. The
auth header is Authorization: Bot $DISCORDBOT_TOKEN — note the literal
Bot prefix (NOT Bearer). Base URL is https://discord.com/api/v10.
This acts as the user's registered bot, so it can only see and act in
servers (guilds) the bot has been invited to and only where it has the
relevant permission (View Channels / Send Messages / Read Message History).
A 403 Forbidden (code 50001 "Missing Access" / 50013 "Missing
Permissions") almost always means the bot isn't in that server or lacks the
permission — tell the user to invite the bot or grant the permission rather
than retrying.
Errors are JSON {"code": <n>, "message": "<reason>"}. A 401 means the
bot token is wrong/reset — ask the user to re-paste it at
auth.acedata.cloud/user/connections. A 429 carries retry_after
(seconds) — sleep that long, then retry; never parallelize.
Before sending a message, confirm the exact channel and content with the user. Sending is irreversible and public to that channel.
curl -sS -H "Authorization: Bot $DISCORDBOT_TOKEN" \
"https://discord.com/api/v10/users/@me" \
| jq '{id, username, bot}'
curl -sS -H "Authorization: Bot $DISCORDBOT_TOKEN" \
"https://discord.com/api/v10/users/@me/guilds" \
| jq 'map({id, name})'
Channel type 0 = text, 5 = announcement; 2 = voice, 4 = category (skip
those for messaging). You need a guild id from the call above.
GUILD_ID="123456789012345678"
curl -sS -H "Authorization: Bot $DISCORDBOT_TOKEN" \
"https://discord.com/api/v10/guilds/$GUILD_ID/channels" \
| jq 'map(select(.type==0 or .type==5) | {id, name, type})'
Reading message content requires the Message Content Intent to be
enabled on the bot (Developer Portal → Bot → Privileged Gateway Intents).
Without it, content comes back empty for messages that don't mention the
bot. Needs the Read Message History permission in that channel.
CHANNEL_ID="123456789012345678"
curl -sS -H "Authorization: Bot $DISCORDBOT_TOKEN" \
"https://discord.com/api/v10/channels/$CHANNEL_ID/messages?limit=20" \
| jq 'map({author: .author.username, ts: .timestamp, content})'
CHANNEL_ID="123456789012345678"
curl -sS -X POST \
-H "Authorization: Bot $DISCORDBOT_TOKEN" \
-H "Content-Type: application/json" \
"https://discord.com/api/v10/channels/$CHANNEL_ID/messages" \
-d "$(jq -nc --arg c "Hello from the bot." '{content: $c}')"
CHANNEL_ID="123456789012345678"; MESSAGE_ID="987654321098765432"
curl -sS -X POST \
-H "Authorization: Bot $DISCORDBOT_TOKEN" \
-H "Content-Type: application/json" \
"https://discord.com/api/v10/channels/$CHANNEL_ID/messages" \
-d "$(jq -nc --arg c "On it!" --arg m "$MESSAGE_ID" \
'{content: $c, message_reference: {message_id: $m}}')"
bot + the permissions you need → open the
URL → pick a server (the user needs Manage Server there).<@USER_ID> pings a user, <#CHANNEL_ID> links a channel. Plain
text is fine for normal messages.npx claudepluginhub acedatacloud/skills --plugin acedatacloud-ai-mediaInteracts with Discord servers using bot tokens: send messages, read channels, manage reactions, and switch servers. Useful for server-side or CI/CD Discord integrations.
Writes Discord bot token to config and guides you through channel setup, access policy, and allowlist lockdown.
Sends and reads messages in the TraderDaddy-Pro Discord (#admin-discussion by default) via a bot. Supports posting, reading recent messages, and discovering channels.