使用说明
Discord机器人MCP服务器
这个项目提供了一套全面的工具来与Discord API进行交互,这些工具被封装在一个使用FastMCP框架的Python服务器中。它允许您通过标准化的工具界面管理公会(服务器)、频道、消息、用户、网络钩子等。
特点/功能
这个服务器提供了广泛的Discord API功能,这些功能被分成了以下几类:
- 应用程序与命令管理创建、更新、删除和管理Discord斜杠命令和应用程序
- 频道与线程管理创建、更新、删除频道,管理帖子,以及处理权限
- 消息管理发送、编辑、删除消息,管理反应,并处理批量操作
- 调节与自动化自动管理规则、用户封禁和批量操作
- 公会(服务器)管理完整的服务器管理,包括成员、角色、封禁和邀请
- 用户与会员管理用户信息、会员更新和角色管理
- 表情符号和贴纸管理创建、检索、更新、删除和列出自定义表情符号和贴纸
- Webhook 管理提供完整的Webhook生命周期管理,兼容Slack/GitHub
- 邀请函与模板管理创建、解决(或处理)和撤销邀请链接以及公会模板
入门指南
按照以下步骤设置您的Discord机器人MCP服务器并使其运行。
先决条件
- Python 3.7及以上版本
- 一个Discord机器人应用程序及其密钥令牌。您可以在(Discord的开发者门户或相关平台上)创建一个 Discord 开发者门户
获取你的Discord机器人令牌
按照以下步骤创建Discord机器人并获取其令牌:
步骤1:创建一个Discord应用
- 前往 Discord 开发者门户
- 点击 “New Application”翻译成中文是“新申请”
- 为您的应用程序输入一个名称(这将是您的机器人的名称)
- 点击 “Create”翻译成中文是“创造”
步骤2:创建一个机器人
- 在您的应用程序仪表板中,导航至 “Bot” 左侧边栏中的部分
- 点击 “添加机器人” 并在提示时确认
- 您的机器人已经创建成功!您将看到一个包含机器人信息的板块
步骤3:获取您的机器人令牌
- 在 “Bot” 部分,找到 “Token” 田野
- 点击 “Copy” 复制你的机器人令牌
- ⚠️ 重要请保密这个令牌!切勿公开分享或将其提交到版本控制系统中
步骤4:设置机器人权限
- 在 “Bot”翻译成中文是“机器人”或“自动程序” 部分,向下滚动至 “特权网关意图”
- 启用您需要的意图:
- 服务器成员意图必需于
LIST_GUILD_MEMBERS,SEARCH_GUILD_MEMBERS - 消息内容意图读取消息内容所需
- 存在意图用于显示在线状态信息
- 服务器成员意图必需于
步骤5:生成邀请链接
- 导航至 "OAuth2" > “URL生成器” 部分;章节
- 在……之下 “Scopes” 翻译成中文是“范围”,选择:
- **
bot**允许您的应用程序以机器人身份加入服务器 - **
applications.commands**允许您的机器人创建斜杠命令
- **
- 在……之下/在……条件下 **“机器人权限”**选择您的机器人所需的权限:
- 管理员完全访问(谨慎使用)
- 或者选择特定权限,如:
- 发送消息
- 管理消息
- 管理角色
- 管理频道
- 踢出成员
- 安理会成员
- 管理Webhooks
- 管理表情符号和贴纸
- 复制生成的URL并在您的浏览器中打开
- 选择一个服务器并授权机器人
步骤6:配置您的机器人
- 创建一个
.env在你的项目目录中创建文件:DISCORD_BOT_TOKEN=your_bot_token_here DISCORD_API_BASE=https://discord.com/api/v10 REQUEST_TIMEOUT=30.0 - 替换
your_bot_token_here使用你在第3步复制的令牌
安全最佳实践
- ✅ **DO(道)**将您的令牌存储在环境变量中
- ✅ 翻译成中文是“对”或“正确”。 **DO(做)**使用一个
.env文件(确保它在你的.gitignore) - ✅ **做(DO)**确保您的代币私密且安全
- ❌(表示错误或禁止的符号) 不要在源代码中硬编码令牌
- ❌(这个符号通常表示错误或禁止,具体含义需根据上下文确定,直译为“错误”或“禁止”等) 不要公开分享你的代币
- ❌(这个符号通常表示“错误”或“不正确”,在中文中可直接用“错误”或“不正确”来传达其含义,但作为单独的符号,它本身没有具体的中文翻译,只是传达了一种否定或错误的意味。) **别(做)**将令牌提交到版本控制系统
故障排除
代币无法使用?
- 确保你复制了整个令牌,不要有多余的空格
- 确认机器人已正确邀请到您的服务器
- 检查机器人是否拥有必要的权限
机器人没有响应?
- 确保机器人已在您的服务器上在线
- 检查机器人是否已启用所需的意图
- 验证机器人是否拥有执行您尝试操作所需的权限
安装
- 克隆或下载包含你的代码的仓库
stage_organized.py文件 - 安装所需的Python库:
pip install -r requirements.txt
配置
此脚本需要将您的Discord机器人的秘密令牌设置为环境变量。
创建一个 .env 与(文件)位于同一目录下的文件 stage_organized.py:
# .env file
DISCORD_BOT_TOKEN=your_bot_token_here
DISCORD_API_BASE=https://discord.com/api/v10
REQUEST_TIMEOUT=30.0
或者直接设置环境变量:
在Windows(PowerShell)上:
$env:DISCORD_BOT_TOKEN = "Your_Secret_Bot_Token_Here"
在 macOS / Linux(Bash/Zsh)上:
export DISCORD_BOT_TOKEN="Your_Secret_Bot_Token_Here"
运行服务器
一旦设置了环境变量,就在你的终端中运行脚本:
python stage_organized.py
服务器将启动,现在您可以使用MCP Inspector等工具连接到它,并调用可用的工具。
可用工具
以下是此服务器上可用工具的完整列表,按类别整理。
应用程序与命令管理工具
| 工具名称 | 描述 | 输入 | 输出 |
|---|---|---|---|
DISCORDBOT_CREATE_APPLICATION_COMMAND |
创建一个新的全局应用程序命令 | application_id, name, description, type, options |
创建了命令对象 |
DISCORDBOT_DELETE_APPLICATION_COMMAND |
删除全局应用程序命令 | application_id, command_id |
成功状态 |
DISCORDBOT_UPDATE_APPLICATION_COMMAND |
更新全局应用程序命令 | application_id, command_id字段以更新 |
已更新命令对象 |
DISCORDBOT_GET_APPLICATION_COMMAND |
获取全局应用程序命令 | application_id, command_id |
命令对象 |
DISCORDBOT_LIST_APPLICATION_COMMANDS |
获取应用程序的所有全局命令 | application_id, with_localizations |
命令对象数组 |
DISCORDBOT_CREATE_GUILD_APPLICATION_COMMAND |
创建一个新的公会申请命令 | application_id, guild_id, name, description |
创建了命令对象 |
DISCORDBOT_DELETE_GUILD_APPLICATION_COMMAND |
删除一个公会申请命令 | application_id, guild_id, command_id |
成功状态 |
DISCORDBOT_UPDATE_GUILD_APPLICATION_COMMAND |
更新公会申请命令 | application_id, guild_id, command_id字段以更新 |
更新后的命令对象 |
DISCORDBOT_GET_GUILD_APPLICATION_COMMAND |
获取服务器应用命令 | application_id, guild_id, command_id |
命令对象 |
DISCORDBOT_LIST_GUILD_APPLICATION_COMMANDS |
获取应用程序的所有公会命令 | application_id, guild_id, with_localizations |
命令对象数组 |
通道与线程管理工具
| 工具名称 | 描述 | 输入 | 输出 |
|---|---|---|---|
DISCORDBOT_GET_CHANNEL |
通过ID获取频道 | channel_id |
频道对象 |
DISCORDBOT_CREATE_GUILD_CHANNEL |
在公会中创建一个新频道 | guild_id, name, type,可选设置 |
创建频道对象 |
DISCORDBOT_UPDATE_CHANNEL |
更新频道的设置 | channel_id字段以更新 |
已更新的频道对象 |
DISCORDBOT_DELETE_CHANNEL |
删除一个频道 | channel_id |
成功状态 |
DISCORDBOT_LIST_GUILD_CHANNELS |
列出公会中的所有频道 | guild_id |
通道对象数组 |
DISCORDBOT_CREATE_CHANNEL_INVITE |
为频道创建一个新的邀请 | channel_id,邀请设置 |
创建邀请对象 |
DISCORDBOT_LIST_CHANNEL_INVITES |
列出频道的所有邀请 | channel_id |
邀请对象的数组 |
DISCORDBOT_SET_CHANNEL_PERMISSION_OVERWRITE |
编辑频道权限重写 | channel_id, overwrite_id, allow, deny, type |
成功状态 |
DISCORDBOT_DELETE_CHANNEL_PERMISSION_OVERWRITE |
删除频道权限覆盖 | channel_id, overwrite_id |
成功状态 |
DISCORDBOT_CREATE_THREAD |
从现有通道创建一个新线程 | channel_id, name, type,设置 |
创建线程对象 |
DISCORDBOT_CREATE_THREAD_FROM_MESSAGE |
从现有消息创建新线程 | channel_id, message_id, name,设置 |
创建线程对象 |
DISCORDBOT_JOIN_THREAD |
将当前用户添加到线程中 | channel_id |
成功状态 |
DISCORDBOT_LEAVE_THREAD |
从线程中移除当前用户 | channel_id |
成功状态 |
DISCORDBOT_GET_THREAD_MEMBER |
返回线程成员对象 | channel_id, user_id |
线程成员对象 |
DISCORDBOT_DELETE_THREAD_MEMBER |
从线程中移除另一个成员 | channel_id, user_id |
成功状态 |
DISCORDBOT_LIST_THREAD_MEMBERS |
返回线程成员的数组 | channel_id,可选过滤器 |
线程成员对象的数组 |
消息管理工具
| 工具名称 | 描述 | 输入 | 输出 |
|---|---|---|---|
DISCORDBOT_CREATE_MESSAGE |
向Discord频道发送消息 | channel_id, content, embeds, files, components |
创建消息对象 |
DISCORDBOT_GET_MESSAGE |
在频道中返回特定消息 | channel_id, message_id |
消息对象 |
DISCORDBOT_UPDATE_MESSAGE |
更新一条消息 | channel_id, message_id,新内容 |
更新后的消息对象 |
DISCORDBOT_DELETE_MESSAGE |
删除一条消息 | channel_id, message_id |
成功状态 |
DISCORDBOT_LIST_MESSAGES |
返回频道的消息 | channel_id,可选过滤器 |
消息对象数组 |
DISCORDBOT_PIN_MESSAGE |
在频道中固定一条消息 | channel_id, message_id |
成功状态 |
DISCORDBOT_UNPIN_MESSAGE |
取消固定频道中的消息 | channel_id, message_id |
成功状态 |
DISCORDBOT_LIST_PINNED_MESSAGES |
返回频道中所有置顶的消息 | channel_id |
消息对象数组 |
DISCORDBOT_ADD_MY_MESSAGE_REACTION |
为消息创建反应 | channel_id, message_id, emoji |
成功状态 |
DISCORDBOT_DELETE_MY_MESSAGE_REACTION |
删除当前用户所做的反应 | channel_id, message_id, emoji |
成功状态 |
DISCORDBOT_DELETE_USER_MESSAGE_REACTION |
删除其他用户的反应 | channel_id, message_id, emoji, user_id |
成功状态 |
DISCORDBOT_DELETE_ALL_MESSAGE_REACTIONS |
删除消息上的所有反应 | channel_id, message_id |
成功状态 |
DISCORDBOT_DELETE_ALL_MESSAGE_REACTIONS_BY_EMOJI 删除给定表情符号的所有反应 channel_id, message_id, emoji |
成功状态 | ||
DISCORDBOT_LIST_MESSAGE_REACTIONS_BY_EMOJI 获取使用此表情符号作出反应的用户列表 channel_id, message_id, emoji,可选过滤器 |
用户对象数组 | ||
DISCORDBOT_BULK_DELETE_MESSAGES |
在单个请求中删除多条消息 | channel_id, messages (数组) |
成功状态 |
DISCORDBOT_CROSSPOST_MESSAGE |
在新闻频道中转发一条消息 | channel_id, message_id |
跨发帖消息对象 |
公会(服务器)管理工具
| 工具名称 | 描述 | 输入 | 输出 |
|---|---|---|---|
DISCORDBOT_CREATE_GUILD |
创建一个新的公会 | name,可选设置 |
创建公会对象 |
DISCORDBOT_DELETE_GUILD |
永久删除一个公会 | guild_id |
成功状态 |
DISCORDBOT_UPDATE_GUILD |
更新公会设置 | guild_id,需要更新的字段 |
更新后的公会对象 |
DISCORDBOT_GET_GUILD |
返回给定ID的公会对象 | guild_id, with_counts |
公会对象 |
DISCORDBOT_LIST_GUILD_MEMBERS |
返回一个公会成员对象的列表 | guild_id,可选过滤器 |
成员对象数组 |
DISCORDBOT_UPDATE_GUILD_MEMBER |
修改公会成员的属性 | guild_id, user_id字段以更新 |
已更新的成员对象 |
DISCORDBOT_BAN_USER_FROM_GUILD |
禁止用户加入公会 | guild_id, user_id,可选设置 |
成功状态 |
DISCORDBOT_UNBAN_USER_FROM_GUILD |
解除对用户的封禁 | guild_id, user_id |
成功状态 |
DISCORDBOT_LIST_GUILD_BANS |
返回一个禁用对象列表 | guild_id,可选过滤器 |
禁用对象数组 |
DISCORDBOT_GET_GUILD_BAN |
返回给定用户的封禁对象 | guild_id, user_id |
禁止对象 |
DISCORDBOT_PRUNE_GUILD |
开始修剪操作 | guild_id, days,可选设置 |
剪枝数量 |
DISCORDBOT_PREVIEW_PRUNE_GUILD |
返回一个包含修剪计数的对象 | guild_id, days,可选设置 |
剪枝计数对象 |
DISCORDBOT_LIST_GUILD_ROLES |
返回角色对象的列表 | guild_id |
角色对象数组 |
DISCORDBOT_CREATE_GUILD_ROLE |
为公会创建一个新角色 | guild_id角色设置 |
创建角色对象 |
DISCORDBOT_UPDATE_GUILD_ROLE |
修改公会角色 | guild_id, role_id字段以更新 |
已更新的角色对象 |
DISCORDBOT_DELETE_GUILD_ROLE |
删除一个公会角色 | guild_id, role_id |
成功状态 |
DISCORDBOT_LEAVE_GUILD |
离开公会 | guild_id |
成功状态 |
DISCORDBOT_LIST_GUILD_INVITES |
返回一个邀请对象列表 | guild_id |
邀请对象的数组 |
表情符号和贴纸管理工具
| 工具名称 | 描述 | 输入 | 输出 |
|---|---|---|---|
DISCORDBOT_CREATE_GUILD_EMOJI 为公会创建一个新的表情符号 guild_id, name, image,可选 roles 已创建表情符号对象 |
|||
DISCORDBOT_GET_GUILD_EMOJI 根据给定的ID返回一个表情符号对象 guild_id, emoji_id 表情符号对象 |
|||
DISCORDBOT_UPDATE_GUILD_EMOJI 修改给定的表情符号 guild_id, emoji_id字段待更新 |
已更新表情符号对象 | ||
DISCORDBOT_DELETE_GUILD_EMOJI 删除给定的表情符号 guild_id, emoji_id |
成功状态 | ||
DISCORDBOT_LIST_GUILD_EMOJIS 返回一个表情符号对象的列表 guild_id 表情符号对象的数组 |
|||
DISCORDBOT_CREATE_GUILD_STICKER |
为公会创建一个新贴纸 | guild_id, name, description, tags, file |
创建了贴纸对象 |
DISCORDBOT_GET_GUILD_STICKER |
返回给定ID对应的贴纸对象 | guild_id, sticker_id |
贴纸对象 |
DISCORDBOT_UPDATE_GUILD_STICKER |
修改给定的贴纸 | guild_id, sticker_id字段以更新 |
更新后的贴纸对象 |
DISCORDBOT_DELETE_GUILD_STICKER |
删除指定贴纸 | guild_id, sticker_id |
成功状态 |
DISCORDBOT_LIST_GUILD_STICKERS |
返回一个贴纸对象的列表 | guild_id |
贴纸对象数组 |
DISCORDBOT_LIST_STICKER_PACKS |
返回贴纸包列表 | 无 | 贴纸包对象数组 |
DISCORDBOT_GET_STICKER |
返回给定ID的贴纸对象 | sticker_id |
贴纸对象 |
Webhook管理工具
| 工具名称 | 描述 | 输入 | 输出 |
|---|---|---|---|
DISCORDBOT_CREATE_WEBHOOK |
在频道中创建一个Webhook | channel_id, name,可选 avatar |
创建了 webhook 对象 |
DISCORDBOT_GET_WEBHOOK |
返回给定 ID 的 webhook 对象 | webhook_id |
Webhook 对象 |
DISCORDBOT_UPDATE_WEBHOOK |
修改Webhook | webhook_id字段以待更新 |
已更新的webhook对象 |
DISCORDBOT_DELETE_WEBHOOK |
永久删除一个Webhook | webhook_id |
成功状态 |
DISCORDBOT_GET_WEBHOOK_BY_TOKEN |
使用令牌返回webhook对象 | webhook_id, webhook_token |
Webhook 对象 |
DISCORDBOT_UPDATE_WEBHOOK_BY_TOKEN |
使用其令牌修改Webhook | webhook_id, webhook_token,要更新的字段 |
更新后的webhook对象 |
DISCORDBOT_DELETE_WEBHOOK_BY_TOKEN |
使用令牌删除一个webhook | webhook_id, webhook_token |
成功状态 |
DISCORDBOT_EXECUTE_WEBHOOK 执行Webhook webhook_id, webhook_token消息内容 |
消息对象或成功状态 | ||
DISCORDBOT_EXECUTE_SLACK_COMPATIBLE_WEBHOOK |
在Slack兼容模式下执行Webhook | webhook_id, webhook_tokenSlack有效载荷 |
消息对象或成功状态 |
DISCORDBOT_EXECUTE_GITHUB_COMPATIBLE_WEBHOOK |
在与GitHub兼容的模式下执行webhook | webhook_id, webhook_tokenGitHub 有效载荷 |
消息对象或成功状态 |
DISCORDBOT_GET_WEBHOOK_MESSAGE |
返回之前发送的 webhook 消息 | webhook_id, webhook_token, message_id |
消息对象 |
DISCORDBOT_UPDATE_WEBHOOK_MESSAGE |
编辑之前发送的webhook消息 | webhook_id, webhook_token, message_id,新内容 |
更新的消息对象 |
DISCORDBOT_DELETE_WEBHOOK_MESSAGE |
删除由webhook创建的消息 | webhook_id, webhook_token, message_id |
成功状态 |
DISCORDBOT_GET_ORIGINAL_WEBHOOK_MESSAGE |
返回原始交互消息 | webhook_id, webhook_token |
原始消息对象 |
DISCORDBOT_UPDATE_ORIGINAL_WEBHOOK_MESSAGE |
编辑原始互动消息 | webhook_id, webhook_token,新内容 |
更新后的消息对象 |
DISCORDBOT_DELETE_ORIGINAL_WEBHOOK_MESSAGE |
删除原始交互消息 | webhook_id, webhook_token |
成功状态 |
DISCORDBOT_LIST_CHANNEL_WEBHOOKS |
返回一个包含频道webhook对象的列表 | channel_id |
webhook 对象数组 |
DISCORDBOT_GET_GUILD_WEBHOOKS |
返回一个服务器(或公会)webhook对象的列表 | guild_id |
webhook 对象数组 |
邀请函与模板管理工具
| 工具名称 | 描述 | 输入 | 输出 |
|---|---|---|---|
| 中文翻译 | 英文原文 | 词性 | 词性翻译 |
| ,可选过滤器 | 邀请对象 | DISCORDBOT_INVITE_REVOKE |
invite_code |
| 成功状态 | DISCORDBOT_CREATE_GUILD_FROM_TEMPLATE |
template_code |
根据模板创建一个新的公会 |
| 新公会对象 | DISCORDBOT_GET_GUILD_TEMPLATE |
template_code |
返回一个公会模板对象 |
| 模板对象 | DISCORDBOT_UPDATE_GUILD_TEMPLATE |
template_code |
修改模板的元数据 |
| ,需要更新的字段 | 更新后的模板对象 | DISCORDBOT_SYNC_GUILD_TEMPLATE |
guild_id |
| 更新的模板对象 | DISCORDBOT_DELETE_GUILD_TEMPLATE |
template_code |
删除模板 |
| 成功状态 | DISCORDBOT_LIST_GUILD_TEMPLATES |
guild_id |
返回一个包含公会模板对象的数组 |
| 模板对象数组 | DISCORDBOT_CREATE_GUILD_TEMPLATE |
guild_id |
为公会创建一个模板 |
| 模板对象 |
杂项/实用工具
| 工具名称 | 描述 | 输入 | 输出 |
|-----------|-------------|-------|--------| DISCORDBOT_FOLLOW_CHANNEL | channel_id| 关注一个新闻频道以向目标频道发送消息 | webhook_channel_id ,
| 成功状态 | DISCORDBOT_TRIGGER_TYPING_INDICATOR | channel_id | 为指定频道发布打字指示器 |
| 成功状态 | DISCORDBOT_CROSSPOST_MESSAGE | channel_id| 在新闻频道中跨发一条消息 | message_id ,
| 跨发帖消息对象 | DISCORDBOT_LIST_VOICE_REGIONS |
| 返回一个语音区域对象的数组 | 无 | 语音区域对象的数组 | DISCORDBOT_CREATE_DM | recipient_id | 与用户创建一个新的DM(直接消息)频道 |
| 直接消息(DM)通道对象 | DISCORDBOT_CREATE_GROUP_DM_USER | access_tokens创建一个新的包含多个用户的群组DM频道 nicks ,可选
| 群组DM频道对象 | DISCORDBOT_GET_GATEWAY |
| 获取网关URL和建议的分片数量 | 无 | 网关对象 | DISCORDBOT_GET_BOT_GATEWAY |
| 获取机器人的网关URL和建议的分片数量 | 无 | 机器人网关对象 | DISCORDBOT_GET_PUBLIC_KEYS |
| 获取用于验证交互有效载荷的公钥 | 无 | 公钥对象 |
配置选项
服务器通过环境变量支持多种配置选项:
| 变量 | 描述 | 默认值 |
|----------|-------------|---------| DISCORD_BOT_TOKEN |
| 您的Discord机器人令牌(必需) | 无 | DISCORD_API_BASE | https://discord.com/api/v10 Discord API基础URL
| REQUEST_TIMEOUT | 30.0 | HTTP请求超时时间(秒) |
|
制作特点
- **这台服务器包含生产就绪的功能:**连接池
- 高效的HTTP客户端,支持连接池速率限制
- 内置速率限制,采用指数退避算法重试逻辑
- 对于失败的请求自动重试错误处理
- 全面的错误处理,附带详细信息文件上传支持
- 支持上传最大25MB的文件健康监测
内置健康检查功能
- 安全
- 机器人令牌从环境变量中加载(绝不硬编码)
.env自动的 - 文件加载以便轻松配置
- 具备适当超时处理功能的安全HTTP客户端
对所有参数进行输入验证
Discord Webhook 工具对比
🔧 可用的Webhook工具
**1. DISCORDBOT_EXECUTE_WEBHOOK ⭐(推荐)**目的
发送包含完整Discord功能的丰富Discord消息参数
webhook_id:webhook_token(字符串): Webhook IDcontent(str): Webhook令牌username(可选[str]):消息内容(最多2000个字符)avatar_url(可选[str]):覆盖webhook用户名tts(可选[str]):覆盖webhook头像embeds(布尔值):文本转语音components(Optional[List[Dict]]): 丰富的嵌入内容files(可选[列表[字典]]): 按钮,选择菜单attachments(可选[列表]):文件上传flags(可选[List[Dict]]):附件对象thread_name(可选的[int]):消息标志wait(可选[str]):线程创建
(布尔值):等待消息创建用例
完全集成Discord,支持富文本消息、文件上传、交互式组件
2. DISCORDBOT_EXECUTE_SLACK_兼容的WEBHOOK目的
使用Slack的webhook格式发送消息参数
webhook_id:webhook_token(str): Webhook ID(字符串类型:Webhook 编号)payload(字符串): Webhook令牌wait`Dict[str, Any]`:与Slack兼容的有效载荷thread_id(布尔值):等待消息创建
(可选[str]): 线程ID有效载荷格式
{
"text": "Hello from Slack!",
"attachments": [
{
"color": "good",
"title": "Notification",
"text": "This is a test message"
}
]
}
**:**用例
从Slack迁移,与Slack兼容系统集成
**3. DISCORDBOT_EXECUTE_GITHUB_COMPATIBLE_WEBHOOK(Discord机器人执行GitHub兼容的Webhook)**目的
使用GitHub的webhook格式发送消息参数
webhook_id:webhook_token(str): Webhook ID(字符串类型:Webhook 编号)payload(str): Webhook令牌wait(Dict[str, Any]):与GitHub兼容的有效载荷thread_id(bool):等待消息创建
(可选的字符串): 线程ID有效载荷格式
{
"sender": {
"login": "username",
"id": 12345,
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
"html_url": "https://github.com/username"
},
"repository": {
"name": "repo-name",
"full_name": "owner/repo-name",
"id": 123456789,
"html_url": "https://github.com/owner/repo-name"
},
"action": "test"
}
**:**用例
GitHub 集成、CI/CD 通知、仓库事件
📊 功能对比表
| 功能 | 标准Webhook | 与Slack兼容 | 与GitHub兼容 |
|---------|------------------|------------------|-------------------| | 富媒体嵌入
| ✅ 完整的Discord嵌入 | ❌ 附件有限 | ❌ 附件有限 | | 组件
| ✅ 按钮、选择菜单 | ❌ 不支持 | ❌ 不支持 | | 文件上传
| ✅ 支持多个文件 | ❌ 支持有限 | ❌ 支持有限 | | 线程支持 thread_name | ✅ thread_id 参数 | ✅ thread_id 参数 | ✅
参数 | | 复杂性
| 🔴 更多参数 | 🟢 简单载荷 | 🔴 复杂载荷 | | 可靠性
| ✅ 高 | 🟡 中 | 🔴 低(严格格式) | | 移民
| ❌ 仅限Discord | ✅ 从Slack轻松接入 | ✅ 从GitHub轻松接入 | | 用例
| 通用Discord集成 | Slack迁移 | GitHub集成 |
🎯 何时使用哪种(方法/工具)
- 在以下情况下使用 DISCORDBOT_EXECUTE_WEBHOOK:
- ✅ 构建Discord原生集成
- ✅ 需要丰富的嵌入功能、组件以及文件上传支持
- ✅ 希望获得Discord的全部功能
✅ 发送自定义消息
- 当以下情况时,使用 DISCORDBOT_EXECUTE_SLACK_COMPATIBLE_WEBHOOK:
- ✅ 从Slack迁移到Discord
- ✅ 与现有的Slack Webhook系统集成
- ✅ 需要简洁的、基于文本的消息
✅ 使用与Slack兼容的工具
- 在以下情况下使用 DISCORDBOT_EXECUTE_GITHUB_COMPATIBLE_WEBHOOK:
- ✅ GitHub 集成通知
- ✅ CI/CD 管道通知
- ✅ 仓库事件通知
✅ 发布问题/拉取请求通知
- 🚨 重要提示 标准Webhook
- 是最可靠且功能最丰富的 兼容Slack
- 适合处理简单消息和Slack迁移 与GitHub兼容
- 这很复杂,需要精确的GitHub webhook格式
- 所有工具都支持相同的webhook ID和令牌
thread_name工具之间的线程支持存在差异(使用thread_id对阵
**)**建议 从……开始 标准Webhook
对于大多数使用场景,仅在从Slack/GitHub系统进行特定迁移时,才使用兼容的webhooks。
Discord Webhook 消息管理工具
🔧 可用工具
1. 获取原始Discord机器人Webhook消息目的
**检索由webhook创建的原始消息。**参数
webhook_id:webhook_token(字符串): Webhook 的 IDthread_id(字符串): Webhook 的令牌
(可选的字符串):如果消息属于某个线程,则为该线程的ID退货
原始的webhook消息对象⚠️ 重要提示
这个端点只有在webhook具有“原始”消息引用时才有效。如果不存在原始消息,该工具将返回一条包含指示的帮助性错误信息。
2. DISCORDBOT_更新原始Webhook消息目的
**更新由 webhook 创建的原始消息。**参数
webhook_id:webhook_token(字符串): Webhook 的 IDcontent(str): Webhook的令牌embeds(可选[str]): 新消息内容allowed_mentions(Optional[List[Dict]]): 嵌入对象数组components(可选[字典]):允许的提及配置files(Optional[List[Dict]]): 消息组件数组attachments(可选[列表]):要上传的文件数组thread_id(可选[List[Dict]]): 附件对象的数组
(可选[str]):如果消息属于某个线程,则为该线程的ID回报
更新后的消息对象
3. DISCORDBOT_删除原始Webhook消息目的
**删除由 webhook 创建的原始消息。**参数
webhook_id:webhook_token(字符串): Webhook 的 IDthread_id(str): Webhook 的令牌
(可选[字符串]):如果消息在对话线程中,则为该线程的ID回报
确认删除
🚨 常见问题及解决方案
问题:“未知消息”错误错误 Discord API Error 404: {'message': 'Unknown Message', 'code': 10008}
**:**原因
**该 webhook 没有“原始”消息引用。**解决方案
- : 先发送一个webhook消息
DISCORDBOT_EXECUTE_WEBHOOK使用wait: true - 和;与;带有 使用 DISCORDBOT_GET_WEBHOOK_MESSAGE(获取 Discord Bot 的 Webhook 消息)
- 而是使用特定的消息ID 检查webhook是否已发送任何消息
到频道
**问题:“未找到原始消息”**错误 No original webhook message found
**:**解决方案
-
**:**创建一条原创信息
# First, send a webhook message result = await DISCORDBOT_EXECUTE_WEBHOOK( webhook_id="your_webhook_id", webhook_token="your_webhook_token", content="Test message to create original", wait=True # Important: wait for message creation ) # Then you can use the original message tools original = await DISCORDBOT_GET_ORIGINAL_WEBHOOK_MESSAGE( webhook_id="your_webhook_id", webhook_token="your_webhook_token" ) -
**:**使用特定的消息ID代替
# Get message by ID (more reliable) message = await DISCORDBOT_GET_WEBHOOK_MESSAGE( webhook_id="your_webhook_id", webhook_token="your_webhook_token", message_id="specific_message_id" )
:
🎯 替代方法
# Step 1: Send a webhook message with wait=true
result = await DISCORDBOT_EXECUTE_WEBHOOK(
webhook_id="1430799795693420614",
webhook_token="your_token",
content="Creating original message",
wait=True
)
# Step 2: Now you can use original message tools
original = await DISCORDBOT_GET_ORIGINAL_WEBHOOK_MESSAGE(
webhook_id="1430799795693420614",
webhook_token="your_token"
)
方法1:首先创建原始消息
# Get a specific message by ID (more reliable)
message = await DISCORDBOT_GET_WEBHOOK_MESSAGE(
webhook_id="1430799795693420614",
webhook_token="your_token",
message_id="1234567890123456789"
)
# Update specific message
updated = await DISCORDBOT_UPDATE_WEBHOOK_MESSAGE(
webhook_id="1430799795693420614",
webhook_token="your_token",
message_id="1234567890123456789",
content="Updated message content"
)
# Delete specific message
deleted = await DISCORDBOT_DELETE_WEBHOOK_MESSAGE(
webhook_id="1430799795693420614",
webhook_token="your_token",
message_id="1234567890123456789"
)
方法2:使用特定消息ID
# Get recent messages in the channel
messages = await DISCORDBOT_LIST_MESSAGES(
channel_id="your_channel_id",
limit=10
)
# Find webhook messages
webhook_messages = [msg for msg in messages if msg.get('webhook_id')]
方法3:列出最近消息
📋 最佳实践
- ✅ 应该做的事
wait: true总是使用 - 在创建Webhook消息时 存储消息ID
- 以备将来参考 使用特定的消息ID工具
- 为了可靠性 优雅地处理错误
使用 try-catch 块
- ❌ 不要做的事 不要依赖“原始”信息
- 无需事先创建一个 不要假定webhook消息一定存在
- 未经检查 不要使用原生消息工具
未进行适当设置
🔧 故障排除
- 如果原始消息工具无法正常工作: 检查webhook是否已发送消息
- 到频道 使用 DISCORDBOT_EXECUTE_WEBHOOK
wait: true与;带有;用 - 首先 使用特定的消息ID工具
- 相反 验证Webhook权限
以及信道访问
- 如果您需要管理多条消息: 使用 DISCORDBOT_GET_WEBHOOK_MESSAGE(获取Discord机器人Webhook消息)
- 带有特定消息ID 使用 DISCORDBOT_UPDATE_WEBHOOK_MESSAGE(用于更新 Discord Bot 的 Webhook 消息)
- 带有特定消息ID 使用 DISCORDBOT_DELETE_WEBHOOK_MESSAGE(用于删除Discord Webhook消息)
带有特定的消息ID
🎯 总结
| 工具 | 使用场景 | 可靠性 | 替代方案 |
|------|----------|-------------|-------------| GET_ORIGINAL_WEBHOOK_MESSAGE | GET_WEBHOOK_MESSAGE | 获取第一个Webhook消息 | ⚠️ 需要设置 |
带有ID | UPDATE_ORIGINAL_WEBHOOK_MESSAGE | UPDATE_WEBHOOK_MESSAGE | 更新第一个Webhook消息 | ⚠️ 需要设置 |
带有ID | DELETE_ORIGINAL_WEBHOOK_MESSAGE | DELETE_WEBHOOK_MESSAGE | 删除第一个Webhook消息 | ⚠️ 需要设置 |
**带有ID |**建议GET_WEBHOOK_MESSAGE使用特定的消息ID工具( UPDATE_WEBHOOK_MESSAGE, DELETE_WEBHOOK_MESSAGE,
