Discord机器人管理服务器

一个基于Python和FastMCP框架的Discord机器人管理服务器,提供全面的Discord API交互功能,包括应用命令管理、频道线程管理、消息管理、服务器管理、用户管理、表情贴纸管理、Webhook管理等。

  • by Sujay3054
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Sujay3054/mcp-discordbot

使用说明

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应用

  1. 前往 Discord 开发者门户
  2. 点击 “New Application”翻译成中文是“新申请”
  3. 为您的应用程序输入一个名称(这将是您的机器人的名称)
  4. 点击 “Create”翻译成中文是“创造”

步骤2:创建一个机器人

  1. 在您的应用程序仪表板中,导航至 “Bot” 左侧边栏中的部分
  2. 点击 “添加机器人” 并在提示时确认
  3. 您的机器人已经创建成功!您将看到一个包含机器人信息的板块

步骤3:获取您的机器人令牌

  1. 在 “Bot” 部分,找到 “Token” 田野
  2. 点击 “Copy” 复制你的机器人令牌
  3. ⚠️ 重要请保密这个令牌!切勿公开分享或将其提交到版本控制系统中

步骤4:设置机器人权限

  1. 在 “Bot”翻译成中文是“机器人”或“自动程序” 部分,向下滚动至 “特权网关意图”
  2. 启用您需要的意图:
    • 服务器成员意图必需于 LIST_GUILD_MEMBERS, SEARCH_GUILD_MEMBERS
    • 消息内容意图读取消息内容所需
    • 存在意图用于显示在线状态信息

步骤5:生成邀请链接

  1. 导航至 "OAuth2" > “URL生成器” 部分;章节
  2. 在……之下 “Scopes” 翻译成中文是“范围”,选择:
    • **bot**允许您的应用程序以机器人身份加入服务器
    • **applications.commands**允许您的机器人创建斜杠命令
  3. 在……之下/在……条件下 **“机器人权限”**选择您的机器人所需的权限:
    • 管理员完全访问(谨慎使用)
    • 或者选择特定权限,如:
      • 发送消息
      • 管理消息
      • 管理角色
      • 管理频道
      • 踢出成员
      • 安理会成员
      • 管理Webhooks
      • 管理表情符号和贴纸
  4. 复制生成的URL并在您的浏览器中打开
  5. 选择一个服务器并授权机器人

步骤6:配置您的机器人

  1. 创建一个 .env 在你的项目目录中创建文件:
    DISCORD_BOT_TOKEN=your_bot_token_here
    DISCORD_API_BASE=https://discord.com/api/v10
    REQUEST_TIMEOUT=30.0
    
  2. 替换 your_bot_token_here 使用你在第3步复制的令牌

安全最佳实践

  • ✅ **DO(道)**将您的令牌存储在环境变量中
  • ✅ 翻译成中文是“对”或“正确”。 **DO(做)**使用一个 .env 文件(确保它在你的 .gitignore)
  • ✅ **做(DO)**确保您的代币私密且安全
  • ❌(表示错误或禁止的符号) 不要在源代码中硬编码令牌
  • ❌(这个符号通常表示错误或禁止,具体含义需根据上下文确定,直译为“错误”或“禁止”等) 不要公开分享你的代币
  • ❌(这个符号通常表示“错误”或“不正确”,在中文中可直接用“错误”或“不正确”来传达其含义,但作为单独的符号,它本身没有具体的中文翻译,只是传达了一种否定或错误的意味。) **别(做)**将令牌提交到版本控制系统

故障排除

代币无法使用?

  • 确保你复制了整个令牌,不要有多余的空格
  • 确认机器人已正确邀请到您的服务器
  • 检查机器人是否拥有必要的权限

机器人没有响应?

  • 确保机器人已在您的服务器上在线
  • 检查机器人是否已启用所需的意图
  • 验证机器人是否拥有执行您尝试操作所需的权限

安装

  1. 克隆或下载包含你的代码的仓库 stage_organized.py 文件
  2. 安装所需的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 ID
  • content (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 的 ID
  • thread_id (字符串): Webhook 的令牌

(可选的字符串):如果消息属于某个线程,则为该线程的ID退货

原始的webhook消息对象⚠️ 重要提示


这个端点只有在webhook具有“原始”消息引用时才有效。如果不存在原始消息,该工具将返回一条包含指示的帮助性错误信息。

2. DISCORDBOT_更新原始Webhook消息目的

**更新由 webhook 创建的原始消息。**参数

  • webhook_id :
  • webhook_token (字符串): Webhook 的 ID
  • content (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 的 ID
  • thread_id (str): Webhook 的令牌

(可选[字符串]):如果消息在对话线程中,则为该线程的ID回报


确认删除

🚨 常见问题及解决方案

问题:“未知消息”错误错误 Discord API Error 404: {'message': 'Unknown Message', 'code': 10008}

**:**原因

**该 webhook 没有“原始”消息引用。**解决方案

  1. : 先发送一个webhook消息 DISCORDBOT_EXECUTE_WEBHOOK 使用 wait: true
  2. 和;与;带有 使用 DISCORDBOT_GET_WEBHOOK_MESSAGE(获取 Discord Bot 的 Webhook 消息)
  3. 而是使用特定的消息ID 检查webhook是否已发送任何消息

到频道

**问题:“未找到原始消息”**错误 No original webhook message found

**:**解决方案

  1. **:**创建一条原创信息

    # 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"
    )
    
  2. **:**使用特定的消息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消息一定存在
  • 未经检查 不要使用原生消息工具

未进行适当设置

🔧 故障排除

  1. 如果原始消息工具无法正常工作: 检查webhook是否已发送消息
  2. 到频道 使用 DISCORDBOT_EXECUTE_WEBHOOK wait: true 与;带有;用
  3. 首先 使用特定的消息ID工具
  4. 相反 验证Webhook权限

以及信道访问

  1. 如果您需要管理多条消息: 使用 DISCORDBOT_GET_WEBHOOK_MESSAGE(获取Discord机器人Webhook消息)
  2. 带有特定消息ID 使用 DISCORDBOT_UPDATE_WEBHOOK_MESSAGE(用于更新 Discord Bot 的 Webhook 消息)
  3. 带有特定消息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,