Files
Estrella Pan 396a92787e fix: 回滚后再升级时重新备份 3.x 数据库,单个下载器重命名出错不拖垮其它实例
- version_check: 数据库仍是 3.x 结构(schema ≤ 24)时备份并原子替换 data.db.v3.bak,
  回滚 3.3 后再升级也会刷新备份;只留一份,迁移失败的重启循环不会堆积
- rename_all: 实例内的异常记录后继续下一个实例
- 文档:回滚步骤删除 data.db-wal/-shm、还原编号最大的配置备份;schema v28
- 插件 skill 改用 httpx2、补全示例列表;示例 README 先安装 SDK 轮子再测试
- 准备 4.0.0-beta.9
2026-10-24 11:00:56 +02:00
..

Slack 通知(示例插件)

把通知发到 Slack 的 Incoming Webhook。演示:

  • @provider(points.NOTIFIER, id="slack"):返回 NotifierFactory
  • Webhook 地址含密钥,用 secret_field 声明,读取配置时只返回掩码
  • 只有 HTTP 2xx 且响应体为 ok 才算成功
  • 契约套件 NotifierContract

消息格式

请求体为 {"text": "*标题*\n正文"}(Slack 的 mrkdwn,&、<、> 已转义)。配置了 notification.base_url 时单集通知带海报:再加 blocks(一段文字和一张图片),text 作为手机通知的摘要。海报地址必须能被 Slack 访问;Slack 取不到图片时会以 HTTP 400 invalid_blocks 拒绝整条消息,插件只在这种情况下去掉 blocks 只发文字再试一次;令牌失效、限流等其它失败不重试,避免重复发送。

安装

cp -r examples/plugins/slack-notifier config/plugins/local/

在 Slack 中创建 App,开启 Incoming Webhooks 并添加到频道,复制 Webhook 地址。在「设置 → 插件」中开启「允许未签名插件」,启用并填写地址;再到「设置 → 通知 → 添加渠道」选择类型 slack。

测试

cd examples/plugins/slack-notifier
uv add ../autobangumi_sdk-0.6.0-py3-none-any.whl   # SDK 不在 PyPI:换成下载的轮子的实际路径
uv run pytest

对应 issue:#277