通过 Rube MCP 实现 Discord 自动化
通过 Composio 的 Discord/Discordbot 工具包,经由 Rube MCP 自动化 Discord 操作。
前置条件
- 必须连接 Rube MCP(RUBE_SEARCH_TOOLS 可用)
- 通过
RUBE_MANAGE_CONNECTIONS连接 Discord,使用discord和discordbot工具包 - 始终先调用
RUBE_SEARCH_TOOLS获取当前工具 schema
设置
获取 Rube MCP:在客户端配置中添加 https://rube.app/mcp 作为 MCP 服务器。无需 API 密钥 — 只需添加端点即可使用。
- 通过确认
RUBE_SEARCH_TOOLS响应来验证 Rube MCP 可用 - 使用工具包
discordbot(机器人操作)或discord(用户操作)调用RUBE_MANAGE_CONNECTIONS - 如果连接状态不是 ACTIVE,按照返回的认证链接完成 Discord 认证
- 在运行任何工作流之前确认连接状态显示为 ACTIVE
核心工作流
1. 发送消息
何时使用:用户想要向频道或私信发送消息
工具序列:
DISCORD_LIST_MY_GUILDS- 列出机器人所属的服务器 [前置条件]DISCORDBOT_LIST_GUILD_CHANNELS- 列出服务器中的频道 [前置条件]DISCORDBOT_CREATE_MESSAGE- 发送消息 [必需]DISCORDBOT_UPDATE_MESSAGE- 编辑已发送的消息 [可选]
关键参数:
channel_id:频道 snowflake IDcontent:消息文本(最多 2000 个字符)embeds:富文本内容的 embed 对象数组guild_id:用于列出频道的服务器 ID
注意事项:
- 机器人必须在该频道拥有 SEND_MESSAGES 权限
- 高频发送可能触发按路由的速率限制;请遵守 Retry-After 响应头
- 只能编辑同一机器人发送的消息
2. 发送私信
何时使用:用户想要私信 Discord 用户
工具序列:
DISCORDBOT_CREATE_DM- 创建或获取私信频道 [必需]DISCORDBOT_CREATE_MESSAGE- 向私信频道发送消息 [必需]
关键参数:
recipient_id:私信用户的 snowflake IDchannel_id:CREATE_DM 返回的私信频道 ID
注意事项:
- 无法私信已关闭私信或已屏蔽机器人的用户
- 如果私信频道已存在,CREATE_DM 会返回现有频道
3. 管理角色
何时使用:用户想要创建、分配或移除角色
工具序列:
DISCORDBOT_CREATE_GUILD_ROLE- 创建新角色 [可选]DISCORDBOT_ADD_GUILD_MEMBER_ROLE- 为成员分配角色 [可选]DISCORDBOT_DELETE_GUILD_ROLE- 删除角色 [可选]DISCORDBOT_GET_GUILD_MEMBER- 获取成员详情 [可选]DISCORDBOT_UPDATE_GUILD_MEMBER- 更新成员(角色、昵称等)[可选]
关键参数:
guild_id:服务器 snowflake IDuser_id:用户 snowflake IDrole_id:角色 snowflake IDname:角色名称permissions:位运算权限值color:RGB 颜色整数值
注意事项:
- 角色分配需要 MANAGE_ROLES 权限
- 目标角色必须在层级上低于机器人的最高角色
- DELETE 会永久移除所有成员的该角色
4. 管理 Webhook
何时使用:用户想要创建或使用 webhook 进行外部集成
工具序列:
DISCORDBOT_GET_GUILD_WEBHOOKS/DISCORDBOT_LIST_CHANNEL_WEBHOOKS- 列出 webhook [可选]DISCORDBOT_CREATE_WEBHOOK- 创建新 webhook [可选]DISCORDBOT_EXECUTE_WEBHOOK- 通过 webhook 发送消息 [可选]DISCORDBOT_UPDATE_WEBHOOK- 更新 webhook 设置 [可选]
关键参数:
webhook_id:Webhook IDwebhook_token:Webhook 密钥令牌channel_id:创建 webhook 的频道name:Webhook 名称content/embeds:执行时的消息内容
注意事项:
- Webhook 令牌是机密;请安全处理
- Webhook 可以在每条消息中使用自定义用户名和头像发布
- 创建需要 MANAGE_WEBHOOKS 权限
5. 管理反应
何时使用:用户想要查看或管理消息反应
工具序列:
DISCORDBOT_LIST_MESSAGE_REACTIONS_BY_EMOJI- 列出已反应的用户 [可选]DISCORDBOT_DELETE_ALL_MESSAGE_REACTIONS- 移除所有反应 [可选]DISCORDBOT_DELETE_ALL_MESSAGE_REACTIONS_BY_EMOJI- 移除特定表情反应 [可选]DISCORDBOT_DELETE_USER_MESSAGE_REACTION- 移除特定用户的反应 [可选]
关键参数:
channel_id:频道 IDmessage_id:消息 snowflake IDemoji_name:URL 编码的表情或自定义表情的name:id格式user_id:用于移除特定反应的用户 ID
注意事项:
- Unicode 表情必须进行 URL 编码(例如 '%F0%9F%91%8D' 表示点赞)
- 自定义表情使用
name:id格式 - DELETE_ALL 需要 MANAGE_MESSAGES 权限
常见模式
Snowflake ID
Discord 对所有实体使用 snowflake ID(以字符串表示的 64 位整数):
- 服务器、频道、用户、角色、消息、webhook
权限位字段
权限使用位运算 OR 组合:
- SEND_MESSAGES = 0x800
- MANAGE_ROLES = 0x10000000
- MANAGE_MESSAGES = 0x2000
- ADMINISTRATOR = 0x8
分页
- 大多数列表端点支持
limit、before、after参数 - 消息:每次请求最多 100 条
- 反应:每次请求最多 100 条,使用
after进行分页
已知注意事项
机器人令牌 vs 用户令牌:
discordbot工具包使用机器人令牌;discord使用用户 OAuth- 自动化操作首选机器人操作
速率限制:
- Discord 强制执行按路由的速率限制
- 在 429 响应时遵守
Retry-After响应头
快速参考
| 任务 | 工具标识 | 关键参数 |
|---|---|---|
| 列出服务器 | DISCORD_LIST_MY_GUILDS | (无) |
| 列出频道 | DISCORDBOT_LIST_GUILD_CHANNELS | guild_id |
| 发送消息 | DISCORDBOT_CREATE_MESSAGE | channel_id, content |
| 编辑消息 | DISCORDBOT_UPDATE_MESSAGE | channel_id, message_id |
| 获取消息 | DISCORDBOT_LIST_MESSAGES | channel_id, limit |
| 创建私信 | DISCORDBOT_CREATE_DM | recipient_id |
| 创建角色 | DISCORDBOT_CREATE_GUILD_ROLE | guild_id, name |
| 分配角色 | DISCORDBOT_ADD_GUILD_MEMBER_ROLE | guild_id, user_id, role_id |
| 删除角色 | DISCORDBOT_DELETE_GUILD_ROLE | guild_id, role_id |
| 获取成员 | DISCORDBOT_GET_GUILD_MEMBER | guild_id, user_id |
| 更新成员 | DISCORDBOT_UPDATE_GUILD_MEMBER | guild_id, user_id |
| 获取服务器 | DISCORDBOT_GET_GUILD | guild_id |
| 创建 webhook | DISCORDBOT_CREATE_WEBHOOK | channel_id, name |
| 执行 webhook | DISCORDBOT_EXECUTE_WEBHOOK | webhook_id, webhook_token |
| 列出 webhook | DISCORDBOT_GET_GUILD_WEBHOOKS | guild_id |
| 获取反应 | DISCORDBOT_LIST_MESSAGE_REACTIONS_BY_EMOJI | channel_id, message_id, emoji_name |
| 清除反应 | DISCORDBOT_DELETE_ALL_MESSAGE_REACTIONS | channel_id, message_id |
| 测试认证 | DISCORDBOT_TEST_AUTH | (无) |
| 获取频道 | DISCORDBOT_GET_CHANNEL | channel_id |
何时使用
当用户要求自动化 Discord 任务、发送消息、管理频道、角色、webhook 或反应时使用此技能。
限制
- 仅在任务明确符合上述范围时使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。