Metadata-Version: 2.4
Name: nonebot-plugin-bilidyn
Version: 0.3.0
Summary: NoneBot2 B站动态订阅推送插件
Author: Misty02600
Author-email: Misty02600 <Misty02600@gmail.com>
License-Expression: MIT
License-File: LICENSE
Requires-Dist: bilibili-api-python>=17.0.0,<18.0.0
Requires-Dist: boltons>=25.0.0
Requires-Dist: msgspec>=0.19.0
Requires-Dist: nonebot-plugin-alconna>=0.60.0,<1.0.0
Requires-Dist: nonebot-plugin-apscheduler>=0.5.0,<1.0.0
Requires-Dist: nonebot-plugin-htmlrender>=0.3.0,<0.7.0
Requires-Dist: nonebot-plugin-localstore>=0.7.4,<1.0.0
Requires-Dist: nonebot-plugin-uniref>=0.4.1,<0.5.0
Requires-Dist: nonebot-plugin-uninfo>=0.7.0,<1.0.0
Requires-Dist: nonebot2>=2.4.2,<3.0.0
Requires-Dist: httpx
Requires-Dist: rapidfuzz>=3.14.3,<4.0.0
Requires-Python: >=3.11
Project-URL: Homepage, https://github.com/Misty02600/nonebot-plugin-bilidyn
Project-URL: Issues, https://github.com/Misty02600/nonebot-plugin-bilidyn/issues
Project-URL: Repository, https://github.com/Misty02600/nonebot-plugin-bilidyn.git
Description-Content-Type: text/markdown

<div align="center">
    <a href="https://v2.nonebot.dev/store">
    <img src="https://github.com/Misty02600/nonebot-plugin-template/releases/download/assets/NoneBotPlugin.png" width="310" alt="logo"></a>

## ✨ nonebot-plugin-bilidyn ✨
[![LICENSE](https://img.shields.io/github/license/Misty02600/nonebot-plugin-bilidyn.svg)](./LICENSE)
[![python](https://img.shields.io/badge/python-3.11+-blue.svg?logo=python&logoColor=white)](https://www.python.org)

[![uv](https://img.shields.io/badge/package%20manager-uv-black?logo=uv)](https://github.com/astral-sh/uv)
[![ruff](https://img.shields.io/badge/code%20style-ruff-black?logo=ruff)](https://github.com/astral-sh/ruff)

</div>

## 📖 介绍

`nonebot-plugin-bilidyn` 是一个 NoneBot2 B 站动态订阅推送插件，支持订阅 UP 主动态、直播开播通知、二维码登录和主动查询最新动态。

插件当前基于 [bilibili-api-python](https://github.com/Nemo2011/bilibili-api) 异步拉取数据，并使用 [nonebot-plugin-localstore](https://github.com/nonebot/plugin-localstore) 管理缓存和持久化数据。

## 💿 安装

<details open>
<summary>使用 nb-cli 安装</summary>
在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装

    nb plugin install nonebot-plugin-bilidyn --upgrade
使用 **pypi** 源安装

    nb plugin install nonebot-plugin-bilidyn --upgrade -i "https://pypi.org/simple"
使用**清华源**安装

    nb plugin install nonebot-plugin-bilidyn --upgrade -i "https://pypi.tuna.tsinghua.edu.cn/simple"


</details>

<details>
<summary>使用包管理器安装</summary>
在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令

<details open>
<summary>uv</summary>

    uv add nonebot-plugin-bilidyn
安装仓库 main 分支

    uv add git+https://github.com/Misty02600/nonebot-plugin-bilidyn@main
</details>

<details>
<summary>pdm</summary>

    pdm add nonebot-plugin-bilidyn
安装仓库 main 分支

    pdm add git+https://github.com/Misty02600/nonebot-plugin-bilidyn@main
</details>
<details>
<summary>poetry</summary>

    poetry add nonebot-plugin-bilidyn
安装仓库 main 分支

    poetry add git+https://github.com/Misty02600/nonebot-plugin-bilidyn@main
</details>

打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入

    plugins = ["nonebot_plugin_bilidyn"]

</details>

<details>
<summary>使用 nbr 安装(使用 uv 管理依赖可用)</summary>

[nbr](https://github.com/fllesser/nbr) 是一个基于 uv 的 nb-cli，可以方便地管理 nonebot2

    nbr plugin install nonebot-plugin-bilidyn
使用 **pypi** 源安装

    nbr plugin install nonebot-plugin-bilidyn -i "https://pypi.org/simple"
使用**清华源**安装

    nbr plugin install nonebot-plugin-bilidyn -i "https://pypi.tuna.tsinghua.edu.cn/simple"

</details>


## ⚙️ 配置

插件使用 [nonebot_plugin_localstore](https://github.com/nonebot/plugin-localstore) 储存数据和缓存。

推荐使用 `bili login` 进行二维码登录。插件会把登录结果持久化到本地，后续重启会自动复用。

如需调整轮询或推送节奏，可在 NoneBot2 项目的 `.env` 文件中添加下列配置：

| 配置项                             | 必填  |  默认值  | 说明                                                                  |
| :--------------------------------- | :---: | :------: | :-------------------------------------------------------------------- |
| `BILI_CHECK__DYNAMIC_MODE`         |  否   | `per_up` | 动态来源：`per_up` 逐 UP 拉取；`follow_feed` 使用登录账号的聚合关注流 |
| `BILI_CHECK__DYNAMIC_INTERVAL`     |  否   |   `30`   | 动态检测间隔，单位秒                                                  |
| `BILI_CHECK__LIVE_INTERVAL`        |  否   |   `30`   | 直播检测间隔，单位秒                                                  |
| `BILI_CHECK__LOW_SPEED_START`      |  否   |   `1`    | 低频时段起始小时                                                      |
| `BILI_CHECK__LOW_SPEED_END`        |  否   |   `9`    | 低频时段结束小时                                                      |
| `BILI_CHECK__LOW_SPEED_MULTIPLIER` |  否   |   `10`   | 低频时段检测倍率                                                      |
| `BILI_PUSH__PUSH_INTERVAL`         |  否   |  `0.5`   | 连续推送间隔，单位秒                                                  |

`per_up` 逐个拉取 UP 动态。`follow_feed` 会自动关注订阅的 UP，扫码换号后补齐关注，并从关注流筛选推送；没有有效登录凭据时暂停检测。

登录失效时，插件会向最后一次成功登录所在的私聊发送一次提醒。

## 🎉 使用

### 指令表

| 指令                            |        权限        | 说明                                             |
| :------------------------------ | :----------------: | :----------------------------------------------- |
| `bili` / `bili help`            |         无         | 查看帮助文本                                     |
| `bili sub <UID>`                | 私聊 / 管理 / 超管 | 为当前会话订阅指定 UP 主                         |
| `bili unsub <UID / 名称>`       | 私聊 / 管理 / 超管 | 取消当前会话对指定 UP 主的订阅                   |
| `bili list`                     |         无         | 查看当前会话订阅列表                             |
| `bili clear [confirm]`          |        超管        | 扫描当前已失效的群推送配置，并在确认后批量清理   |
| `bili login`                    |     私聊, 超管     | 发起二维码登录，并自动轮询扫码结果               |
| `bili new <UID / 名称> [count]` |         无         | 主动查看某位 UP 主最近动态，默认 1 条，最多 5 条 |


### 🎨 效果图

- 动态卡片
- 直播卡片
