适配 maisaka 的 Bilibili UP 主动态与开播监控插件,支持多群订阅、合并转发防刷屏,以及防风控的随机轮询机制。 有问题请去插件仓库提issue
- 实时监控 UP 主发布的 图文动态、视频投稿、专栏文章 等。
- 支持 转发动态,自动显示原作者及原始内容。
- 智能折叠:当图片数量超过阈值(默认 3 张)时,自动打包为 合并转发消息,防止刷屏。
- 置顶识别:可识别并推送新增置顶动态,旧置顶不会重复推送。
- 过期过滤:超过
max_dynamic_age的旧动态不再推送(避免重启后推送积压消息)。 - 开奖过滤:可自动丢弃开奖类动态(该功能待优化)。
- 开播提醒:包含封面、标题、跳转链接和开播时间。
- 下播提醒:自动统计本次直播时长。
- 自动记录粉丝数突破 1 万 / 10 万 / 100 万 等里程碑并推送。
- 支持
/B粉丝 <UID>手动查询当前粉丝数与下一个里程碑差距。
- 支持 轮询抖动,模拟真人查询行为,降低被风控概率。
- 内置 凭证自动刷新(每 6 小时检测一次,需配置
ac_time_value)。
- 支持通过群聊指令进行 订阅增删查,管理员限定。
pip install bilibili-api-python aiohttp插件首次运行会自动生成配置模板。推荐通过 WebUI 直接编辑;如需手改 config.toml,参考下面的字段说明。
# 1. 插件开关
[plugin]
enabled = true # 插件总开关
# 2. Cookie 凭证
# 获取方式:浏览器登录 B 站 → F12 → Application → Cookies → bilibili.com
[credential]
sessdata = "" # 必填:SESSDATA
bili_jct = "" # 必填:bili_jct(32 位 hex)
buvid3 = "" # 选填:部分接口需要,填上更稳
dedeuserid = "" # 选填:你的 B 站 UID
ac_time_value = "" # 选填:配置后插件可自动刷新 Cookie,避免过期
# 3. 运行参数
[settings]
poll_interval = 120 # 轮询基准间隔(秒),建议 ≥ 60
poll_jitter = 10 # 轮询抖动秒数,实际间隔 = base ± jitter
admin_qqs = ["114514"] # 管理员 QQ 号列表
max_images = 3 # 单条动态最大同消息图片数,超过则合并转发
ignore_lottery = true # 自动丢弃开奖类动态
max_dynamic_age = 3600 # 动态最大有效时长(秒),过老的不再推送
auto_like = false # 开启后自动点赞新动态(谨慎使用!这玩意儿太容易风控了)
# 4. 订阅列表(每行一组:UID => 群号1, 群号2)
# 支持的分隔符:=> -> : : |
# 群号之间支持:半角逗号 / 全角逗号 / 空格
[subscriptions]
users = [
"114514 => 1919810, 123456",
"36081646 => 12345678",
]💡 如果觉得手动配置
users麻烦,可以留空,进群后用/B动态 add <UID>指令进行订阅。💡
SESSDATA中常见的%2C、%2A等是 URL 编码,直接粘贴即可,插件会自动解码。
| 字段 | 必填 | 说明 |
|---|---|---|
sessdata |
✅ | 登录态核心 Cookie,缺失将无法访问受限接口 |
bili_jct |
✅ | CSRF 校验值,写操作必需 |
buvid3 |
⛔ 选填 | 部分风控接口需要 |
dedeuserid |
⛔ 选填 | 即你的 B 站 UID |
ac_time_value |
⛔ 选填 | 自动刷新 Cookie 所需的凭据,强烈建议填写 |
⚠️ 所有指令仅限 管理员(admin_qqs) 在 群聊 中使用。
| 指令 | 说明 |
|---|---|
/B动态 help |
查看帮助信息 |
/B动态 start |
启动监控 |
/B动态 stop |
停止监控 |
/B动态 status |
查看运行状态及订阅数 |
/B动态 add <UID> |
在当前群订阅指定 UP 主 |
/B动态 remove <UID> |
在当前群移除指定订阅(仅可移除指令添加的) |
/B动态 list |
列出当前群所有订阅 |
/B动态 info <UID> |
查询该 UP 主当前直播状态(极容易风控,不建议使用) |
/B动态 test <UID> |
推送一条测试动态到当前群(很容易风控,请降低使用频率) |
/B粉丝 <UID> |
查询该 UP 主当前粉丝数量(较容易风控,请注意使用频率) |
plugin/
├── __init__.py # 包入口
├── plugin.py # 插件主类与命令注册
├── config.py # 配置模型(pydantic / WebUI schema)
├── monitor.py # 核心监控逻辑(动态 / 直播 / 粉丝)
├── commands.py # /B动态 系列指令实现
├── subscription.py # 订阅管理器(静态 + 动态)
├── utils.py # 工具函数(图片转码、历史持久化等)
├── config.toml # [自动生成] 配置文件
├── history.json # [自动生成] 动态/直播/粉丝历史记录,用于去重
└── subscriptions.json # [自动生成] 指令添加的订阅信息
⚠️ history.json与subscriptions.json由插件自动维护,请勿手动修改。
- 风控建议:尽管已加入抖动机制,仍建议
poll_interval ≥ 60,避免 API 被封禁。 - 凭证维护:插件内置每 6 小时自动刷新凭证(需要
ac_time_value);若 Cookie 彻底失效,需手动更新配置。 - 首次订阅:新订阅 UID 时,第一次轮询会以当前最新动态作为基准,不推送历史动态;粉丝里程碑同理。
- 请勿手动修改
history.json和subscriptions.json,否则可能导致重复推送或订阅异常。 - 固定订阅 vs 动态订阅:
- 配置文件中的订阅为「固定订阅」,不可通过指令移除。
- 通过
/B动态 add添加的为「动态订阅」,可通过/B动态 remove移除。
- 订阅写法:
[subscriptions].users现已改为字符串数组,每行一组,格式UID => 群号1, 群号2;旧版的{ uid = "...", groups = [...] }写法已不再支持,请按新格式迁移。