关于 discord
discord 是通过 REST API 操作 Discord 的命令行技能,面向需要从终端发布团队消息和管理频道互动的用户。它支持消息、公告、嵌入内容、线程、反应及私信等操作。
主要功能
- 01列出服务器、频道、成员与角色
- 02发送消息、公告和结构化嵌入
- 03读取、回复、编辑和删除消息
- 04管理反应、置顶消息与线程
- 05发送私信并读取私信历史
适用场景
- 01发布部署通知和团队公告
- 02查看频道近期消息以了解上下文
- 03为讨论创建线程并添加反应
- 04向团队成员发送私信
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ civitai/ civitai --skill discord安装后在 Claude Code 中输入/discord确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.env.example.gitignorequery.mjssetup.mjsapi/client.mjs详细介绍
Discord
通过 REST API 向 Discord 频道发送消息和公告。按名称查找频道,发送带有嵌入内容的格式化消息,管理表情回应、帖子等。
设置
运行设置脚本,通过 Discord 进行身份验证:
node .claude/skills/discord/setup.mjs https://discord-proxy.civitai.com
此脚本将:
- 打开浏览器以进行 Discord 身份验证
- 验证你是否加入了团队服务器
- 将你的个人 API 令牌保存到
.env
仅限管理员:直接使用 Bot 令牌
如果你直接管理 Bot,且需要绕过代理:
- 将此技能目录中的
.env.example复制为.env - 取消注释并设置
DISCORD_BOT_TOKEN - 还可以设置
DISCORD_GUILD以自动检测
cp .claude/skills/discord/.env.example .claude/skills/discord/.env
运行命令
node .claude/skills/discord/query.mjs <command> [options]
命令
| 命令 | 说明 |
|---|---|
guilds | 列出 Bot 加入的所有服务器 |
channels [guild] | 列出服务器中的所有文字频道 |
send <channel> "message" | 发送纯文本消息 |
announce <channel> "message" | 发送格式化公告嵌入内容 |
me | 显示 Bot 信息 |
users | 列出服务器中的所有成员 |
user <name|id> | 获取用户信息和提及格式 |
roles | 列出服务器中的所有角色 |
role <name|id> | 获取角色信息和提及格式 |
messages <channel> | 获取频道中的近期消息 |
edit <msg_link> "content" | 编辑消息(仅限 Bot 自己发送的消息) |
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|inline" | 为丰富嵌入内容添加字段(可重复使用) |
--thumbnail "url" | 为嵌入内容添加缩略图 |
--image "url" | 为嵌入内容添加大图 |
--thread "name" | 帖子名称(用于 thread 命令) |
示例
发送消息
# 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
消息链接
大多数命令都可以直接接受 Discord 消息链接:
- 格式:
https://discord.com/channels/GUILD_ID/CHANNEL_ID/MESSAGE_ID - 在 Discord 中右键点击任意消息 >“复制消息链接”
可接受消息链接的命令:edit、delete、reply、react、unreact、pin、unpin、thread
频道名称匹配
频道名称支持灵活匹配:
- 完全匹配:
dev-general - 部分匹配:
dev-gen可匹配dev-general - 带或不带表情符号前缀:
team可匹配team - 不区分大小写:
DEV-GENERAL可匹配dev-general
适用场景
- 部署:向
deployments或dev-alerts发布版本公告 - 错误修复:在
dev-general与团队分享修复内容 - 功能公告:发布到相关频道
- 团队动态:在
team或项目专属频道分享进展 - 自动通知:通过 CI/CD 或脚本发布
- 提及用户:使用
user命令查找用户 ID,然后 @提及他们 - 提及角色:使用
role命令查找角色 ID,然后 @提及他们 - 读取上下文:使用
messages命令查看最近的消息 - 回应:使用表情回应消息
- 组织讨论:创建讨论串,集中讨论特定话题
- 私信:向团队成员发送私信,查看私信历史记录
提示
- 使用
announce发布重要动态(会创建丰富的嵌入内容) - 使用
send发送简短消息或自动通知 - 使用
rich-embed展示包含多个字段的结构化数据 - 首次查找频道后,频道名称会被缓存
- Bot 必须在目标频道中拥有相应权限
- 使用
--json编写脚本或将输出传递给其他工具 - 消息链接适用于所有以消息为目标的命令
所需权限
Bot 需要以下 Discord 权限:
View Channels- 用于列出和查找频道Send Messages- 用于发布消息Embed Links- 用于发布丰富公告Read Message History- 用于读取频道消息Add Reactions- 用于添加回应Manage Messages- 用于置顶/取消置顶和删除消息Create Public Threads- 用于创建讨论串- Server Members Intent - 在 Discord Developer Portal 中启用(用于列出成员)
评论
支持 Markdown