mcpField
D
discord

discord

github.com/civitai生产力7.3k78 次安装今天更新
代码仓库

关于 discord

discord 是通过 REST API 操作 Discord 的命令行技能,面向需要从终端发布团队消息和管理频道互动的用户。它支持消息、公告、嵌入内容、线程、反应及私信等操作。

主要功能

  1. 01列出服务器、频道、成员与角色
  2. 02发送消息、公告和结构化嵌入
  3. 03读取、回复、编辑和删除消息
  4. 04管理反应、置顶消息与线程
  5. 05发送私信并读取私信历史

适用场景

  1. 01发布部署通知和团队公告
  2. 02查看频道近期消息以了解上下文
  3. 03为讨论创建线程并添加反应
  4. 04向团队成员发送私信

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/civitai/civitai --skill discord

安装后在 Claude Code 中输入/discord确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.env.example
.gitignore
query.mjs
setup.mjs
api/
client.mjs

详细介绍

Discord

通过 REST API 向 Discord 频道发送消息和公告。按名称查找频道,发送带有嵌入内容的格式化消息,管理表情回应、帖子等。

设置

运行设置脚本,通过 Discord 进行身份验证:

node .claude/skills/discord/setup.mjs https://discord-proxy.civitai.com

此脚本将:

  1. 打开浏览器以进行 Discord 身份验证
  2. 验证你是否加入了团队服务器
  3. 将你的个人 API 令牌保存到 .env
仅限管理员:直接使用 Bot 令牌

如果你直接管理 Bot,且需要绕过代理:

  1. 将此技能目录中的 .env.example 复制为 .env
  2. 取消注释并设置 DISCORD_BOT_TOKEN
  3. 还可以设置 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