nonebot-plugin-bilibili 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 nonebot-plugin-bilibili
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,239 @@
1
+ Metadata-Version: 2.4
2
+ Name: nonebot-plugin-bilibili
3
+ Version: 1.0.0
4
+ Summary: Bilibili 动态/直播 订阅推送插件 for NoneBot2
5
+ Author-email: mengbingnaixi <mengbingnaixi@users.noreply.github.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/your/nonebot-plugin-bilibili
8
+ Project-URL: Repository, https://github.com/your/nonebot-plugin-bilibili
9
+ Project-URL: NoneBot Store, https://registry.nonebot.dev/plugin/nonebot-plugin-bilibili
10
+ Keywords: nonebot,bilibili,b站,动态,直播
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Framework :: aiohttp
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Requires-Python: <4.0,>=3.10
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ Requires-Dist: nonebot2[fastapi,httpx,websockets]>=2.5.0
22
+ Requires-Dist: nonebot-adapter-onebot>=2.4.6
23
+ Requires-Dist: nonebot-plugin-htmlrender>=0.6.7
24
+ Requires-Dist: nonebot-plugin-apscheduler>=0.5.0
25
+ Requires-Dist: httpx>=0.27.0
26
+ Requires-Dist: jinja2>=3.0
27
+ Dynamic: license-file
28
+
29
+ # B站通知助手 — NoneBot2 插件
30
+
31
+ 基于 NoneBot2 + OneBot V11 的 Bilibili 动态/直播订阅推送插件。
32
+
33
+ 参考 [bilibili-dynamic-mirai-plugin](https://github.com/Colter23/bilibili-dynamic-mirai-plugin) v3 设计。
34
+
35
+ ## 特性
36
+
37
+ - **动态推送** — 15 秒轮询检测订阅 UP 主的新动态,HTML 渲染为图片推送至群
38
+ - **直播推送** — 实时检测开播/下播状态,推送卡片通知
39
+ - **Web 管理后台** — 浏览器管理订阅、Cookie、模板、字体,无需操作指令
40
+ - **扫码登录** — 支持手机扫码或手动填入 Cookie
41
+ - **@全体 管理** — 六种独立类型(全部/动态/视频/音乐/专栏/直播)
42
+ - **关键词过滤** — 按关键词屏蔽不想接收的动态
43
+ - **自定义模板** — 每群可独立设置动态/视频/直播模板,支持在线编辑上传
44
+ - **分组管理** — 按 UP 主维度展示订阅,支持多群订阅同一 UP 主
45
+ - **私聊管理** — 超级用户私聊可管理任意群
46
+
47
+ ## 安装
48
+
49
+ ### 前置依赖
50
+
51
+ ```
52
+ nonebot2[fastapi,httpx,websockets]>=2.5.0
53
+ nonebot-adapter-onebot>=2.4.6
54
+ nonebot-plugin-htmlrender>=0.6.7
55
+ nonebot-plugin-localstore>=0.7.4
56
+ nonebot-plugin-apscheduler>=0.5.0
57
+ ```
58
+
59
+ ### 安装插件
60
+
61
+ 将 `nonebot_plugin_bilibili` 文件夹复制到项目的插件目录:
62
+
63
+ ```toml
64
+ [tool.nonebot.plugins]
65
+ "@local" = ["nonebot_plugin_bilibili"]
66
+ ```
67
+
68
+ ### 安装依赖
69
+
70
+ ```bash
71
+ pip install qrcode
72
+ playwright install chromium
73
+ ```
74
+
75
+ ## 配置
76
+
77
+ 在 `.env` 或 `.env.prod` 中配置:
78
+
79
+ ```dotenv
80
+ SUPERUSERS=["你的QQ号"]
81
+ HOST=0.0.0.0
82
+
83
+ # Web 后台(可选)
84
+ bili_web_enable=true
85
+ BILI_WEB_PASSWORD=你的管理密码
86
+ ```
87
+
88
+ ## 指令
89
+
90
+ ### 订阅管理
91
+
92
+ | 命令 | 说明 | 权限 |
93
+ |------|------|------|
94
+ | `/bili add <uid> [群号]` | 订阅 UP 主 | 管理员 / 超级用户 |
95
+ | `/bili del <uid> [群号]` | 取消订阅 | 管理员 / 超级用户 |
96
+ | `/bili list [群号]` | 查看本群订阅列表 | 所有人 |
97
+ | `/bili listall` | 查看全部订阅 | 超级用户 |
98
+ | `/bili delall [群号]` | 清除本群所有订阅 | 管理员 |
99
+ | `/bili delallall` | 删除所有订阅 | 超级用户 |
100
+
101
+ ### @全体 管理
102
+
103
+ | 命令 | 说明 |
104
+ |------|------|
105
+ | `/bili atall <类型> on <uid> [群号]` | 开启 @全体 |
106
+ | `/bili atall <类型> off <uid> [群号]` | 关闭 @全体 |
107
+ | `/bili atall list [群号]` | 查看本群配置 |
108
+
109
+ 类型:`all`(全部)/ `dynamic`(动态)/ `video`(视频)/ `music`(音乐)/ `article`(专栏)/ `live`(直播)
110
+
111
+ ### 过滤管理
112
+
113
+ | 命令 | 说明 |
114
+ |------|------|
115
+ | `/bili filter add <keyword>` | 添加过滤词 |
116
+ | `/bili filter del <id/keyword>` | 删除过滤规则 |
117
+ | `/bili filter list` | 查看本群过滤规则 |
118
+
119
+ ### 系统
120
+
121
+ | 命令 | 说明 | 权限 |
122
+ |------|------|------|
123
+ | `/bili login` | 扫码登录 B 站 | 超级用户 |
124
+ | `/bili help` | 显示帮助图片 | 所有人 |
125
+
126
+ ## Web 管理后台
127
+
128
+ 启动后访问 `http://IP:你配置的端口/bili/` 即可进入管理后台。
129
+
130
+ ### 订阅标签页
131
+
132
+ - **添加群** — 输入群号或点击「检测群列表」自动扫描 Bot 加入的所有群
133
+ - **UP 主卡片** — 按 UP 主分组显示,每个 UP 主列出所有订阅该 UP 主的群
134
+ - **@全体 控制** — 每个群的 UP 主条目下方有六种 @全体 开关按钮
135
+ - **屏蔽词** — 每个群可独立设置过滤关键词
136
+ - **模板设置** — 每个群可独立选择动态/视频/直播推送模板
137
+ - **删除群** — 移除群的所有管理数据
138
+
139
+ ### Cookie 标签页
140
+
141
+ - 显示 Cookie 配置状态和绑定 UID
142
+ - 手动填入 Cookie 或扫码登录
143
+
144
+ ### 模板标签页
145
+
146
+ - 以卡片形式显示所有可用模板
147
+ - 点击进入编辑器,修改后保存
148
+ - 上传新的 `.html` 模板文件
149
+ - 点击「预览」渲染模板效果图
150
+
151
+ ### 字体标签页
152
+
153
+ - 设置推送图片使用的字体名称
154
+
155
+ ## 自定义模板
156
+
157
+ 模板使用 Jinja2 + HTML/CSS 渲染,位于 `templates/` 目录。
158
+
159
+ ### 动态模板(dynamic.html)
160
+
161
+ 支持变量:
162
+
163
+ | 变量 | 说明 |
164
+ |------|------|
165
+ | `name` | UP 主名称 |
166
+ | `avatar` | UP 主头像 URL |
167
+ | `pub_time` | 发布时间 (YYYY-MM-DD HH:mm:ss) |
168
+ | `type_text` | 动态类型文字 |
169
+ | `content` | 动态纯文本内容 |
170
+ | `content_html` | 带表情/链接的 HTML 内容 |
171
+ | `images` | 图片 URL 列表 |
172
+ | `media_title` | 视频/专栏标题 |
173
+ | `media_cover` | 视频/专栏封面 URL |
174
+ | `media_link` | 跳转链接 |
175
+ | `media_badge` | 媒体标签(时长等) |
176
+ | `comment_count` | 评论数 |
177
+ | `forward_count` | 转发数 |
178
+ | `like_count` | 点赞数 |
179
+ | `forward_name` | 转发来源 UP 主 |
180
+ | `forward_content` | 转发原内容 |
181
+ | `dynamic_id` | 动态 ID |
182
+
183
+ ### 视频模板(video.html)
184
+
185
+ 专为视频投稿设计,支持封面大图+播放按钮+标题覆盖。
186
+
187
+ ### 直播模板(live.html)
188
+
189
+ | 变量 | 说明 |
190
+ |------|------|
191
+ | `cover` | 直播间封面 URL |
192
+ | `title` | 直播标题 |
193
+ | `name` | 主播名称 |
194
+ | `avatar` | 主播头像 URL |
195
+ | `uid` | 主播 UID |
196
+ | `area` | 直播分区 |
197
+ | `start_time` | 开播时间 |
198
+ | `live_link` | 直播间链接 |
199
+
200
+ ## 数据存储
201
+
202
+ 项目本地目录 `data/bilibili/`:
203
+
204
+ ```
205
+ 项目根/data/bilibili/
206
+ ├── cookie.json # B 站 Cookie + UID
207
+ ├── subscribers.json # 订阅数据(群、UP主、@全体、过滤、模板)
208
+ └── users.json # UP 主名称缓存
209
+ ```
210
+
211
+ 可通过 `.env` 中 `bilibili_data_dir` 自定义路径:
212
+
213
+ ```dotenv
214
+ bilibili_data_dir=/自定义/路径/data/bilibili
215
+ ```
216
+
217
+ ## 权限说明
218
+
219
+ | 角色 | 群聊 | 私聊 |
220
+ |------|------|------|
221
+ | 普通成员 | 仅 `/bili list` | 不回复 |
222
+ | 群管理员/群主 | 全部管理命令 | 不回复 |
223
+ | 超级用户 | 全部命令 | 全部命令(加 `-群号` 管理) |
224
+
225
+ ## 技术栈
226
+
227
+ - **框架**: NoneBot2 + OneBot V11
228
+ - **命令**: `on_command`
229
+ - **定时任务**: APScheduler(15 秒间隔)
230
+ - **图片渲染**: Playwright(htmlrender)
231
+ - **数据存储**: JSON 文件
232
+ - **Web 后台**: FastAPI
233
+ - **B 站 API**: WBI 签名 + Cookie 认证
234
+
235
+ ## 参考
236
+
237
+ - [bilibili-dynamic-mirai-plugin](https://github.com/Colter23/bilibili-dynamic-mirai-plugin)
238
+ - [bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect)
239
+ - [NoneBot2](https://nonebot.dev/)
@@ -0,0 +1,211 @@
1
+ # B站通知助手 — NoneBot2 插件
2
+
3
+ 基于 NoneBot2 + OneBot V11 的 Bilibili 动态/直播订阅推送插件。
4
+
5
+ 参考 [bilibili-dynamic-mirai-plugin](https://github.com/Colter23/bilibili-dynamic-mirai-plugin) v3 设计。
6
+
7
+ ## 特性
8
+
9
+ - **动态推送** — 15 秒轮询检测订阅 UP 主的新动态,HTML 渲染为图片推送至群
10
+ - **直播推送** — 实时检测开播/下播状态,推送卡片通知
11
+ - **Web 管理后台** — 浏览器管理订阅、Cookie、模板、字体,无需操作指令
12
+ - **扫码登录** — 支持手机扫码或手动填入 Cookie
13
+ - **@全体 管理** — 六种独立类型(全部/动态/视频/音乐/专栏/直播)
14
+ - **关键词过滤** — 按关键词屏蔽不想接收的动态
15
+ - **自定义模板** — 每群可独立设置动态/视频/直播模板,支持在线编辑上传
16
+ - **分组管理** — 按 UP 主维度展示订阅,支持多群订阅同一 UP 主
17
+ - **私聊管理** — 超级用户私聊可管理任意群
18
+
19
+ ## 安装
20
+
21
+ ### 前置依赖
22
+
23
+ ```
24
+ nonebot2[fastapi,httpx,websockets]>=2.5.0
25
+ nonebot-adapter-onebot>=2.4.6
26
+ nonebot-plugin-htmlrender>=0.6.7
27
+ nonebot-plugin-localstore>=0.7.4
28
+ nonebot-plugin-apscheduler>=0.5.0
29
+ ```
30
+
31
+ ### 安装插件
32
+
33
+ 将 `nonebot_plugin_bilibili` 文件夹复制到项目的插件目录:
34
+
35
+ ```toml
36
+ [tool.nonebot.plugins]
37
+ "@local" = ["nonebot_plugin_bilibili"]
38
+ ```
39
+
40
+ ### 安装依赖
41
+
42
+ ```bash
43
+ pip install qrcode
44
+ playwright install chromium
45
+ ```
46
+
47
+ ## 配置
48
+
49
+ 在 `.env` 或 `.env.prod` 中配置:
50
+
51
+ ```dotenv
52
+ SUPERUSERS=["你的QQ号"]
53
+ HOST=0.0.0.0
54
+
55
+ # Web 后台(可选)
56
+ bili_web_enable=true
57
+ BILI_WEB_PASSWORD=你的管理密码
58
+ ```
59
+
60
+ ## 指令
61
+
62
+ ### 订阅管理
63
+
64
+ | 命令 | 说明 | 权限 |
65
+ |------|------|------|
66
+ | `/bili add <uid> [群号]` | 订阅 UP 主 | 管理员 / 超级用户 |
67
+ | `/bili del <uid> [群号]` | 取消订阅 | 管理员 / 超级用户 |
68
+ | `/bili list [群号]` | 查看本群订阅列表 | 所有人 |
69
+ | `/bili listall` | 查看全部订阅 | 超级用户 |
70
+ | `/bili delall [群号]` | 清除本群所有订阅 | 管理员 |
71
+ | `/bili delallall` | 删除所有订阅 | 超级用户 |
72
+
73
+ ### @全体 管理
74
+
75
+ | 命令 | 说明 |
76
+ |------|------|
77
+ | `/bili atall <类型> on <uid> [群号]` | 开启 @全体 |
78
+ | `/bili atall <类型> off <uid> [群号]` | 关闭 @全体 |
79
+ | `/bili atall list [群号]` | 查看本群配置 |
80
+
81
+ 类型:`all`(全部)/ `dynamic`(动态)/ `video`(视频)/ `music`(音乐)/ `article`(专栏)/ `live`(直播)
82
+
83
+ ### 过滤管理
84
+
85
+ | 命令 | 说明 |
86
+ |------|------|
87
+ | `/bili filter add <keyword>` | 添加过滤词 |
88
+ | `/bili filter del <id/keyword>` | 删除过滤规则 |
89
+ | `/bili filter list` | 查看本群过滤规则 |
90
+
91
+ ### 系统
92
+
93
+ | 命令 | 说明 | 权限 |
94
+ |------|------|------|
95
+ | `/bili login` | 扫码登录 B 站 | 超级用户 |
96
+ | `/bili help` | 显示帮助图片 | 所有人 |
97
+
98
+ ## Web 管理后台
99
+
100
+ 启动后访问 `http://IP:你配置的端口/bili/` 即可进入管理后台。
101
+
102
+ ### 订阅标签页
103
+
104
+ - **添加群** — 输入群号或点击「检测群列表」自动扫描 Bot 加入的所有群
105
+ - **UP 主卡片** — 按 UP 主分组显示,每个 UP 主列出所有订阅该 UP 主的群
106
+ - **@全体 控制** — 每个群的 UP 主条目下方有六种 @全体 开关按钮
107
+ - **屏蔽词** — 每个群可独立设置过滤关键词
108
+ - **模板设置** — 每个群可独立选择动态/视频/直播推送模板
109
+ - **删除群** — 移除群的所有管理数据
110
+
111
+ ### Cookie 标签页
112
+
113
+ - 显示 Cookie 配置状态和绑定 UID
114
+ - 手动填入 Cookie 或扫码登录
115
+
116
+ ### 模板标签页
117
+
118
+ - 以卡片形式显示所有可用模板
119
+ - 点击进入编辑器,修改后保存
120
+ - 上传新的 `.html` 模板文件
121
+ - 点击「预览」渲染模板效果图
122
+
123
+ ### 字体标签页
124
+
125
+ - 设置推送图片使用的字体名称
126
+
127
+ ## 自定义模板
128
+
129
+ 模板使用 Jinja2 + HTML/CSS 渲染,位于 `templates/` 目录。
130
+
131
+ ### 动态模板(dynamic.html)
132
+
133
+ 支持变量:
134
+
135
+ | 变量 | 说明 |
136
+ |------|------|
137
+ | `name` | UP 主名称 |
138
+ | `avatar` | UP 主头像 URL |
139
+ | `pub_time` | 发布时间 (YYYY-MM-DD HH:mm:ss) |
140
+ | `type_text` | 动态类型文字 |
141
+ | `content` | 动态纯文本内容 |
142
+ | `content_html` | 带表情/链接的 HTML 内容 |
143
+ | `images` | 图片 URL 列表 |
144
+ | `media_title` | 视频/专栏标题 |
145
+ | `media_cover` | 视频/专栏封面 URL |
146
+ | `media_link` | 跳转链接 |
147
+ | `media_badge` | 媒体标签(时长等) |
148
+ | `comment_count` | 评论数 |
149
+ | `forward_count` | 转发数 |
150
+ | `like_count` | 点赞数 |
151
+ | `forward_name` | 转发来源 UP 主 |
152
+ | `forward_content` | 转发原内容 |
153
+ | `dynamic_id` | 动态 ID |
154
+
155
+ ### 视频模板(video.html)
156
+
157
+ 专为视频投稿设计,支持封面大图+播放按钮+标题覆盖。
158
+
159
+ ### 直播模板(live.html)
160
+
161
+ | 变量 | 说明 |
162
+ |------|------|
163
+ | `cover` | 直播间封面 URL |
164
+ | `title` | 直播标题 |
165
+ | `name` | 主播名称 |
166
+ | `avatar` | 主播头像 URL |
167
+ | `uid` | 主播 UID |
168
+ | `area` | 直播分区 |
169
+ | `start_time` | 开播时间 |
170
+ | `live_link` | 直播间链接 |
171
+
172
+ ## 数据存储
173
+
174
+ 项目本地目录 `data/bilibili/`:
175
+
176
+ ```
177
+ 项目根/data/bilibili/
178
+ ├── cookie.json # B 站 Cookie + UID
179
+ ├── subscribers.json # 订阅数据(群、UP主、@全体、过滤、模板)
180
+ └── users.json # UP 主名称缓存
181
+ ```
182
+
183
+ 可通过 `.env` 中 `bilibili_data_dir` 自定义路径:
184
+
185
+ ```dotenv
186
+ bilibili_data_dir=/自定义/路径/data/bilibili
187
+ ```
188
+
189
+ ## 权限说明
190
+
191
+ | 角色 | 群聊 | 私聊 |
192
+ |------|------|------|
193
+ | 普通成员 | 仅 `/bili list` | 不回复 |
194
+ | 群管理员/群主 | 全部管理命令 | 不回复 |
195
+ | 超级用户 | 全部命令 | 全部命令(加 `-群号` 管理) |
196
+
197
+ ## 技术栈
198
+
199
+ - **框架**: NoneBot2 + OneBot V11
200
+ - **命令**: `on_command`
201
+ - **定时任务**: APScheduler(15 秒间隔)
202
+ - **图片渲染**: Playwright(htmlrender)
203
+ - **数据存储**: JSON 文件
204
+ - **Web 后台**: FastAPI
205
+ - **B 站 API**: WBI 签名 + Cookie 认证
206
+
207
+ ## 参考
208
+
209
+ - [bilibili-dynamic-mirai-plugin](https://github.com/Colter23/bilibili-dynamic-mirai-plugin)
210
+ - [bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect)
211
+ - [NoneBot2](https://nonebot.dev/)
@@ -0,0 +1,239 @@
1
+ Metadata-Version: 2.4
2
+ Name: nonebot-plugin-bilibili
3
+ Version: 1.0.0
4
+ Summary: Bilibili 动态/直播 订阅推送插件 for NoneBot2
5
+ Author-email: mengbingnaixi <mengbingnaixi@users.noreply.github.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/your/nonebot-plugin-bilibili
8
+ Project-URL: Repository, https://github.com/your/nonebot-plugin-bilibili
9
+ Project-URL: NoneBot Store, https://registry.nonebot.dev/plugin/nonebot-plugin-bilibili
10
+ Keywords: nonebot,bilibili,b站,动态,直播
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Framework :: aiohttp
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Requires-Python: <4.0,>=3.10
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ Requires-Dist: nonebot2[fastapi,httpx,websockets]>=2.5.0
22
+ Requires-Dist: nonebot-adapter-onebot>=2.4.6
23
+ Requires-Dist: nonebot-plugin-htmlrender>=0.6.7
24
+ Requires-Dist: nonebot-plugin-apscheduler>=0.5.0
25
+ Requires-Dist: httpx>=0.27.0
26
+ Requires-Dist: jinja2>=3.0
27
+ Dynamic: license-file
28
+
29
+ # B站通知助手 — NoneBot2 插件
30
+
31
+ 基于 NoneBot2 + OneBot V11 的 Bilibili 动态/直播订阅推送插件。
32
+
33
+ 参考 [bilibili-dynamic-mirai-plugin](https://github.com/Colter23/bilibili-dynamic-mirai-plugin) v3 设计。
34
+
35
+ ## 特性
36
+
37
+ - **动态推送** — 15 秒轮询检测订阅 UP 主的新动态,HTML 渲染为图片推送至群
38
+ - **直播推送** — 实时检测开播/下播状态,推送卡片通知
39
+ - **Web 管理后台** — 浏览器管理订阅、Cookie、模板、字体,无需操作指令
40
+ - **扫码登录** — 支持手机扫码或手动填入 Cookie
41
+ - **@全体 管理** — 六种独立类型(全部/动态/视频/音乐/专栏/直播)
42
+ - **关键词过滤** — 按关键词屏蔽不想接收的动态
43
+ - **自定义模板** — 每群可独立设置动态/视频/直播模板,支持在线编辑上传
44
+ - **分组管理** — 按 UP 主维度展示订阅,支持多群订阅同一 UP 主
45
+ - **私聊管理** — 超级用户私聊可管理任意群
46
+
47
+ ## 安装
48
+
49
+ ### 前置依赖
50
+
51
+ ```
52
+ nonebot2[fastapi,httpx,websockets]>=2.5.0
53
+ nonebot-adapter-onebot>=2.4.6
54
+ nonebot-plugin-htmlrender>=0.6.7
55
+ nonebot-plugin-localstore>=0.7.4
56
+ nonebot-plugin-apscheduler>=0.5.0
57
+ ```
58
+
59
+ ### 安装插件
60
+
61
+ 将 `nonebot_plugin_bilibili` 文件夹复制到项目的插件目录:
62
+
63
+ ```toml
64
+ [tool.nonebot.plugins]
65
+ "@local" = ["nonebot_plugin_bilibili"]
66
+ ```
67
+
68
+ ### 安装依赖
69
+
70
+ ```bash
71
+ pip install qrcode
72
+ playwright install chromium
73
+ ```
74
+
75
+ ## 配置
76
+
77
+ 在 `.env` 或 `.env.prod` 中配置:
78
+
79
+ ```dotenv
80
+ SUPERUSERS=["你的QQ号"]
81
+ HOST=0.0.0.0
82
+
83
+ # Web 后台(可选)
84
+ bili_web_enable=true
85
+ BILI_WEB_PASSWORD=你的管理密码
86
+ ```
87
+
88
+ ## 指令
89
+
90
+ ### 订阅管理
91
+
92
+ | 命令 | 说明 | 权限 |
93
+ |------|------|------|
94
+ | `/bili add <uid> [群号]` | 订阅 UP 主 | 管理员 / 超级用户 |
95
+ | `/bili del <uid> [群号]` | 取消订阅 | 管理员 / 超级用户 |
96
+ | `/bili list [群号]` | 查看本群订阅列表 | 所有人 |
97
+ | `/bili listall` | 查看全部订阅 | 超级用户 |
98
+ | `/bili delall [群号]` | 清除本群所有订阅 | 管理员 |
99
+ | `/bili delallall` | 删除所有订阅 | 超级用户 |
100
+
101
+ ### @全体 管理
102
+
103
+ | 命令 | 说明 |
104
+ |------|------|
105
+ | `/bili atall <类型> on <uid> [群号]` | 开启 @全体 |
106
+ | `/bili atall <类型> off <uid> [群号]` | 关闭 @全体 |
107
+ | `/bili atall list [群号]` | 查看本群配置 |
108
+
109
+ 类型:`all`(全部)/ `dynamic`(动态)/ `video`(视频)/ `music`(音乐)/ `article`(专栏)/ `live`(直播)
110
+
111
+ ### 过滤管理
112
+
113
+ | 命令 | 说明 |
114
+ |------|------|
115
+ | `/bili filter add <keyword>` | 添加过滤词 |
116
+ | `/bili filter del <id/keyword>` | 删除过滤规则 |
117
+ | `/bili filter list` | 查看本群过滤规则 |
118
+
119
+ ### 系统
120
+
121
+ | 命令 | 说明 | 权限 |
122
+ |------|------|------|
123
+ | `/bili login` | 扫码登录 B 站 | 超级用户 |
124
+ | `/bili help` | 显示帮助图片 | 所有人 |
125
+
126
+ ## Web 管理后台
127
+
128
+ 启动后访问 `http://IP:你配置的端口/bili/` 即可进入管理后台。
129
+
130
+ ### 订阅标签页
131
+
132
+ - **添加群** — 输入群号或点击「检测群列表」自动扫描 Bot 加入的所有群
133
+ - **UP 主卡片** — 按 UP 主分组显示,每个 UP 主列出所有订阅该 UP 主的群
134
+ - **@全体 控制** — 每个群的 UP 主条目下方有六种 @全体 开关按钮
135
+ - **屏蔽词** — 每个群可独立设置过滤关键词
136
+ - **模板设置** — 每个群可独立选择动态/视频/直播推送模板
137
+ - **删除群** — 移除群的所有管理数据
138
+
139
+ ### Cookie 标签页
140
+
141
+ - 显示 Cookie 配置状态和绑定 UID
142
+ - 手动填入 Cookie 或扫码登录
143
+
144
+ ### 模板标签页
145
+
146
+ - 以卡片形式显示所有可用模板
147
+ - 点击进入编辑器,修改后保存
148
+ - 上传新的 `.html` 模板文件
149
+ - 点击「预览」渲染模板效果图
150
+
151
+ ### 字体标签页
152
+
153
+ - 设置推送图片使用的字体名称
154
+
155
+ ## 自定义模板
156
+
157
+ 模板使用 Jinja2 + HTML/CSS 渲染,位于 `templates/` 目录。
158
+
159
+ ### 动态模板(dynamic.html)
160
+
161
+ 支持变量:
162
+
163
+ | 变量 | 说明 |
164
+ |------|------|
165
+ | `name` | UP 主名称 |
166
+ | `avatar` | UP 主头像 URL |
167
+ | `pub_time` | 发布时间 (YYYY-MM-DD HH:mm:ss) |
168
+ | `type_text` | 动态类型文字 |
169
+ | `content` | 动态纯文本内容 |
170
+ | `content_html` | 带表情/链接的 HTML 内容 |
171
+ | `images` | 图片 URL 列表 |
172
+ | `media_title` | 视频/专栏标题 |
173
+ | `media_cover` | 视频/专栏封面 URL |
174
+ | `media_link` | 跳转链接 |
175
+ | `media_badge` | 媒体标签(时长等) |
176
+ | `comment_count` | 评论数 |
177
+ | `forward_count` | 转发数 |
178
+ | `like_count` | 点赞数 |
179
+ | `forward_name` | 转发来源 UP 主 |
180
+ | `forward_content` | 转发原内容 |
181
+ | `dynamic_id` | 动态 ID |
182
+
183
+ ### 视频模板(video.html)
184
+
185
+ 专为视频投稿设计,支持封面大图+播放按钮+标题覆盖。
186
+
187
+ ### 直播模板(live.html)
188
+
189
+ | 变量 | 说明 |
190
+ |------|------|
191
+ | `cover` | 直播间封面 URL |
192
+ | `title` | 直播标题 |
193
+ | `name` | 主播名称 |
194
+ | `avatar` | 主播头像 URL |
195
+ | `uid` | 主播 UID |
196
+ | `area` | 直播分区 |
197
+ | `start_time` | 开播时间 |
198
+ | `live_link` | 直播间链接 |
199
+
200
+ ## 数据存储
201
+
202
+ 项目本地目录 `data/bilibili/`:
203
+
204
+ ```
205
+ 项目根/data/bilibili/
206
+ ├── cookie.json # B 站 Cookie + UID
207
+ ├── subscribers.json # 订阅数据(群、UP主、@全体、过滤、模板)
208
+ └── users.json # UP 主名称缓存
209
+ ```
210
+
211
+ 可通过 `.env` 中 `bilibili_data_dir` 自定义路径:
212
+
213
+ ```dotenv
214
+ bilibili_data_dir=/自定义/路径/data/bilibili
215
+ ```
216
+
217
+ ## 权限说明
218
+
219
+ | 角色 | 群聊 | 私聊 |
220
+ |------|------|------|
221
+ | 普通成员 | 仅 `/bili list` | 不回复 |
222
+ | 群管理员/群主 | 全部管理命令 | 不回复 |
223
+ | 超级用户 | 全部命令 | 全部命令(加 `-群号` 管理) |
224
+
225
+ ## 技术栈
226
+
227
+ - **框架**: NoneBot2 + OneBot V11
228
+ - **命令**: `on_command`
229
+ - **定时任务**: APScheduler(15 秒间隔)
230
+ - **图片渲染**: Playwright(htmlrender)
231
+ - **数据存储**: JSON 文件
232
+ - **Web 后台**: FastAPI
233
+ - **B 站 API**: WBI 签名 + Cookie 认证
234
+
235
+ ## 参考
236
+
237
+ - [bilibili-dynamic-mirai-plugin](https://github.com/Colter23/bilibili-dynamic-mirai-plugin)
238
+ - [bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect)
239
+ - [NoneBot2](https://nonebot.dev/)
@@ -0,0 +1,8 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ nonebot_plugin_bilibili.egg-info/PKG-INFO
5
+ nonebot_plugin_bilibili.egg-info/SOURCES.txt
6
+ nonebot_plugin_bilibili.egg-info/dependency_links.txt
7
+ nonebot_plugin_bilibili.egg-info/requires.txt
8
+ nonebot_plugin_bilibili.egg-info/top_level.txt
@@ -0,0 +1,6 @@
1
+ nonebot2[fastapi,httpx,websockets]>=2.5.0
2
+ nonebot-adapter-onebot>=2.4.6
3
+ nonebot-plugin-htmlrender>=0.6.7
4
+ nonebot-plugin-apscheduler>=0.5.0
5
+ httpx>=0.27.0
6
+ jinja2>=3.0
@@ -0,0 +1,47 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "nonebot-plugin-bilibili"
7
+ version = "1.0.0"
8
+ description = "Bilibili 动态/直播 订阅推送插件 for NoneBot2"
9
+ readme = "README.md"
10
+ license = {text = "MIT"}
11
+ authors = [
12
+ {name = "mengbingnaixi", email = "mengbingnaixi@users.noreply.github.com"}
13
+ ]
14
+ requires-python = ">=3.10, <4.0"
15
+ keywords = ["nonebot", "bilibili", "b站", "动态", "直播"]
16
+ classifiers = [
17
+ "Programming Language :: Python :: 3",
18
+ "Programming Language :: Python :: 3.10",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Programming Language :: Python :: 3.13",
22
+ "Framework :: aiohttp",
23
+ "License :: OSI Approved :: MIT License",
24
+ ]
25
+
26
+ dependencies = [
27
+ "nonebot2[fastapi,httpx,websockets]>=2.5.0",
28
+ "nonebot-adapter-onebot>=2.4.6",
29
+ "nonebot-plugin-htmlrender>=0.6.7",
30
+ "nonebot-plugin-apscheduler>=0.5.0",
31
+ "httpx>=0.27.0",
32
+ "jinja2>=3.0",
33
+ ]
34
+
35
+ [project.urls]
36
+ Homepage = "https://github.com/your/nonebot-plugin-bilibili"
37
+ Repository = "https://github.com/your/nonebot-plugin-bilibili"
38
+ "NoneBot Store" = "https://registry.nonebot.dev/plugin/nonebot-plugin-bilibili"
39
+
40
+ [tool.nonebot]
41
+ plugins = ["nonebot_plugin_bilibili"]
42
+
43
+ [tool.setuptools.packages.find]
44
+ include = ["nonebot_plugin_bilibili*"]
45
+
46
+ [tool.setuptools.package-data]
47
+ nonebot_plugin_bilibili = ["templates/*.html", "py.typed"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+