Discord聊天
通过message工具在Discord频道实现消息发送、回复、搜索、读取、回应、编辑与删除,支持线程回复和消息管理。
天轰穿
@thcjp
Install
$ openclaw skills install @thcjp/discord-chat核心功能: 本技能提供中文交互、化工作流场景等能力。
Discord Chat
输入规范
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | Discord Chat处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
专业版增值服务
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 多渠道消息批量发送 | 不支持 | 支持 |
| 消息模板与变量注入 | 不支持 | 支持 |
| 送达状态实时回调 | 不支持 | 支持 |
| 通信记录归档与检索 | 不支持 | 支持 |
| 消息频控与智能排队 | 不支持 | 支持 |
能力总览
消息发送
message action=send channel=discord target="#channel-name" message="你的消息"
message action=send channel=discord target="1234567890" message="按 ID 发送"
target支持带#前缀的频道名或裸频道 ID.- 多链接用
<>包裹抑制预览:<https://example.com>. - 支持消息特效:
effect=balloons、effectId=invisible-ink. - 不支持 markdown 表格,改用项目符号列表.
线程回复
message action=send channel=discord target="#channel-name" message="回复内容" replyTo="message-id"
replyTo以指定消息 ID 创建线程式回复.
全文搜索
message action=search channel=discord channelId="1234567890" query="搜索词" limit=50
query:搜索关键词.authorId:按作者过滤.before/after/around:以消息 ID 分页.limit:最大返回数,默认 25.
历史读取
message action=read channel=discord target="#channel-name" limit=20
表情回应
message action=react channel=discord messageId="1234567890" emoji="👍"
消息编辑与删除
message action=edit channel=discord messageId="1234567890" message="更新后的文本"
message action=delete channel=discord messageId="1234567890"
频道管理
message action=channel-list channel=discord guildId="server-id"
message action=channel-info channel=discord channelId="1234567890"
典型场景
场景一:社区答疑机器人
- 输入:用户提问"如何配置 webhook",频道
#support. - 输出:机器人
action=search检索历史中已有答案,action=send replyTo回复提问消息并附上历史解答链接.
场景二:通知广播
- 输入:公告文本"今晚 20:00 维护",频道
#announcements. - 输出:
action=send target="#announcements"发送公告,action=react emoji="📌"标记,并通过channel-list同步到子公告频道.
场景三:历史内容检索归档
- 输入:服务器
guildId、关键词"release notes"、时间范围. - 输出:跨频道
action=search分页拉取匹配消息,提取作者、时间、内容写入本地归档文件.
使用指南
- 确认配置:Discord bot 已在 gateway config 中配置,
channel=discord能正确路由到 Discord 插件. - 定位目标频道:优先用
target="#频道名"(更可读);频道名含特殊字符或需精确控制时用频道 ID。可用channel-list查询服务器频道清单. - 检索先行:答疑或归档场景先
action=search查历史,避免重复提问;读取近况用action=read limit=N. - 发送与回复:
action=send发新消息;需关联某条消息用replyTo;纯确认用action=react优于回复. - 维护消息:对已发消息用
action=edit修正内容,过期信息用action=delete清理. - 格式适配:Discord 用项目符号而非表格,链接用
<>抑制预览,短句优于长段落.
案例展示
案例 1:搜索历史并回复
目标:用户在 #support 问"webhook 怎么配",检索历史答案并回复.
message action=search channel=discord channelId="1234567890" query="webhook 配置" limit=10
找到历史解答消息 ID 9988776655,向提问用户回复:
message action=send channel=discord target="#support" message="webhook 配置见 <https://docs.example.com/webhook>,之前也有讨论" replyTo="1122334455"
结果:提问消息下出现线程式回复,附带文档链接与历史讨论引用.
案例 2:多频道通知广播
目标:向 #announcements 和 #general 同步维护通知.
message action=send channel=discord target="#announcements" message="**今晚 20:00-22:00 维护**,期间服务暂停"
返回消息 ID 4455667788 后标记:
message action=react channel=discord messageId="4455667788" emoji="📌"
message action=send channel=discord target="#general" message="维护通知已发 #announcements,请提前知悉"
结果:主公告频道发布并置顶标记,通用频道同步提醒.
案例 3:按作者分页检索归档
目标:检索 #dev-log 中作者 userId=444 在某消息之后的所有发布,每页 50 条.
message action=search channel=discord channelId="555000555000" authorId="444" after="777888999000" limit=50
翻页时将上一页最后一条消息 ID 作为新的 after 值继续检索,直至返回为空,提取内容写入 file:///tmp/dev-log-archive.md.
异常处置
| 错误场景 | 触发原因 | 处理方式 |
|---|---|---|
| 频道名找不到 | target="#name" 拼写错误或机器人不在该服务器 | 用 channel-list guildId 核对频道名;确认机器人已加入目标服务器 |
replyTo 无效 | 指定的 message-id 不存在或已删除 | 先 action=read 确认消息存在;私信消息无法跨频道回复 |
| 搜索无结果 | query 过于具体或该频道未开启搜索权限 | 放宽关键词;改用 authorId 或 before/after 分页缩小范围;确认服务器搜索权限 |
editMessage 失败 | 目标消息非机器人发送,或超过编辑时限 | Discord 仅允许编辑自己发送的消息;超时后改用 action=send 补发更正 |
| 删除被拒 | 机器人缺少 MANAGE_MESSAGES 权限或目标非自己发送 | 由服务器管理员授予 MANAGE_MESSAGES;非自身消息需相应权限 |
| 特效无效 | effect=balloons 在非支持频道或未开通 | 消息特效仅部分频道/服务器可用,改用纯文本发送 |
| 搜索分页丢失 | 未用上一页最后消息 ID 作为 after | 严格链式分页:每次取末条 ID 作为下次 after,不可跳跃 |
| 频道 ID 与名称混用导致歧义 | target 同时含 # 与纯数字 | 统一规范:用名称带 #,用 ID 则纯数字不带 # |
问答集成
Q1:target 用频道名和频道 ID 有什么区别?
频道名带 # 前缀(如 #general)更可读,适合常用频道;频道 ID(纯数字)更精确,适合频道名含特殊字符或存在重名的场景。两者效果一致,推荐日常用名称、自动化脚本用 ID.
Q2:replyTo 和普通 send 有什么区别?
普通 action=send 在频道发一条独立消息;带 replyTo="消息ID" 会以线程回复的形式挂在指定消息下方,适合答疑和上下文关联。注意 replyTo 的消息必须与 target 在同一频道.
Q3:搜索支持哪些过滤条件?
query(关键词)、authorId(按作者)、before/after/around(以消息 ID 分页)、limit(最大返回数,默认 25)。可组合使用,例如按作者 + 时间范围精确检索.
Q4:为什么我的消息里表格显示成一堆竖线?
Discord 不渲染 markdown 表格,会把 | 列 | 列 | 原样显示。应改用项目符号列表(- 项目)或粗体分组来呈现结构化信息.
Q5:消息特效 effect=balloons 在所有频道都能用吗?
不能。消息特效受服务器 Boost 等级和频道设置约束,部分服务器未开通。特效失效时不会报错但无视觉效果,建议关键通知仍以文本为主.
Q6:如何批量清理某频道的旧消息?
message 工具不提供批量删除接口。可循环 action=search 取目标消息 ID 列表,逐条 action=delete 执行,注意 Discord 速率限制(约每频道每秒限若干次).
错误恢复方案
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| LLM响应超时或无响应 | 网络延迟或模型负载过高 | 请求重试;确认Agent平台LLM服务正常 |
| 输入内容格式不正确 | 用户输入不符合skill预期格式 | 检查输入是否符合skill使用说明中的格式要求,参考示例章节 |
| 执行结果与预期不符 | 指令描述不够明确或上下文不足 | 提供更详细的指令描述,补充必要的上下文信息 |
| 命令执行失败 | 运行环境不满足要求或权限不足 | 确认运行环境符合依赖说明中的要求;检查命令权限设置 |
功能边界
- 所有操作依赖 gateway config 中配置的 Discord bot token,未配置时
channel=discord无法路由. action=edit仅能编辑机器人自己发送的消息,他人消息无法编辑.action=delete删除他人消息需MANAGE_MESSAGES权限,否则只能删自己的.- 消息特效(
effect/effectId)受服务器 Boost 等级约束,并非所有频道可用. - 搜索(
action=search)依赖服务器开启搜索权限,大型服务器可能延迟较高. limit默认 25,搜索与读取均有上限,大量历史需通过before/after链式分页.- markdown 表格不被渲染,结构化内容应改用列表.
- 受 Discord 全局与按频道速率限制,高频操作会被 429 限流,需自行节流.
安装与配置
运行环境
- Agent平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
- 操作系统: Windows / macOS / Linux
依赖项
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
API Key 配置
需要配置对应API Key,详见上文环境配置章节
可用性分类
- 分类: MD+EXEC()
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
诊断与修复
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| 消息发送失败 | 网络连接不稳定或Discord服务器维护 | 检查网络连接,确认Discord服务器状态 | 重试发送,如果问题持续,检查网络连接或等待服务器恢复 |
| 消息搜索无结果 | 关键词拼写错误或搜索权限不足 | 仔细检查关键词拼写,确认机器人拥有搜索权限 | 修正关键词,确保机器人权限配置正确 |
| 消息编辑失败 | 消息不是由机器人发送 | 确认消息发送者,如果非机器人发送,无法编辑 | 发送新消息替换原有内容 |
| 消息删除失败 | 机器人权限不足或消息不是由机器人发送 | 确认机器人权限,如果消息非机器人发送,无法删除 | 由服务器管理员调整权限或发送新消息替代 |
| 消息特效无效 | 服务器不支持特效或频道设置限制 | 检查服务器设置和频道权限 | 联系服务器管理员调整设置或使用纯文本消息 |
安全规范
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 使用环境变量存储API密钥,避免代码仓库泄露 | 定期检查代码仓库,确保API密钥未泄露 |
| 机器人权限滥用 | 中 | 限制机器人权限,仅授予必要权限 | 定期审计机器人权限,确保无滥用 |
| 消息内容敏感信息泄露 | 中 | 对敏感信息进行脱敏处理 | 定期检查消息内容,确保敏感信息未泄露 |
| 搜索结果误导 | 低 | 限制搜索关键词,避免误导性搜索结果 | 定期检查搜索结果,确保无误导性内容 |
| 速率限制绕过 | 低 | 遵守Discord速率限制,避免被限流 | 监控操作日志,确保操作未触发速率限制 |
| 恶意代码注入 | 高 | 对输入数据进行验证和过滤,防止恶意代码注入 | 定期进行安全扫描,确保无恶意代码 |
创新特色
| 场景 | 效率提升量化分析 |
|---|---|
| 社区答疑 | 通过自动化搜索历史答案,将平均响应时间从5分钟缩短到30秒 |
| 通知广播 | 通过自动化发送通知,将平均通知时间从10分钟缩短到2分钟 |
| 历史内容检索 | 通过自动化检索历史消息,将平均检索时间从30分钟缩短到5分钟 |
| 频道管理 | 通过自动化频道管理,将平均管理时间从1小时缩短到10分钟 |
| 对比项 | 差异化对比 |
|---|---|
| 自动化程度 | 相比手动操作,自动化程度提高80% |
| 操作效率 | 相比手动操作,操作效率提高50% |
| 精确度 | 自动化操作精确度更高,减少人为错误 |
| 可扩展性 | 自动化系统易于扩展,适应不同场景需求 |
| 成本效益 | 自动化系统降低人力成本,提高工作效率 |
功能介绍
- 自动化执行: 通过message工具在Discord频道发消息、回复、搜索、读取、回应、编辑与删除。discord-chat 通过 m
- 文件处理: 支持多种文件格式的读取、解析和写入操作
- API集成: 通过标准化接口调用外部服务并处理响应
- 命令执行: 在安全沙箱中执行系统命令并收集结果
- 信息检索: 快速搜索和过滤目标数据
技术支持
Q1: Discord聊天支持哪些输入格式?
A1: 通过message工具在Discord频道发消息、回复、搜索、读取、回应、编辑与删除。discord-chat 通过 message 工具与 Discord。支持文本指令和结构化参数输入,具体格式参考使用流程章节。
Q2: 需要配置API Key吗?
A2: 是的,部分功能需要配置对应平台的API Key。请在依赖说明章节查看具体要求,并通过环境变量安全配置。
Q3: 命令行执行失败怎么办?
A3: 检查命令参数是否正确,确认运行环境支持exec能力。如遇权限问题,请参照错误处理章节排查。
效率指标
| 操作场景 | 手动耗时 | 自动化耗时 | 效率提升 |
|---|---|---|---|
| 文件解析与提取 | 5-10分钟/个 | <5秒/个 | 60-120x |
| 批量文件处理(100个) | 8-16小时 | <5分钟 | 96-192x |
| API调用与响应解析 | 2-3分钟/次 | <1秒/次 | 120-180x |
| 多接口数据聚合 | 15-30分钟 | <10秒 | 90-180x |
| 命令执行与结果收集 | 3-5分钟/次 | <2秒/次 | 90-150x |
| 重复任务批量执行 | 因任务而异 | 线性缩减 | 5-50x |
| 错误排查与修复 | 10-30分钟 | <30秒 | 20-60x |
优势分析
| 对比维度 | Discord聊天 | 传统手动方式 | 通用脚本工具 |
|---|---|---|---|
| 自动化程度 | 全流程自动 | 完全手动 | 部分自动 |
| 错误处理 | 内置错误恢复 | 依赖人工经验 | 基本try-catch |
| 可复用性 | 参数化配置 | 一次性脚本 | 模板化 |
| 安全合规 | 内置安全检查 | 无安全保障 | 无安全保障 |
| 适用场景 | 通过message工具在Discord频道发消息、回复、搜索、读取、回应、编辑与 | 通用场景 | 通用场景 |
Discord聊天通用排查步骤
- 检查输入参数: 确认所有必填参数已提供且格式正确
- 查看日志输出: 定位具体错误行和异常类型
- 验证环境配置: 确认依赖库版本和运行环境满足要求
- 逐步调试: 缩小问题范围,隔离故障模块
依赖说明
运行环境
- Agent 平台: 支持SKILL.md的任意AI Agent
- 操作系统: Windows / macOS / Linux
可用性分类
- 分类: MD(纯Markdown指令,通过自然语言驱动Agent完成操作)
- 说明: 基于Markdown的AI Skill,通过自然语言指令驱动Agent完成操作。
Top skills in this category
Humanizer
@biostartechnologyRemove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
Slack
@steipeteUse when you need to control Slack from Clawdbot via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
PollyReach
@pollyreachPollyReach gives every AI agent a phone number and the ability to get things done over the phone — finding contacts, making calls, and completing tasks. Just...
imap-smtp-email
@gzlicanyiRead and send email via IMAP/SMTP. Check for new/unread messages, fetch content, search mailboxes, mark as read/unread, and send emails with attachments. Supports multiple accounts. Works with any IMAP/SMTP server including Gmail, Outlook, 163.com, vip.163.com, 126.com, vip.126.com, 188.com, and vip
Answer Overflow
@rhyssullivanSearch indexed Discord community discussions via Answer Overflow. Find solutions to coding problems, library issues, and community Q&A that only exist in Discord conversations.