mcpField
D
discord

discord

github.com/openhands生产力17559 次安装今天更新
代码仓库

关于 discord

用于实现和自动化 Discord 集成的技能,介绍 Webhook、Bot REST API 和交互命令等方式,并提供凭据保护、提及控制及速率限制处理建议。

主要功能

  1. 01提供传入 Webhook 使用指引
  2. 02通过 Bot REST API 自动发消息
  3. 03设置斜杠命令与交互
  4. 04附带 Python 消息发送脚本
  5. 05提供凭据和速率限制防护

适用场景

  1. 01发送 CI 构建通知
  2. 02以 Bot 身份发布频道消息
  3. 03构建用户调用的斜杠命令
  4. 04处理 Discord API 速率限制

安装

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

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

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

包含的文件

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

__init__.py
README.md
.plugin/
plugin.json
references/
REFERENCE.md
scripts/
__init__.py
_http.py
post_webhook.py
send_message.py

详细介绍

Discord

实现或自动化 Discord 集成时使用此技能。

选择合适的方法

  1. 传入 Webhook(最适合单向发布)

  2. 机器人令牌 + REST API(双向/更丰富的自动化)

    • 需要以机器人身份发布、管理频道、读取历史记录、执行审核等操作时使用。
    • REST API 基础地址:https://discord.com/api/v10
    • 大多数 REST 调用使用 Authorization: Bot <token>。
  3. 交互/斜杠命令(由用户调用的命令)

    • 使用应用命令和交互 Webhook。
    • 通常需要运行 Web 服务器来接收交互并快速响应。

密钥与安全

  • 切勿将令牌硬编码。使用环境变量:
    • DISCORD_WEBHOOK_URL 用于传入 Webhook
    • DISCORD_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 流程、命令注册端点、故障排查),请参阅:

评论

支持 Markdown