关于 discord
用于实现和自动化 Discord 集成的技能,介绍 Webhook、Bot REST API 和交互命令等方式,并提供凭据保护、提及控制及速率限制处理建议。
主要功能
- 01提供传入 Webhook 使用指引
- 02通过 Bot REST API 自动发消息
- 03设置斜杠命令与交互
- 04附带 Python 消息发送脚本
- 05提供凭据和速率限制防护
适用场景
- 01发送 CI 构建通知
- 02以 Bot 身份发布频道消息
- 03构建用户调用的斜杠命令
- 04处理 Discord API 速率限制
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ openhands/ extensions --skill discord安装后在 Claude Code 中输入/discord确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
__init__.pyREADME.md.plugin/plugin.jsonreferences/REFERENCE.mdscripts/__init__.py_http.pypost_webhook.pysend_message.py详细介绍
Discord
实现或自动化 Discord 集成时使用此技能。
选择合适的方法
-
传入 Webhook(最适合单向发布)
- 适用于 CI 通知、警报、构建状态等。
- 无需机器人用户。
- 参见:https://discord.com/developers/docs/resources/webhook#execute-webhook
-
机器人令牌 + REST API(双向/更丰富的自动化)
- 需要以机器人身份发布、管理频道、读取历史记录、执行审核等操作时使用。
- REST API 基础地址:
https://discord.com/api/v10 - 大多数 REST 调用使用
Authorization: Bot <token>。
-
交互/斜杠命令(由用户调用的命令)
- 使用应用命令和交互 Webhook。
- 通常需要运行 Web 服务器来接收交互并快速响应。
密钥与安全
- 切勿将令牌硬编码。使用环境变量:
DISCORD_WEBHOOK_URL用于传入 WebhookDISCORD_BOT_TOKEN用于机器人 REST API 调用
- 将 Webhook URL 视为密钥(其中包含令牌)。
- 请勿自动化普通用户账号(“自机器人”)。使用官方机器人/OAuth 流程。
易错点/安全注意事项(请阅读)
- Webhook URL 是密钥(令牌嵌入在 URL 中)。不要将其粘贴到 issue、日志、CI 输出或聊天中。
- 提及默认情况下可能造成风险:务必将
allowed_mentions设置为严格的值(这些示例使用{"parse": []}),以免意外 ping@everyone/角色。 - 注意避免意外记录密钥:
- 如果编写自己的脚本,请避免在异常消息中包含完整的 Webhook URL。
- 随附脚本会对错误输出中的 Webhook URL 进行清理,但仍应避免自行打印 URL。
- 速率限制:处理 HTTP 429 时使用
retry_after/Retry-After,不要无限重试。
快速示例
以下 shell 代码片段使用 POSIX 风格的环境变量和续行符。在 Windows PowerShell 中,请对所示标志使用 curl.exe,并使用 $env:DISCORD_WEBHOOK_URL/$env:DISCORD_BOT_TOKEN 设置环境变量,或将请求转换为 Invoke-RestMethod。
通过传入 Webhook 发布消息(推荐)
Discord 要求至少提供 content、embeds、components、file 或 poll 中的一项。
curl -sS -X POST \
-H 'Content-Type: application/json' \
-d '{"content":"Hello from OpenHands","allowed_mentions":{"parse":[]}}' \
"$DISCORD_WEBHOOK_URL"
使用机器人令牌向频道发布消息
端点:POST /channels/{channel_id}/messages(创建消息)
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":[]}}'
文档:https://discord.com/developers/docs/resources/channel#create-message
自动化脚本(随附)
这些脚本自包含,且仅使用 Python 标准库。
-
发布到 Webhook:
python3 -m skills.discord.scripts.post_webhook --content "Build finished" --wait -
使用机器人令牌发布到频道:
python3 -m skills.discord.scripts.send_message --channel-id "$CHANNEL_ID" --content "Hello"
速率限制
- 不要硬编码限制值。使用 Discord 的
Retry-After/retry_after,以及可用的速率限制标头。 - 遇到 HTTP 429 时,等待指定的延迟时间(将其限制在合理上限内,并加入少量随机抖动),然后重试。
文档:https://discord.com/developers/docs/topics/rate-limits
斜杠命令/应用命令
- 快速迭代时使用服务器命令(即时更新)。
- 准备就绪后使用全局命令;其传播可能需要更长时间。
文档:https://discord.com/developers/docs/interactions/application-commands
参考
如需了解更多详情(OAuth2 流程、命令注册端点、故障排查),请参阅: