plugin/scripts/middleware.py 是 Python 普通插件的 SDK。你通过它创建 Sender,再读取当前上下文、回复消息、保存数据、等待输入、处理支付、下载用户上传文件、处理 HTTP 路由、主动推送和管理运行时定时任务。
新插件优先使用
from middleware import Sender, getSenderID。不要在插件里硬编码凭据、端口或 autClaw 内部服务地址。快速开始
Exception,建议在发送网络请求、媒体或文件的流程里捕获异常,并回复可执行提示。
按任务查阅
上下文和基础类型
导入方式、
senderID、返回包装、SendReceipt、MediaItem 和下载返回体。Sender 消息能力
读取用户和会话、匹配参数、回复文本/媒体、撤回、
replyMixed(...)。等待输入和支付
listen(...)、input(...)、waitPay(exitcode, timeout, amount=None) 和金额匹配细节。事件、媒体和文件
getMediaItems()、fileDownload(...)、downloadAdapterFile(...)、getGroupMemberList(...)。存储和路由
默认存储、命名 bucket、HTTP router 请求和响应别名。
主动推送
push(...) / pushImage(...) / pushMixed(...) 的目标、账号选择和返回值。工具、Cron 和群管理
import_module(...)、系统工具、Cron、群邀请/禁言/公告。Python 签名速查
导航内的
.pyi 风格签名,方便 IDE 和 AI 通过 MCP 检索。常用导入
- 使用
Sender处理当前消息、当前路由请求或当前事件。 - 使用顶层函数做全局操作,例如
bucketGet(...)、pushImage(...)、fileDownload(...)。 listen(...)、input(...)和waitPay(...)的业务超时参数使用毫秒。- 对象写入
set(...)/bucketSet(...)前,先手动json.dumps(...)。
推荐模板
与 JavaScript 中间件的实际差异
下表按当前plugin/scripts/middleware.py 和 plugin/scripts/middleware.js 复核:
| 差异点 | JavaScript | Python |
|---|---|---|
| 调用方式 | 大多返回 Promise,需要 await。 | 同步返回,失败抛出 Exception。 |
| 导入方式 | const { Sender } = require('./middleware.js') | from middleware import Sender |
| 默认存储删除 | del(key) | delete(key);也有 del_ 别名,避免使用 Python 关键字 del。 |
| 依赖确保 | importModule(module, versionOrOptions?, manager?) | import_module(module, package="", version="", manager="");当前也保留 importModule 别名。 |
| 路由别名 | sender.getRouter() / getMethod() / getRouterData() 可用。 | 当前同样可用;推荐正文档使用 getRouterPath()、getRouterMethod()、getRouterBody()。 |
getRouterData() | 返回 JSON 字符串。 | 返回 JSON 字符串;需要对象时用 getRouterBody()。 |
Cron 构造 | new Cron() | Cron() 或兼容旧参数 Cron(cronID=None)。 |
| Cron 方法 | getCron(...)、delCron(...)。 | 额外支持 getCronByID(...)、deleteCron(...)。 |
| Python 专属别名 | 无。 | download_adapter_file(...)、get_group_member_list(...)。 |