Skip to main content
用存储保存插件状态;用 HTTP 路由把插件变成一个简单处理函数。路由声明写在 manifest headers 中,存储函数直接从 middleware.py 导入。

默认存储

默认存储使用全局 bucket otto,适合保存少量插件状态。
Python 关键字 del 不能作为普通函数名调用。SDK 里保留了 del_ = delete 和运行时兼容别名;新插件请直接使用 delete(...)

bucket 名称规则

bucket 是存储命名空间。名称里的 . 表示子级 bucket,例如 shop.orders 表示 shop 下的 orders。运行时最多允许 3 级 bucket,推荐你也最多使用 3 级,避免权限配置、数据迁移和排查问题时层级过深。
str
必填
bucket 名称。不能为空;用 . 分隔层级;每一段都不能为空;最多 3 级。示例:my_pluginmy_plugin.usersmy_plugin.orders.paid
推荐用 插件名.业务域.状态 命名,例如 card_claim.userscard_claim.inventory.active。如果只是小插件,使用一级 bucket,例如 my_plugin

命名 bucket

命名 bucket 适合把插件状态按插件名或业务域隔离。bucket 负责隔离命名空间,key 负责定位具体记录。
Sender 也提供同名 bucket 方法,适合想把调用绑定到当前会话上下文的场景。

HTTP 路由请求

在 manifest 中声明 routermethod 后,可以用 Sender 读取请求并响应。
Python 当前已经支持 getRouter() / getMethod() / getRouterData() 兼容别名。正文档仍推荐 getRouterPath()getRouterMethod()getRouterBody(),因为它们更准确地区分路径、方法和解析后的请求体。
顶层函数 getRouter()getMethod()getRouterData() 会用当前 getSenderID() 创建默认 Sender,适合旧插件迁移;新插件优先显式创建 Sender

下一步

最后修改于 2026年6月3日