koishi-plugin-kkk 3.13.0 → 3.14.0

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.
package/CHANGELOG.md CHANGED
@@ -1,60 +1,91 @@
1
1
  # 更新日志
2
2
 
3
+ ## 3.14.0
4
+
5
+ 这一版把「选清晰度」这件事带到了 OneBot 平台(NapCat / Lagrange / LLOneBot 等),
6
+ 另外修掉了一处只有 OneBot 上才会露出来的显示问题。
7
+
8
+ ### 新增:OneBot 群里也能选清晰度了
9
+
10
+ 以前发链接后**直接按配置里写死的画质**解析,只有官方 QQ 机器人能在面板上选 ——
11
+ 因为 OneBot 没有 QQ 那套「markdown + 原生按钮」。
12
+
13
+ 现在改成**用表情当按钮**:机器人发一条选择消息,在下面贴一排表情,
14
+ **点第几个表情就是上面第几档**,选完还要问一句「是否在线播放」,答完才真正开始解析。
15
+ 选完这条消息和那排表情都会撤掉,群里不留垃圾。
16
+
17
+ - 消息里会把表情印在选项前面,和下面那排一一对应,照着数就行;
18
+ - 用的是 QQ 系统表情(不是 emoji 字符),老客户端 / 协议端也显示得出来;
19
+ - 开关在控制台「解析面板」分组里(**默认开**),不需要就关掉,关掉后行为和以前一样。
20
+
21
+ ### 修:OneBot 上会漏出一串看不懂的代码
22
+
23
+ 下载提示在 OneBot 上会跟着一串 `<qqbot-cmd-input ...>` 的裸文本 ——
24
+ 那是 QQ 私有的按钮标签,OneBot 不认 markdown,原样印出来就是一串乱码。
25
+ 现在只在**真的支持 markdown 的平台**上发按钮,其它平台发成一句可以直接复制的话。
26
+
27
+ ### 点不动表情时的退路
28
+
29
+ 表情这条路依赖协议端的**表情回应**能力,各家支持程度不一样。所以留了两条一定能用的退路:
30
+
31
+ - **引用**那条选择消息,回复序号(1 / 2 / 3…)—— 谁都能用;
32
+ - **发链接的人**在 3 分钟内直接回数字也行。
33
+
3
34
  ## 3.13.0
4
35
 
5
36
  这一版把上游最近一批改动搬了过来,另外修了几处只有真用起来才会碰到的显示问题。
6
37
 
7
38
  ### 修:实况照片提示卡整张崩了
8
39
 
9
- 那张卡(「这是一张实况照片」的提示)在群里显示成一坨:文字挤在一起、间距全没、
40
+ 那张卡(「这是一张实况照片」的提示)在群里显示成一坨:文字挤在一起、间距全没、
10
41
  一排品牌图标只剩零星两三个。
11
42
 
12
- 原因是卡片的样式是**跟着模板按需生成**的,模板更新后新用到的样式没跟着补上。
43
+ 原因是卡片的样式是**跟着模板按需生成**的,模板更新后新用到的样式没跟着补上。
13
44
  这类问题最坑的地方是**页面不报错**,只是悄悄少样式 —— 光看日志什么都看不出来。
14
45
 
15
- 现在补了一套「和上游样式逐条对齐」的机制,并加了守卫脚本,
46
+ 现在补了一套「和上游样式逐条对齐」的机制,并加了守卫脚本,
16
47
  以后模板再更新不会再漏。顺带修好了 B站评论卡的字体,以及群统计卡缺掉的一段间距。
17
48
 
18
- ### 修:抖音会重复推一遍历史作品
49
+ ### 修:*抖音会重复推一遍历史作品*
19
50
 
20
- 喜欢 / 推荐列表的去重记录以前是「固定有效期」:一条作品记下之后,时间一到就作废,
51
+ *喜欢 / 推荐列表的去重记录以前是*「固定有效期」:一条作品记下之后,时间一到就作废,
21
52
  哪怕它还在你列表里,也会被当成新作品再推一次。
22
53
 
23
- 现在改成**跟着列表走**:每轮推送都把当前列表里所有作品的有效期一起往后延,
24
- 只有**真正离开列表**的作品才会被清掉。清理的时机也跟着挪了 ——
54
+ 现在改成**跟着列表走**:每轮推送都把当前列表里所有作品的有效期一起往后延,
55
+ 只有**真正离开列表**的作品才会被清掉。清理的时机也跟着挪了 ——
25
56
  这两件事必须同时生效,否则升级的那一刻老记录会先被清掉,反而多推一轮。
26
57
 
27
58
  ### 新:评论卡片的二维码中间带上作者头像
28
59
 
29
- B站 / 快手 / 小红书三张评论卡片,右下角那个二维码以前是纯黑白码,
60
+ B站 / 快手 / 小红书三张评论卡片,右下角那个二维码以前是纯黑白码,
30
61
  现在把作者头像嵌在正中间(和抖音那张卡的样子统一),深色模式也一起处理了。
31
62
 
32
63
  ### 修:B站卡片的简介(这次修的是 QQ 面板那张)
33
64
 
34
- 上一版修的是「解析出来那张卡」。但 QQ 上开着解析面板的时候,
35
- **解析卡其实是不发的** —— 群里那一张是面板自己画的,它的简介从出生起就是空的,
65
+ 上一版修的是「解析出来那张卡」。但 QQ 上开着解析面板的时候,
66
+ **解析卡其实是不发的** —— 群里那一张是面板自己画的,它的简介从出生起就是空的,
36
67
  所以修完看起来毫无变化。现在两张卡走同一份简介逻辑,单行、多行、带 @ 和链接的都正常。
37
68
 
38
69
  ### 其它
39
70
 
40
- - **修**:小红书评论里「回复的图片」以前按一串网址处理,接口其实给的是带宽高的对象,
71
+ - **修**:小红书评论里「回复的图片」以前按一串网址处理,接口其实给的是带宽高的对象,
41
72
  现在按真实结构解析;
42
73
  - **修**:抖音推送图里「谁在喜欢 / 谁推荐」那行取不到人,会退回显示作品作者,现在正常了;
43
- - **改**:一批卡片标题和数字的字重从最粗降到次粗(B站、抖音、小红书、单张统计卡都覆盖了),
74
+ - **改**:一批卡片标题和数字的字重从最粗降到次粗(B站、抖音、小红书、单张统计卡都覆盖了),
44
75
  小尺寸下不再糊成一团。
45
76
 
46
77
  ## 3.12.1
47
78
 
48
79
  ### 修:B站卡片的简介没了
49
80
 
50
- 有一批 B 站视频解析出来的卡片,标题下面直接跳到播放数据,**视频简介整块不见了**。
81
+ 有一批 B 站视频解析出来的卡片,标题下面直接跳到播放数据,**视频简介整块不见了**。
51
82
  不是渲染糊了,是压根没画上去。
52
83
 
53
- 原因是 B 站接口有时会把简介放在「分段简介」里、有时只放在普通简介字段里,
54
- 之前的代码碰上第一种情况以外的数据会算出一份空简介,然后把「空的」当成「有内容」画出来,
84
+ 原因是 B 站接口有时会把简介放在「分段简介」里、有时只放在普通简介字段里,
85
+ 之前的代码碰上第一种情况以外的数据会算出一份空简介,然后把「空的」当成「有内容」画出来,
55
86
  结果整块简介反而被吃掉了。
56
87
 
57
- 现在两个字段都试,哪个真的有内容就用哪个 —— 单行简介、多行简介、带 @ 和链接的简介
88
+ 现在两个字段都试,哪个真的有内容就用哪个 —— 单行简介、多行简介、带 @ 和链接的简介
58
89
  都能正常显示出来。
59
90
 
60
91
  顺手还修了一处:接口返回的简介字段是空的时候不会再让解析报错。
@@ -63,18 +94,18 @@ B站 / 快手 / 小红书三张评论卡片,右下角那个二维码以前是
63
94
 
64
95
  ### 新:提取图片的按钮只能点一次
65
96
 
66
- 卡片下面「提取封面图 / 提取评论区图片」这两个按钮以前可以一直点。有人一直点,
97
+ 卡片下面「提取封面图 / 提取评论区图片」这两个按钮以前可以一直点。有人一直点,
67
98
  群里就被同一张图刷屏,而且看不出是谁在点。
68
99
 
69
100
  现在**同一张卡片上的同一个按钮只放行一次**:
70
101
 
71
- - 再点不会往群里发任何东西(不再刷屏),但日志里会记下「这次是谁点的、之前是谁点过」,
102
+ - 再点不会往群里发任何东西(不再刷屏),但日志里会记下「这次是谁点的、之前是谁点过」,
72
103
  真被人刷了能查出来;
73
104
  - 封面和评论区是两个按钮,各点各的,互不影响;换一个作品也照常能点;
74
105
  - 想再要一次,**重新发一遍链接**就行,新卡片下面的按钮又是可点的(不会被永久锁死);
75
106
  - 自己手敲 `kkk封面` / `kkk评论` 不受这个限制,随时都能用。
76
107
 
77
- 还有一处顺手修的:万一这次没发出去(图过期了、或者发送报错),这次点击**不算数**,
108
+ 还有一处顺手修的:万一这次没发出去(图过期了、或者发送报错),这次点击**不算数**,
78
109
  再点一次还是能发 —— 以前那种「点一次就永久作废」的情况不会出现。
79
110
 
80
111
  ## 3.11.1
@@ -83,43 +114,43 @@ B站 / 快手 / 小红书三张评论卡片,右下角那个二维码以前是
83
114
 
84
115
  ### 修:视频发不出来(快手的长标题)
85
116
 
86
- 快手有些作品的标题是好几行的长文案。QQ 收群文件时会先看文件名,
87
- 标题里带换行就直接把整个上传退回来了 —— 视频明明已经下好,
117
+ 快手有些作品的标题是好几行的长文案。QQ 收群文件时会先看文件名,
118
+ 标题里带换行就直接把整个上传退回来了 —— 视频明明已经下好,
88
119
  却一个都没发出去,只在群里留一张报错卡(同一个视频连着失败了三次)。
89
120
 
90
- 现在发之前会把名字收拾干净(去掉换行和非法字符、太长就截断);
121
+ 现在发之前会把名字收拾干净(去掉换行和非法字符、太长就截断);
91
122
  万一还是被 QQ 退回,会自动换个临时名字再发一次。
92
123
 
93
- 顺带把报错信息也修好了:以前只写一句「失败」,现在会带上 QQ 给的原因,
124
+ 顺带把报错信息也修好了:以前只写一句「失败」,现在会带上 QQ 给的原因,
94
125
  真出问题一眼就能看出是什么。
95
126
 
96
127
  ### 新:卡片下面可以单独提取封面图 / 评论区的图
97
128
 
98
- 解析出来的卡片是一整条长图,想单独存封面、或者只看评论里别人贴的图,以前只能自己截图。
129
+ 解析出来的卡片是一整条长图,想单独存封面、或者只看评论里别人贴的图,以前只能自己截图。
99
130
  现在卡片下面多了一行按钮:
100
131
 
101
132
  - **提取封面图** —— 把封面单独发一遍;
102
133
  - **提取评论区图片** —— 发的是**评论里用户自己贴的图**(不是插件渲染的那张评论长图)。
103
134
 
104
- B站、抖音、小红书、快手都做了。只有 QQ / QQ 频道会有按钮,
135
+ B站、抖音、小红书、快手都做了。只有 QQ / QQ 频道会有按钮,
105
136
  其它平台会提示你引用那条消息、手敲 `kkk封面` / `kkk评论`。
106
137
 
107
138
  ### 修:「是否收集评论区的图片」打开没反应
108
139
 
109
- 打开这个开关,解析完就会**直接把评论区里的图发一条**,卡片下面不再重复挂按钮;
140
+ 打开这个开关,解析完就会**直接把评论区里的图发一条**,卡片下面不再重复挂按钮;
110
141
  关着(默认)保持原样,想单独存图自己点一下。
111
142
 
112
143
  另外,评论区一条图都没有的时候,那个按钮不会再显示了 —— 反正点了也没东西可发。
113
144
 
114
145
  ### 改:指令在控制台里收进「kkk」分组
115
146
 
116
- 控制台的指令页面以前有 40 条指令铺一地,现在统一收在 `kkk` 下面。
147
+ 控制台的指令页面以前有 40 条指令铺一地,现在统一收在 `kkk` 下面。
117
148
  **几种写法照旧都能用**:`解析 <链接>`、`/解析 <链接>`、`kkk.解析 <链接>`、`kkk 解析 <链接>`。
118
149
 
119
150
  ### 修:图片被强制拉伸
120
151
 
121
- QQ 的 markdown 图片必须写死尺寸。以前尺寸读不出来时会随便猜一个,
122
- 比例和原图对不上就被硬拉变形。现在尺寸一律实测,实在量不到就退回普通图片发送
152
+ QQ 的 markdown 图片必须写死尺寸。以前尺寸读不出来时会随便猜一个,
153
+ 比例和原图对不上就被硬拉变形。现在尺寸一律实测,实在量不到就退回普通图片发送
123
154
  (会糊一点,但比例是对的、也看得见)。
124
155
 
125
156
  ### 其它
@@ -136,11 +167,11 @@ QQ 的 markdown 图片必须写死尺寸。以前尺寸读不出来时会随便
136
167
 
137
168
  ### 修小红书图集发两遍
138
169
 
139
- - 图文笔记的图集有**两个发送点**:一个不看「发送内容」开关、直接发一条 markdown 全套图,
170
+ - 图文笔记的图集有**两个发送点**:一个不看「发送内容」开关、直接发一条 markdown 全套图,
140
171
  另一个按 `sendContent` 里的「图片」发(含实况图处理)。两个都命中时就是**两套图集**。
141
- - 删掉前面那个不看开关的,图集统一由「图片」那处发送;关掉「图片」现在是真的不发了
172
+ - 删掉前面那个不看开关的,图集统一由「图片」那处发送;关掉「图片」现在是真的不发了
142
173
  (以前关掉照样会发一份)。
143
- - 顺带给图集发送加了失败兜底:发不出去只记一步失败,后面的视频和错误卡片照常,
174
+ - 顺带给图集发送加了失败兜底:发不出去只记一步失败,后面的视频和错误卡片照常,
144
175
  不再把整条解析掀翻。
145
176
 
146
177
  ## 3.10.1
@@ -149,128 +180,122 @@ QQ 的 markdown 图片必须写死尺寸。以前尺寸读不出来时会随便
149
180
 
150
181
  ### B站跳转链接改回标准视频页
151
182
 
152
- - 3.10.0 让跳转块统一用用户发出来的那条链接,B站照做之后反而不能用:
183
+ - 3.10.0 让跳转块统一用用户发出来的那条链接,B站照做之后反而不能用:
153
184
  用户发的多半是 `b23.tv/xxx` 短链,**B站 App 复制了不跳转**。
154
- - B站的跳转块固定用 `https://www.bilibili.com/video/<bvid>`(分 P 带 `?p=N`),
185
+ - B站的跳转块固定用 `https://www.bilibili.com/video/<bvid>`(分 P 带 `?p=N`),
155
186
  不再用用户发的那条。卡片右下角的二维码同步改成这条,两边一致。
156
187
  - 抖音、快手、小红书仍按 3.10.0 的规则:用用户原样发的那条短链。
157
188
 
158
189
  ## 3.10.0
159
190
 
160
- > 解析消息底部的「打开原站」链接换成了**代码块形式的跳转卡片**:
161
- > 整段复制后打开对应 App 会直接跳到那条作品,不再依赖 QQ 会不会把链接渲染成可点的东西。
191
+ > 解析消息底部的「打开原站」链接换成了**代码块形式的跳转卡片**:
192
+ > 整段复制后打开对应 App 会直接跳到那条作品,不再依赖 QQ 会不会把链接渲染成可点的东西。
162
193
  > 快手和小红书以前完全没有这条链接,现在补上了。
163
194
 
164
195
  ### 原站跳转改成「复制码」
165
196
 
166
197
  - 发出的东西从 `[打开原站](链接)` 变成代码块:
167
-
168
198
  ````
169
199
  ```复制后打开抖音自动跳转 →
170
200
  https://v.douyin.com/iQabcdef/ :1pm Mai:/ 2237886846@qq.com
171
201
  ```
172
202
  ````
173
-
174
- 各家 App 都认「剪贴板里有一条自家链接」——复制整段文本打开 App 会弹直达询问,
203
+ 各家 App 都认「剪贴板里有一条自家链接」——复制整段文本打开 App 会弹直达询问,
175
204
  比点链接稳;官方 QQ 对 markdown 里的链接也经常直接拒收整条消息,代码块没有这个问题。
176
- - 提示文案放在**围栏的语种位**(` ``` ` 后面那截),不占正文一行,
205
+ - 提示文案放在**围栏的语种位**(` ``` ` 后面那截),不占正文一行,
177
206
  代码块里就只有链接本身,全选复制不会带上多余文字。
178
- - **抖音附带唤起口令**:光有链接 App 不一定弹跳转,接一段口令才稳。
207
+ - **抖音附带唤起口令**:光有链接 App 不一定弹跳转,接一段口令才稳。
179
208
  这是抖音 App 生成的固定串(每条作品都一样),不是模板。
180
- - **快手、小红书单独发一条**:这两个平台没有清晰度面板——原来的跳转代码挂在画质表格下面,
209
+ - **快手、小红书单独发一条**:这两个平台没有清晰度面板——原来的跳转代码挂在画质表格下面,
181
210
  它们压根走不到,等于一条都没发过。现在在解析内容发完后补一条同格式的消息。
182
- - 开关沿用 WebUI 的「原站跳转」(QQ 适配器分组,`qqPanelSourceLink`,默认开);
211
+ - 开关沿用 WebUI 的「原站跳转」(QQ 适配器分组,`qqPanelSourceLink`,默认开);
183
212
  跳转发送失败只记日志,**不影响解析结果**。
184
213
 
185
214
  ### 跳转链接用用户发的那条
186
215
 
187
- - 一开始让跳转链接和卡片右下角的二维码保持一致(`b23.tv/<bvid>`、抖音 `share_url`),
216
+ - 一开始让跳转链接和卡片右下角的二维码保持一致(`b23.tv/<bvid>`、抖音 `share_url`),
188
217
  实测行不通:那种链接带 `xsec_token` / `u_code` 一串参数,**太长,App 剪贴板识别不了**。
189
- - 改成优先用用户原样发的那条(`b23.tv/xxx`、`v.douyin.com/xxx`、`v.kuaishou.com/xxx`、
190
- `xhslink.com/o/xxx`)——那本来就是各家 App 自己生成的分享形态,最短也最容易被识别。
218
+ - 改成优先用用户原样发的那条(`b23.tv/xxx`、`v.douyin.com/xxx`、`v.kuaishou.com/xxx`、
219
+ `xhslink.com/o/xxx`)——那本来就是各家 App 自己生成的分享形态,最短也最容易被识别。
191
220
  取不到时才退回插件拼的标准链接。
192
221
  - 卡片二维码**没动**:扫码不吃 URL 长度,换个链接反而要重测,保持原样。
193
- - 顺带修了快手卡片二维码:以前填的是视频 CDN 直链,扫出来是段播放地址而不是作品页,
222
+ - 顺带修了快手卡片二维码:以前填的是视频 CDN 直链,扫出来是段播放地址而不是作品页,
194
223
  现在指向作品页(`photoId` 取不到时仍退回原逻辑)。
195
224
 
196
225
  ### markdown 只对 QQ / QQ 频道发
197
226
 
198
- - 能渲染 markdown 的只有官方 QQ 适配器和 QQ 频道,其它平台(OneBot / Discord / Telegram /
227
+ - 能渲染 markdown 的只有官方 QQ 适配器和 QQ 频道,其它平台(OneBot / Discord / Telegram /
199
228
  KOOK…)会把代码块的 ` ``` ` 围栏原样显示成一串反引号。
200
- - 判定从 OneBot 黑名单改成**平台白名单**(`qq` / `qqguild`):这两个发 markdown 代码块,
229
+ - 判定从 OneBot 黑名单改成**平台白名单**(`qq` / `qqguild`):这两个发 markdown 代码块,
201
230
  其余一律发去围栏的纯文本(提示一行 + 链接一行),照样整段复制、App 一样认。
202
231
 
203
232
  ## 3.9.1
204
233
 
205
- > 修 MySQL 上启动直接报 `ER_TOO_LONG_KEY`、插件起不来的问题。
234
+ > 修 MySQL 上启动直接报 `ER_TOO_LONG_KEY`、插件起不来的问题。
206
235
  > 3.9.0 建的索引太宽了:索引字段现在按实际数据长度定长,最宽的索引从 4080 字节降到 1152 字节。
207
236
 
208
237
  ### 修复 MySQL 索引过长(ER_TOO_LONG_KEY)
209
238
 
210
239
  - **现象**:MySQL 环境启动就报 `ER_TOO_LONG_KEY`(Specified key was too long),索引超过 3072 字节,表建不出来。
211
- - **原因**:字符串字段没给长度,MySQL 按 `VARCHAR(255)` 建,`utf8mb4` 下每字符 4 字节,
212
- 单个字段就是 1020 字节。抖音作品缓存表那个由 **四个** 字段组成的唯一键
213
- (作品 id + sec_uid + 群号 + 推送类型)算下来 4080 字节,直接超了上限。
240
+ - **原因**:字符串字段没给长度,MySQL 按 `VARCHAR(255)` 建,`utf8mb4` 下每字符 4 字节,
241
+ 单个字段就是 1020 字节。抖音作品缓存表那个由 **四个** 字段组成的唯一键
242
+ (作品 id + sec_uid + 群号 + 推送类型)算下来 4080 字节,直接超了上限。
214
243
  另有几张统计表卡在 3060 字节 —— 离上限只差 12 字节,随时会爆。
215
244
  - **处理**:凡是进索引(主键 / 唯一键)的字段,都按实际数据长度定长:
216
-
217
- | 字段 | 长度 | 说明 |
218
- | --- | --- | --- |
219
- | 群号 / QQ 号 / botId / 作品 id / 动态 id | 64 | 最多几十个字符 |
220
- | 抖音 `sec_uid` | 128 | 实际最长见过 76 |
221
- | 平台 / 内容形态 / 日期 / 指标名 | 16–32 | 固定枚举、`YYYY-MM-DD` |
222
- | 过滤词 / 过滤标签 | 128 | 自定义文本 |
223
- | 备注、昵称等 | 不限制 | 不进索引,不影响 |
224
-
245
+ | 字段 | 长度 | 说明 |
246
+ | --------------------------------- | ----- | ----------------- |
247
+ | 群号 / QQ 号 / botId / 作品 id / 动态 id | 64 | 最多几十个字符 |
248
+ | 抖音 `sec_uid` | 128 | 实际最长见过 76 |
249
+ | 平台 / 内容形态 / 日期 / 指标名 | 16–32 | 固定枚举、`YYYY-MM-DD` |
250
+ | 过滤词 / 过滤标签 | 128 | 自定义文本 |
251
+ | 备注、昵称等 | 不限制 | 不进索引,不影响 |
225
252
  现在最宽的索引是 1152 字节(原来是 4080),其它都在 1024 以内。
226
253
  - **在 MySQL 上已经建出过半截 `kkk` 表的**,需要先删掉再启动 —— 已有索引不一定能被自动改过来:
227
-
228
254
  ```sql
229
255
  SELECT TABLE_NAME FROM information_schema.TABLES
230
256
  WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME LIKE 'kkk%';
231
257
  ```
232
-
233
258
  确认是插件的表之后 `DROP` 掉,重启 Koishi 会按新定义重建。
234
259
  - sqlite / postgres 不受影响,也不用做上面这一步(字段长度本来就够)。
235
260
 
236
261
  ## 3.9.0
237
262
 
238
- > 插件不再自己建数据库了,全部改用 Koishi 自带的数据库服务。
239
- > 数据统一落在宿主配置的那个库里(sqlite / mysql / postgres 都行),备份和迁移跟着宿主走,
240
- > 不用再单独惦记插件数据目录里那几个 `.db` 文件。
263
+ > 插件不再自己建数据库了,全部改用 Koishi 自带的数据库服务。
264
+ > 数据统一落在宿主配置的那个库里(sqlite / mysql / postgres 都行),备份和迁移跟着宿主走,
265
+ > 不用再单独惦记插件数据目录里那几个 `.db` 文件。
241
266
  > **代价:过滤词 / 过滤标签和解析统计历史会从零开始**(订阅关系不受影响,每次启动自动从推送列表重建)。
242
267
 
243
268
  ### 数据库改用 Koishi 原生数据库服务
244
269
 
245
- - 以前插件自己在数据目录里开三个 sqlite 文件(`douyin.db` / `bilibili.db` / `statistics.db`);
246
- 现在所有数据都走 Koishi 的 `ctx.database`,表由插件注册(`kkk.douyin.*` / `kkk.bilibili.*` / `kkk.statistics.*`),
270
+ - 以前插件自己在数据目录里开三个 sqlite 文件(`douyin.db` / `bilibili.db` / `statistics.db`);
271
+ 现在所有数据都走 Koishi 的 `ctx.database`,表由插件注册(`kkk.douyin.*` / `kkk.bilibili.*` / `kkk.statistics.*`),
247
272
  落在宿主配置的那一个库里(sqlite / mysql / postgres 都行),插件不再创建任何 sqlite 文件。
248
273
  - **`database` 服务变成必选**:没有配置数据库插件时 Koishi 会直接不加载本插件(以前是可选的,因为那时插件自己建库)。
249
- - **旧库不迁移**:三个旧 `.db` 文件保留不动,但不再被读取。订阅关系每次启动都会从配置里的推送列表
274
+ - **旧库不迁移**:三个旧 `.db` 文件保留不动,但不再被读取。订阅关系每次启动都会从配置里的推送列表
250
275
  (`config.json` 的 `pushlist`)自动重建,**不受影响**;**过滤词 / 过滤标签、解析统计历史会从零开始**。
251
276
  - 想保留过滤词或统计历史的,可以在切换前自己从旧 `.db` 里导出,或改配置里的推送列表重新加过滤规则。
252
277
 
253
278
  ## 3.8.0
254
279
 
255
- > 抖音解析修好了。抖音那边改了风控规则,**换 cookie 是没用的** —— 问题出在解析用的那个库太旧;
280
+ > 抖音解析修好了。抖音那边改了风控规则,**换 cookie 是没用的** —— 问题出在解析用的那个库太旧;
256
281
  > 顺带修好快手、小红书的评论区渲染。
257
282
 
258
283
  ### 抖音:解析不了 / 一直提示 Cookie 失效
259
284
 
260
- - **现象**:发抖音链接,机器人回「抖音没有返回这条作品的数据(错误码 500:抖音数据获取失败),
285
+ - **现象**:发抖音链接,机器人回「抖音没有返回这条作品的数据(错误码 500:抖音数据获取失败),
261
286
  常见原因:Cookie 失效、被风控」,可同一个 cookie 换个插件却能正常解析。
262
- - **原因**:抖音现在要求每个网页接口都带上设备标识(`uifid`)和一套新的签名头
263
- (`x-secsdk-web-signature`,由抖音自己的风控 SDK 算出来)。
264
- 插件用的解析库 6.6.0 里根本没有这套东西,请求直接被抖音拦下
265
- (服务器回的是「Blocked by ArgusSecurityPlugin Uifid Not Found」),
287
+ - **原因**:抖音现在要求每个网页接口都带上设备标识(`uifid`)和一套新的签名头
288
+ (`x-secsdk-web-signature`,由抖音自己的风控 SDK 算出来)。
289
+ 插件用的解析库 6.6.0 里根本没有这套东西,请求直接被抖音拦下
290
+ (服务器回的是「Blocked by ArgusSecurityPlugin Uifid Not Found」),
266
291
  库再把它包成一句「抖音数据获取失败」—— 看起来就像 cookie 过期,怎么换都没用。
267
- - **处理**:把解析库升到 7.x(目前是 7.0.0-beta.5;npm 上标着「最新」的 6.6.0 反而是坏的)。
292
+ - **处理**:把解析库升到 7.x(目前是 7.0.0-beta.5;npm 上标着「最新」的 6.6.0 反而是坏的)。
268
293
  升级后实测:作品详情、评论区、弹幕都正常。
269
294
  - 更新完**重启一次机器人**即可;手动 `npm i` 更新插件时会自动装上对应版本的解析库。
270
295
 
271
296
  ### 日志更好排查
272
297
 
273
- - 以后再遇到这类失败,日志里会直接写明「**多半是解析库版本过旧**」,
298
+ - 以后再遇到这类失败,日志里会直接写明「**多半是解析库版本过旧**」,
274
299
  不用再照着「换 cookie、换网络」排查半天。
275
300
 
276
301
  ### 修复快手评论渲染
@@ -283,19 +308,19 @@ QQ 的 markdown 图片必须写死尺寸。以前尺寸读不出来时会随便
283
308
 
284
309
  ## 3.7.2
285
310
 
286
- > 群里发的图片**统一改走 markdown** 了 —— 普通图片消息会被 QQ 压得发糊,markdown 图片不会;
311
+ > 群里发的图片**统一改走 markdown** 了 —— 普通图片消息会被 QQ 压得发糊,markdown 图片不会;
287
312
  > 顺手把互动视频那张**剧情图的字放大**了。
288
313
 
289
314
  ### 图片不再被压糊
290
315
 
291
- - 卡片、评论图、图集、推送里的图……以前都是当「普通图片」发出去的,QQ 会二次压缩,
292
- 卡片上的小字糊成一团。现在**图片一律按 markdown 图片发**:先传到机器人自己的图床,
316
+ - 卡片、评论图、图集、推送里的图……以前都是当「普通图片」发出去的,QQ 会二次压缩,
317
+ 卡片上的小字糊成一团。现在**图片一律按 markdown 图片发**:先传到机器人自己的图床,
293
318
  再用带尺寸的图片写法发出去,字是清楚的。
294
- - markdown 图片**必须写死尺寸**(`![#宽px #高px](地址)`)—— 不写尺寸的话手机端根本不显示这张图,
319
+ - markdown 图片**必须写死尺寸**(`![#宽px #高px](地址)`)—— 不写尺寸的话手机端根本不显示这张图,
295
320
  所以每一张都会先把真实的宽高读出来(JPEG / PNG / GIF / WebP 都认)。
296
321
  - **平台不一样,处理不一样**(客户端能力决定的,不是选择):
297
322
  - QQ 官方机器人:走 markdown 图片;
298
- - OneBot 系(NapCat、Lagrange、go-cqhttp、Chronocat 等):客户端不认 markdown,
323
+ - OneBot 系(NapCat、Lagrange、go-cqhttp、Chronocat 等):客户端不认 markdown,
299
324
  收到只会显示成一串网址、图片全丢,所以这条链路**照旧发普通图片**;
300
325
  - QQ 频道(qqguild)同理,也不改写。
301
326
  - 一条消息里**同时有视频 / 语音 / 文件**时不改写:那种消息会按媒体发出去,markdown 内容会被丢掉。
@@ -306,74 +331,74 @@ QQ 的 markdown 图片必须写死尺寸。以前尺寸读不出来时会随便
306
331
  ### 互动视频:剧情图的字大了
307
332
 
308
333
  - 剧情图里每个选项 / 结局的**字号调大**了(大约 1/3),手机上看得清多了。
309
- - 长文字不再按「14 个字」硬切,改成**按这一列还能放多少像素**来截断,
334
+ - 长文字不再按「14 个字」硬切,改成**按这一列还能放多少像素**来截断,
310
335
  字大了也不会压到下一列的圆圈上;最后一列右边本来空着,会多显示几个字。
311
336
  - 「已选」「图例」「提示」这些说明文字也跟着放大了一点。
312
337
 
313
338
  ## 3.7.1
314
339
 
315
- > 修一个 3.7.0 改过头的地方:**视频直接发到群里的那种互动视频,照旧要在群里发带按钮的选择面板**;
340
+ > 修一个 3.7.0 改过头的地方:**视频直接发到群里的那种互动视频,照旧要在群里发带按钮的选择面板**;
316
341
  > 而且点完选项之后,**上一段视频会撤回**,群里只留当前这一段。
317
342
 
318
343
  ### 互动视频:两种玩法各归各位
319
344
 
320
345
  - **选了在线播放**(或者视频太大、自动转成在线播放):选项在网页播放器里贴出来,群里不再问一遍。
321
- - **视频直接发到群里**(没有播放页):照旧在群里发**带按钮的选择面板** ——
346
+ - **视频直接发到群里**(没有播放页):照旧在群里发**带按钮的选择面板** ——
322
347
  QQ 官方机器人是按钮,其它平台是一行一个选项的文字,点一下接着播下一段。
323
- - **点完选项会撤回上一段视频**:不然玩几段之后,群里会躺着一串视频。
324
- 顺序是先发新的、再撤旧的,中间不会出现「一段视频都没有」的空档;
348
+ - **点完选项会撤回上一段视频**:不然玩几段之后,群里会躺着一串视频。
349
+ 顺序是先发新的、再撤旧的,中间不会出现「一段视频都没有」的空档;
325
350
  选择面板照旧是发新的时候撤掉旧的。
326
351
  - 剧情图(勾了「流程图」时)照常:第一段出一张,走到结局再出一张。
327
352
 
328
353
  ## 3.7.0
329
354
 
330
- > 互动视频这一版基本重做了:**选剧情搬到了网页播放器里**(选项就贴在画面上、点完能看到下载进度),
355
+ > 互动视频这一版基本重做了:**选剧情搬到了网页播放器里**(选项就贴在画面上、点完能看到下载进度),
331
356
  > 群里不再发一串选择按钮;顺带修掉「改完配置机器人不理人」等几个老毛病。
332
357
 
333
358
  ### 互动视频:剧情在播放页上点
334
359
 
335
- - 从群里拿到播放链接、打开网页,**这一段放完,题目和选项就会浮在画面下方**,点一条接着播下一段;
360
+ - 从群里拿到播放链接、打开网页,**这一段放完,题目和选项就会浮在画面下方**,点一条接着播下一段;
336
361
  全屏时照样看得见、点得动。
337
- - 不想等它自己弹?控制条上有个**「选项」**按钮,随时点出来;点卡片外面的画面就把它收起来。
338
- - **点完有进度**:下一段要从 B 站现取(第一次要几秒),这段时间卡片会显示
339
- 「正在下载这一段 42%」这样的进度;失败会直接说明原因,还给一个**「重试这一段」**按钮,
362
+ - 不想等它自己弹?控制条上有&#x4E2A;**「选项」**&#x6309;钮,随时点出来;点卡片外面的画面就把它收起来。
363
+ - **点完有进度**:下一段要从 B 站现取(第一次要几秒),这段时间卡片会显示
364
+ 「正在下载这一段 42%」这样的进度;失败会直接说明原因,还给一&#x4E2A;**「重试这一段」**&#x6309;钮,
340
365
  不用刷新整页。
341
366
  - **已经下过的段会留着**,再点回去是秒开。
342
- - **弹幕跟着段走**:互动视频每一段都是单独的一段视频、弹幕也各是各的;
367
+ - **弹幕跟着段走**:互动视频每一段都是单独的一段视频、弹幕也各是各的;
343
368
  以前切段之后画面里飘的还是第一段那批,现在跟着你正在看的那段。
344
369
 
345
370
  ### 互动视频:不再被「体积上限」拦住
346
371
 
347
- - 互动稿天然就是一段段很短的切片,以前拿整段视频的体积去预估、去拦,既不准又容易误伤。
348
- 现在互动视频**不预估体积、评论卡片上也不显示体积**,只在真正下好、合并完之后检查一次:
349
- 超过你设的「文件大小限制」时,开着「超限转在线播放」就给你播放链接,没开就明说一句
372
+ - 互动稿天然就是一段段很短的切片,以前拿整段视频的体积去预估、去拦,既不准又容易误伤。
373
+ 现在互动视频**不预估体积、评论卡片上也不显示体积**,只在真正下好、合并完之后检查一次:
374
+ 超过你设的「文件大小限制」时,开着「超限转在线播放」就给你播放链接,没开就明说一句
350
375
  「这一段太大了,先不发到群里,剧情还能接着玩」。
351
376
  - 画面和声音分开存(不再额外花时间合成一个文件),点完选项少等一步。
352
377
 
353
378
  ### 在线播放页
354
379
 
355
- - **多了一行「原视频」**:以前页面上显示的是「本页链接」(你人就在这一页,等于废话),
380
+ - **多了一行「原视频」**:以前页面上显示的是「本页链接」(你人就在这一页,等于废话),
356
381
  现在显示 B 站 / 抖音上的**原视频地址**,点一下能在新窗口打开,也能一键复制。
357
- - 修好一个老问题:把「播放器端口」设成 0(跟随机器人自己的端口)时,
382
+ - 修好一个老问题:把「播放器端口」设成 0(跟随机器人自己的端口)时,
358
383
  页面上的「下载画面 / 下载声音 / 封面」点了会报错,现在正常。
359
384
  - 页面补了小图标,浏览器不会再提示「找不到 favicon」。
360
385
 
361
386
  ### 彩色弹幕、顶部弹幕现在看得到了
362
387
 
363
- - 有些视频弹幕特别密(几秒钟几百条)。以前轨道被白字弹幕占满之后,后面的**直接丢掉**,
364
- 于是少数派 —— 彩色弹幕、顶部「置顶」弹幕 —— 基本永远轮不到显示。
388
+ - 有些视频弹幕特别密(几秒钟几百条)。以前轨道被白字弹幕占满之后,后面的**直接丢掉**,
389
+ 于是少数派 —— 彩色弹幕、顶部「置顶」弹幕 —— 基本永远轮不到显示。
365
390
  现在白字弹幕会按比例抽稀,**彩色和顶部 / 底部的照常显示**。
366
391
 
367
392
  ### 修掉「改完配置机器人就不理人」
368
393
 
369
- - 在控制台改完配置、或者点一下重载插件之后,机器人有时会**整条指令都失效**:
394
+ - 在控制台改完配置、或者点一下重载插件之后,机器人有时会**整条指令都失效**:
370
395
  群里发链接没有任何反应、控制台面板也打不开。现在重载不会再出这个错。
371
396
 
372
397
  ### 其他修正
373
398
 
374
- - 播放页里的「这一段没准备好」换成了**具体原因**(以前不管是什么原因都显示
399
+ - 播放页里的「这一段没准备好」换成了**具体原因**(以前不管是什么原因都显示
375
400
  「链接已过期或视频已被清理」,很容易让人以为是链接过期了)。
376
- - 机器人重启后,**已经发出去的播放链接仍然能选剧情**(以前重启一次,那些链接里的选项按钮就消失了)。
401
+ - 机器人重启后,**已经发出去的播放链接仍然能选剧情**(以前重启一次,那些链接里的选项按钮就消失了)。
377
402
  小提醒:如果你手里是**这次更新之前**拿到的链接,需要重新发一次链接让机器人解析。
378
403
  - 另外补齐了几处内部自检(对使用者没有影响)。
379
404
 
@@ -383,23 +408,24 @@ QQ 的 markdown 图片必须写死尺寸。以前尺寸读不出来时会随便
383
408
 
384
409
  ### 修「大文件永远下不完」
385
410
 
386
- 有用户反馈:解析一个 280 MB 的 B 站视频,进度一直卡在 0.0 MB/s,重试三次都是这样,
411
+ 有用户反馈:解析一个 280 MB 的 B 站视频,进度一直卡在 0.0 MB/s,重试三次都是这样,
387
412
  最后报「连接被重置」。查下来是两个原因撞在一起:
388
413
 
389
- - **B 站给的下载地址不一定是好的**:有些地址连得上、就是不传数据(实测一分钟只传了 100 多 KB)。
414
+ - **B 站给的下载地址不一定是好的**:有些地址连得上、就是不传数据(实测一分钟只传了 100 多 KB)。
390
415
  以前的程序只会一直用这一个地址,B 站同时给出的其它备用地址完全没用上。
391
- - **下载有一个 60 秒的总时限**:从开始下载算起,超过 60 秒就掐断 ——
392
- 也就是说,凡是需要超过 60 秒的文件(按 1.5 MB/s 算大约 90 MB 以上)**永远下不完**。
416
+ - **下载有一个 60 秒的总时限**:从开始下载算起,超过 60 秒就掐断 ——
417
+ 也就是说,凡是需要超过 60 秒的文件(按 1.5 MB/s 算大约 90 MB 以上)**永远下不完**。
393
418
  更麻烦的是它掐断之后,报出来的错误看着像「服务器把连接重置了」,把人往「被风控了」的方向带。
394
419
 
395
420
  现在的表现:
396
421
 
397
422
  - **只要还在传数据就不算超时**:一直有数据就继续下,真的没数据了才算断。
398
- - **下载源卡住就自动换**:有备用地址时,试一会儿(约 20 秒)还是慢得离谱就换下一个;
423
+ - **下载源卡住就自动换**:有备用地址时,试一会儿(约 20 秒)还是慢得离谱就换下一个;
399
424
  已经传了好几 MB 才断的,保留进度接着下。
400
425
  - 报错说人话:自己掐断的,不再说成「连接被重置」,而是「下载超时(60 秒内没有收到新数据)」。
401
426
  - 进度条的**速度显示**也修好了:以前会出现「0.0 MB/s 剩余 661 分钟」这种明显不对的数字。
402
427
 
428
+
403
429
  ## 3.5.0
404
430
 
405
431
  > 这一版三件事:**B 站互动视频能玩了**(一路选剧情、还能出剧情图)、**合并转发里能单独控制流程图**,
@@ -772,6 +798,7 @@ QQ 的 markdown 图片必须写死尺寸。以前尺寸读不出来时会随便
772
798
  - **ffmpeg 找不到 / 没权限的问题修了**:按顺序逐个候选校验,起不来就自动换下一个。
773
799
  - **修 WebUI「推送列表里填频道 ID,点完成后整个面板黑屏」**。
774
800
 
801
+
775
802
  ### 新增
776
803
 
777
804
  **在线看**(通用 → 在线播放器设置)