来提交你的插件吧!
有疑问?来看看呗!

插件详情

astrbot_plugin_recall_cancel logo

astrbot_plugin_recall_cancel

“你撤回了我就当你没发过”,当用户撤回触发LLM回应的消息时,如果LLM回复还未发送则取消发送。防止用户发错消息撤回后机器人仍然回复的情况,提升用户体验并避免资源浪费。

消息管理
撤回处理
LLM控制
用户体验
自动化
QQ机器人
OneBot
版本v1.2.0
作者木有知
Star7
更新2025/12/29

插件说明

AstrBot 消息撤回取消插件

作者: 木有知
仓库: https://github.com/muyouzhi6/astrbot_plugin_recall_cancel
版本: v1.2.0
标签: 消息管理 | 撤回处理 | LLM控制 | 用户体验 | 自动化

📋 功能说明

当用户撤回触发 LLM 回应的消息时,如果 LLM 的回复还没发送出去,插件会自动取消发送。

解决场景:

  • 🚫 用户发错消息后撤回,但机器人仍然回复
  • 🛡️ 防止恶意用户发送大量消息后撤回导致的资源浪费
  • ⚡ 提升用户体验,避免无效回复

🔧 工作原理

  1. 📝 跟踪 LLM 请求:监听 LLM 请求开始,记录消息 ID 和相关信息
  2. 👂 监听撤回事件:实时监听 QQ 平台的消息撤回通知事件
  3. ❌ 智能取消:检测到原消息被撤回时,如果 LLM 响应还未发送则取消
  4. 🧹 自动清理:定期清理过期记录,防止内存泄漏

🔌 支持平台

平台 状态 说明
QQ (OneBot V11/NapCat) ✅ 支持 完整支持群聊和私聊撤回检测
Telegram ❌ 不支持 Telegram 撤回消息后无法获得原消息 ID
QQ 官方 ❌ 不支持 官方 API 暂不提供撤回事件通知

⚙️ 配置

本插件开箱即用,无需任何配置,安装后自动生效。

🧪 调试与测试

状态查询指令

  • 发送 recall_status 或 撤回状态:查看插件运行状态
  • 显示信息:待处理 LLM 请求数量、已撤回消息数量、清理任务状态

功能测试步骤

  1. 环境确认:确保 QQ 客户端(如 NapCat)已正确连接
  2. 触发测试:发送能触发 LLM 回复的消息(如 你好)
  3. 执行撤回:在 LLM 回复发送前快速撤回原消息
  4. 观察结果:确认 AstrBot 停止发送回复
  5. 状态验证:使用 recall_status 查看插件工作状态

🔬 技术细节

实现架构

  • 事件钩子:使用 on_llm_request 和 on_llm_response 跟踪 LLM 处理流程
  • 平台适配:专门处理 aiocqhttp 平台的 OneBot V11 撤回事件
  • 多层检测:在响应、装饰、发送多个阶段进行撤回检查
  • 高优先级:确保撤回事件能及时处理,避免竞争条件

性能优化

  • 内存管理:定期清理过期记录(LLM 请求 10 分钟,撤回记录 1000 条限制)
  • 异步处理:所有操作均为异步,不阻塞主流程
  • 智能清理:仅在必要时进行清理,减少系统开销

📚 版本历史

v1.0.0 (2025-09-03)

  • 🎉 初始发布:完整的消息撤回取消功能
  • ✅ QQ 支持:支持 OneBot V11 标准的群聊和私聊撤回检测
  • 🔄 智能取消:多层检测机制确保 LLM 响应准确取消
  • 🧹 自动清理:内置内存管理,防止长期运行内存泄漏
  • 🛠️ 调试功能:提供状态查询指令便于故障排查

💡 提示:插件遵循 AstrBot 开发规范,代码经过严格测试,可放心使用。

AstrBot LogoAstrBot 插件市场社区

AstrBot 插件市场 是一个开放的插件分享平台,欢迎开发者们贡献优质插件。本站致力于为 AstrBot 用户提供高质量扩展,帮助您快速找到喜欢的插件,并鼓励社区伙伴分享使用心得、提出改进建议。

相关链接

官方项目主站 官方插件市场 官方项目仓库 侧边展示主站

开发相关

插件开发文档 快速提交插件 官方项目文档

© 2026 AstrBot 插件市场 Made with by Community