Skip to content

About

No description, website, or topics provided.

Resources

Stars

10 stars

Watchers

1 watching

Forks

Repository files navigation

Bilibili 动态 / 直播监控插件

适配 maisaka 的 Bilibili UP 主动态与开播监控插件,支持多群订阅、合并转发防刷屏,以及防风控的随机轮询机制。 有问题请去插件仓库提issue

注意!不要使用独立的 Napcat_Adapter!请去插件市场安装 Napcat_Adapter 适配器!!!

✨ 功能特性

📢 动态推送

  • 实时监控 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 编码,直接粘贴即可,插件会自动解码。

Cookie 字段说明

字段 必填 说明
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 由插件自动维护,请勿手动修改。


⚠️ 注意事项

  1. 风控建议:尽管已加入抖动机制,仍建议 poll_interval ≥ 60,避免 API 被封禁。
  2. 凭证维护:插件内置每 6 小时自动刷新凭证(需要 ac_time_value);若 Cookie 彻底失效,需手动更新配置。
  3. 首次订阅:新订阅 UID 时,第一次轮询会以当前最新动态作为基准,不推送历史动态;粉丝里程碑同理。
  4. 请勿手动修改 history.json 和 subscriptions.json,否则可能导致重复推送或订阅异常。
  5. 固定订阅 vs 动态订阅:
    • 配置文件中的订阅为「固定订阅」,不可通过指令移除。
    • 通过 /B动态 add 添加的为「动态订阅」,可通过 /B动态 remove 移除。
  6. 订阅写法:[subscriptions].users 现已改为字符串数组,每行一组,格式 UID => 群号1, 群号2;旧版的 { uid = "...", groups = [...] } 写法已不再支持,请按新格式迁移。

📜 License

MIT

About

No description, website, or topics provided.

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages