重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
npx skills add https://github.com/civitai/civitai --skill discord通过 REST API 向 Discord 频道发布消息和公告。按名称导航频道,发送带嵌入内容的格式化消息,管理反应、线程等。
运行设置脚本通过 Discord 进行身份验证:
node .claude/skills/discord/setup.mjs https://discord-proxy.civitai.com
这将:
.env 文件如果您直接管理机器人并需要绕过代理:
.env.example 复制为 .envDISCORD_BOT_TOKENDISCORD_GUILD 用于自动检测广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
cp .claude/skills/discord/.env.example .claude/skills/discord/.env
node .claude/skills/discord/query.mjs <command> [options]
| 命令 | 描述 |
|---|---|
guilds | 列出机器人所在的所有公会(服务器) |
channels [guild] | 列出公会中的文本频道 |
send <channel> "message" | 发送纯文本消息 |
announce <channel> "message" | 发送格式化的公告嵌入 |
me | 显示机器人信息 |
users | 列出公会中的所有成员 |
| `user <name | id>` |
roles | 列出公会中的所有角色 |
| `role <name | id>` |
messages <channel> | 从频道获取最近的消息 |
edit <msg_link> "content" | 编辑消息(仅限机器人自己的消息) |
delete <msg_link> | 删除消息 |
reply <msg_link> "content" | 回复消息 |
rich-embed <channel> | 发送带结构化字段的嵌入 |
react <msg_link> <emoji> | 为消息添加反应 |
unreact <msg_link> <emoji> | 从消息中移除反应 |
pin <msg_link> | 置顶消息 |
unpin <msg_link> | 取消置顶消息 |
pins <channel> | 列出频道中的置顶消息 |
thread <channel> --thread "name" | 创建线程 |
dm <user> "message" | 向用户发送私信 |
dm-messages <user> | 读取与用户的私信历史 |
| 标志 | 描述 |
|---|---|
--json | 输出原始 JSON 响应 |
--title "text" | 设置嵌入标题 |
--color <hex> | 设置嵌入颜色(默认:#1E88E5 蓝色) |
--footer "text" | 设置嵌入页脚文本 |
--url "link" | 为嵌入标题添加 URL |
--limit, -n <N> | 限制结果数量(用户:默认 100,消息:默认 20) |
| `--field "Name | Value |
--thumbnail "url" | 为嵌入添加缩略图 |
--image "url" | 为嵌入添加大图 |
--thread "name" | 线程名称(用于 thread 命令) |
# 按名称发送到频道
node .claude/skills/discord/query.mjs send dev-general "部署完成!"
# 按 ID 发送到频道
node .claude/skills/discord/query.mjs send 966054537880289330 "构建通过"
# 带自动格式化的基本公告
node .claude/skills/discord/query.mjs announce dev-alerts "新功能已部署!"
# 带自定义标题和颜色的公告
node .claude/skills/discord/query.mjs announce deployments "v5.0.1381 已发布" --title "发布" --color "#00C853"
# 结构化发布公告
node .claude/skills/discord/query.mjs rich-embed dev-general "新版本已上线!" \
--title "发布 v5.0.1382" \
--field "版本|5.0.1382|inline" \
--field "作者|@justin|inline" \
--field "变更|3 个文件已修改" \
--footer "Civitai" \
--color "#00C853"
# 使用消息链接编辑
node .claude/skills/discord/query.mjs edit "https://discord.com/channels/955.../966.../123..." "更新内容"
# 使用频道 + 消息 ID 编辑
node .claude/skills/discord/query.mjs edit dev-general 1234567890 "更新内容"
# 使用消息链接删除
node .claude/skills/discord/query.mjs delete "https://discord.com/channels/955.../966.../123..."
# 使用频道 + 消息 ID 删除
node .claude/skills/discord/query.mjs delete dev-general 1234567890
# 使用消息链接回复
node .claude/skills/discord/query.mjs reply "https://discord.com/channels/955.../966.../123..." "感谢更新!"
# 使用频道 + 消息 ID 回复
node .claude/skills/discord/query.mjs reply dev-general 1234567890 "收到!"
# 添加反应(使用 Unicode 表情符号)
node .claude/skills/discord/query.mjs react "https://discord.com/channels/..." "U+2705"
node .claude/skills/discord/query.mjs react dev-general 1234567890 "U+1F44D"
# 移除反应
node .claude/skills/discord/query.mjs unreact "https://discord.com/channels/..." "U+2705"
# 置顶消息
node .claude/skills/discord/query.mjs pin "https://discord.com/channels/..."
# 取消置顶消息
node .claude/skills/discord/query.mjs unpin "https://discord.com/channels/..."
# 列出置顶消息
node .claude/skills/discord/query.mjs pins dev-general
# 从消息创建线程
node .claude/skills/discord/query.mjs thread "https://discord.com/channels/..." --thread "讨论"
# 在频道中创建线程(无父消息)
node .claude/skills/discord/query.mjs thread dev-general --thread "新主题"
# 按名称向用户发送私信
node .claude/skills/discord/query.mjs dm justin "嘿,你能审查这个 PR 吗?"
# 按 ID 向用户发送私信
node .claude/skills/discord/query.mjs dm 303445765865603073 "关于部署的快速问题"
# 读取与用户的私信历史
node .claude/skills/discord/query.mjs dm-messages justin
# 读取最后 50 条私信
node .claude/skills/discord/query.mjs dm-messages justin --limit 50
# 列出用户
node .claude/skills/discord/query.mjs users --limit 50
# 查找用户以获取提及格式
node .claude/skills/discord/query.mjs user justin
# 输出:提及:<@303445765865603073>
# 列出角色
node .claude/skills/discord/query.mjs roles
# 查找角色以获取提及格式
node .claude/skills/discord/query.mjs role devs
# 输出:提及:<@&955572624992382996>
# 在消息中提及用户
node .claude/skills/discord/query.mjs send dev-general "<@303445765865603073> 检查这个 PR"
# 提及角色
node .claude/skills/discord/query.mjs announce dev-general "<@&955572624992382996> 新版本!" --title "开发者注意"
# 获取最后 20 条消息(默认)
node .claude/skills/discord/query.mjs messages dev-general
# 获取最后 50 条消息
node .claude/skills/discord/query.mjs messages dev-general --limit 50
大多数命令直接接受 Discord 消息链接:
https://discord.com/channels/GUILD_ID/CHANNEL_ID/MESSAGE_ID接受消息链接的命令:edit、delete、reply、react、unreact、pin、unpin、thread
频道名称匹配灵活:
dev-generaldev-gen 匹配 dev-generalteam 匹配 teamDEV-GENERAL 匹配 dev-generaldeployments 或 dev-alerts 发布版本公告dev-general 中与团队分享修复team 或项目特定频道中分享进度user 命令查找用户 ID,然后 @提及他们role 命令查找角色 ID,然后 @提及他们messages 命令检查最近消息announce 发布重要更新(创建富嵌入)send 发送快速消息或自动通知rich-embed 处理带多个字段的结构化数据--json 进行脚本编写或管道传输到其他工具机器人需要以下 Discord 权限:
查看频道 - 列出和查找频道发送消息 - 发布消息嵌入链接 - 用于富公告阅读消息历史 - 读取频道消息添加反应 - 添加反应管理消息 - 置顶/取消置顶和删除消息创建公共线程 - 创建线程每周安装次数
46
仓库
GitHub 星标数
7.0K
首次出现
2026 年 1 月 24 日
安全审计
安装于
gemini-cli42
claude-code41
codex41
opencode41
github-copilot41
cursor39
Post messages and announcements to Discord channels via the REST API. Navigate channels by name, send formatted messages with embeds, manage reactions, threads, and more.
Run the setup script to authenticate via Discord:
node .claude/skills/discord/setup.mjs https://discord-proxy.civitai.com
This will:
.envIf you manage the bot directly and need to bypass the proxy:
.env.example to .env in this skill directoryDISCORD_BOT_TOKENDISCORD_GUILD for auto-detectioncp .claude/skills/discord/.env.example .claude/skills/discord/.env
node .claude/skills/discord/query.mjs <command> [options]
| Command | Description |
|---|---|
guilds | List all guilds (servers) the bot is in |
channels [guild] | List text channels in a guild |
send <channel> "message" | Send a plain text message |
announce <channel> "message" | Send a formatted announcement embed |
me | Show bot information |
users | List all members in the guild |
| Flag | Description |
|---|---|
--json | Output raw JSON response |
--title "text" | Set embed title |
--color <hex> | Set embed color (default: #1E88E5 blue) |
--footer "text" | Set embed footer text |
--url "link" | Add a URL to the embed title |
--limit, -n <N> | Limit results (users: default 100, messages: default 20) |
# Send to channel by name
node .claude/skills/discord/query.mjs send dev-general "Deployment complete!"
# Send to channel by ID
node .claude/skills/discord/query.mjs send 966054537880289330 "Build passed"
# Basic announcement with auto-formatting
node .claude/skills/discord/query.mjs announce dev-alerts "New feature deployed!"
# Announcement with custom title and color
node .claude/skills/discord/query.mjs announce deployments "v5.0.1381 released" --title "Release" --color "#00C853"
# Structured release announcement
node .claude/skills/discord/query.mjs rich-embed dev-general "New release is live!" \
--title "Release v5.0.1382" \
--field "Version|5.0.1382|inline" \
--field "Author|@justin|inline" \
--field "Changes|3 files modified" \
--footer "Civitai" \
--color "#00C853"
# Edit using message link
node .claude/skills/discord/query.mjs edit "https://discord.com/channels/955.../966.../123..." "Updated content"
# Edit using channel + message ID
node .claude/skills/discord/query.mjs edit dev-general 1234567890 "Updated content"
# Delete using message link
node .claude/skills/discord/query.mjs delete "https://discord.com/channels/955.../966.../123..."
# Delete using channel + message ID
node .claude/skills/discord/query.mjs delete dev-general 1234567890
# Reply using message link
node .claude/skills/discord/query.mjs reply "https://discord.com/channels/955.../966.../123..." "Thanks for the update!"
# Reply using channel + message ID
node .claude/skills/discord/query.mjs reply dev-general 1234567890 "Got it!"
# Add a reaction (use Unicode emoji)
node .claude/skills/discord/query.mjs react "https://discord.com/channels/..." "U+2705"
node .claude/skills/discord/query.mjs react dev-general 1234567890 "U+1F44D"
# Remove a reaction
node .claude/skills/discord/query.mjs unreact "https://discord.com/channels/..." "U+2705"
# Pin a message
node .claude/skills/discord/query.mjs pin "https://discord.com/channels/..."
# Unpin a message
node .claude/skills/discord/query.mjs unpin "https://discord.com/channels/..."
# List pinned messages
node .claude/skills/discord/query.mjs pins dev-general
# Create thread from a message
node .claude/skills/discord/query.mjs thread "https://discord.com/channels/..." --thread "Discussion"
# Create thread in channel (no parent message)
node .claude/skills/discord/query.mjs thread dev-general --thread "New Topic"
# Send DM to a user by name
node .claude/skills/discord/query.mjs dm justin "Hey, can you review this PR?"
# Send DM to a user by ID
node .claude/skills/discord/query.mjs dm 303445765865603073 "Quick question about the deployment"
# Read DM history with a user
node .claude/skills/discord/query.mjs dm-messages justin
# Read last 50 DMs
node .claude/skills/discord/query.mjs dm-messages justin --limit 50
# List users
node .claude/skills/discord/query.mjs users --limit 50
# Find user to get mention format
node .claude/skills/discord/query.mjs user justin
# Output: Mention: <@303445765865603073>
# List roles
node .claude/skills/discord/query.mjs roles
# Find role to get mention format
node .claude/skills/discord/query.mjs role devs
# Output: Mention: <@&955572624992382996>
# Mention a user in a message
node .claude/skills/discord/query.mjs send dev-general "<@303445765865603073> check this PR"
# Mention a role
node .claude/skills/discord/query.mjs announce dev-general "<@&955572624992382996> new release!" --title "Attention Devs"
# Get last 20 messages (default)
node .claude/skills/discord/query.mjs messages dev-general
# Get last 50 messages
node .claude/skills/discord/query.mjs messages dev-general --limit 50
Most commands accept Discord message links directly:
https://discord.com/channels/GUILD_ID/CHANNEL_ID/MESSAGE_IDCommands that accept message links: edit, delete, reply, react, unreact, pin, unpin, thread
Channel names are matched flexibly:
dev-generaldev-gen matches dev-generalteam matches teamDEV-GENERAL matches dev-generaldeployments or dev-alertsdev-generalteam or project-specific channelsuser command, then @mention themrole command, then @mention themmessages commandannounce for important updates (creates rich embed)send for quick messages or automated notificationsrich-embed for structured data with multiple fields--json for scripting or piping to other toolsThe bot needs these Discord permissions:
View Channels - to list and find channelsSend Messages - to post messagesEmbed Links - for rich announcementsRead Message History - to read channel messagesAdd Reactions - to add reactionsManage Messages - to pin/unpin and delete messagesCreate Public Threads - to create threadsWeekly Installs
46
Repository
GitHub Stars
7.0K
First Seen
Jan 24, 2026
Security Audits
Gen Agent Trust HubFailSocketPassSnykWarn
Installed on
gemini-cli42
claude-code41
codex41
opencode41
github-copilot41
cursor39
通过 LiteLLM 代理让 Claude Code 对接 GitHub Copilot 运行 | 高级变通方案指南
48,700 周安装
| `user <name | id>` |
roles | List all roles in the guild |
| `role <name | id>` |
messages <channel> | Get recent messages from a channel |
edit <msg_link> "content" | Edit a message (bot's own only) |
delete <msg_link> | Delete a message |
reply <msg_link> "content" | Reply to a message |
rich-embed <channel> | Send embed with structured fields |
react <msg_link> <emoji> | Add reaction to a message |
unreact <msg_link> <emoji> | Remove reaction from a message |
pin <msg_link> | Pin a message |
unpin <msg_link> | Unpin a message |
pins <channel> | List pinned messages in a channel |
thread <channel> --thread "name" | Create a thread |
dm <user> "message" | Send a direct message to a user |
dm-messages <user> | Read DM history with a user |
| `--field "Name | Value |
--thumbnail "url" | Add thumbnail image to embed |
--image "url" | Add large image to embed |
--thread "name" | Thread name (for thread command) |