koishi-plugin-kkk 3.14.0 → 4.0.1

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.
Files changed (126) hide show
  1. package/CHANGELOG.md +276 -4
  2. package/assets/web/assets/index-BRROK0vh.js +1 -1
  3. package/docs/upstream-audit-2026-10b.md +251 -0
  4. package/lib/build-metadata.json +5 -5
  5. package/lib/compat/adapter-info.js +171 -26
  6. package/lib/compat/fold.js +93 -8
  7. package/lib/compat/imageMarkdown.js +39 -17
  8. package/lib/compat/net.js +54 -0
  9. package/lib/compat/node-karin.js +269 -54
  10. package/lib/compat/sendError.js +15 -0
  11. package/lib/index.js +31 -14
  12. package/lib/karin/apps/help.js +21 -3
  13. package/lib/karin/apps/testPush.js +2 -4
  14. package/lib/karin/apps/tools.js +47 -6
  15. package/lib/karin/module/server/constants/routes.js +4 -4
  16. package/lib/karin/module/server/controllers/video.js +32 -42
  17. package/lib/karin/module/utils/Base.js +69 -25
  18. package/lib/karin/module/utils/CommentPics.js +13 -1
  19. package/lib/karin/module/utils/Common.js +83 -49
  20. package/lib/karin/module/utils/EmojiReaction.js +1 -1
  21. package/lib/karin/module/utils/ErrorHandler/render.js +31 -6
  22. package/lib/karin/module/utils/ImageSlice.js +73 -28
  23. package/lib/karin/module/utils/ParseForward.js +18 -3
  24. package/lib/karin/module/utils/QqPanel.js +135 -11
  25. package/lib/karin/module/utils/ReactionPanel.js +1225 -183
  26. package/lib/karin/module/utils/Render/index.js +2 -0
  27. package/lib/karin/module/utils/amagiClient.js +12 -0
  28. package/lib/karin/module/utils/emojiAssets.js +64 -0
  29. package/lib/karin/module/utils/loginSession.js +11 -0
  30. package/lib/karin/module/utils/runtime-report.js +8 -2
  31. package/lib/karin/platform/bilibili/bilibili.js +71 -19
  32. package/lib/karin/platform/bilibili/interactive-story.js +123 -10
  33. package/lib/karin/platform/bilibili/riskControl.js +10 -1
  34. package/lib/karin/platform/douyin/douyin.js +52 -18
  35. package/lib/karin/platform/douyin/getID.js +29 -8
  36. package/lib/karin/platform/douyin/liveParams.js +23 -0
  37. package/lib/karin/platform/douyin/login.js +11 -0
  38. package/lib/karin/platform/douyin/push/live.js +2 -4
  39. package/lib/karin/platform/kuaishou/kuaishou.js +1 -2
  40. package/lib/karin/platform/xiaohongshu/getID.js +28 -6
  41. package/lib/karin/platform/xiaohongshu/xiaohongshu.js +2 -3
  42. package/lib/karin/setup.js +7 -0
  43. package/lib/ktr/template/bilibili/qrcodeImg/components/qrcodeImg.js +1 -1
  44. package/lib/ktr/template/douyin/qrcodeImg/components/qrcodeImg.js +1 -1
  45. package/lib/ktr/template/other/handlerError/components/handlerError.js +38 -8
  46. package/lib/player/index.js +4 -42
  47. package/lib/qqFields.json +32 -2
  48. package/lib/richtext/parse/emojiAssets.generated.js +3806 -0
  49. package/lib/richtext/parse/index.js +30 -2
  50. package/lib/richtext/parse/unicodeEmoji.js +119 -0
  51. package/lib/verify/index.js +263 -0
  52. package/lib/verify/page.js +282 -0
  53. package/lib/verify/riskStrategy.js +89 -0
  54. package/lib/webui.js +88 -43
  55. package/package.json +6 -2
  56. package/scripts/build.mjs +38 -0
  57. package/scripts/gen-emoji-assets.mjs +42 -0
  58. package/scripts/patch-webui.mjs +20 -6
  59. package/scripts/probe-adapter-info.cjs +327 -0
  60. package/scripts/probe-amagi-runtime.cjs +96 -0
  61. package/scripts/probe-extract-buttons.cjs +183 -3
  62. package/scripts/probe-fold-blob.cjs +113 -0
  63. package/scripts/probe-force-online-player.cjs +178 -0
  64. package/scripts/probe-group-file-name.cjs +40 -3
  65. package/scripts/probe-onebot-no-markdown.cjs +100 -0
  66. package/scripts/probe-onebot-reaction-panel.cjs +1360 -31
  67. package/scripts/probe-richtext-emoji.cjs +216 -0
  68. package/scripts/probe-verify-page.cjs +345 -0
  69. package/scripts/probe-webui-access.cjs +224 -0
  70. package/src/compat/adapter-info.ts +184 -23
  71. package/src/compat/fold.ts +84 -9
  72. package/src/compat/imageMarkdown.ts +368 -342
  73. package/src/compat/net.ts +47 -0
  74. package/src/compat/node-karin.ts +263 -51
  75. package/src/compat/runtime.ts +2 -0
  76. package/src/compat/sendError.ts +14 -0
  77. package/src/index.ts +30 -14
  78. package/src/karin/apps/help.ts +21 -3
  79. package/src/karin/apps/testPush.ts +4 -4
  80. package/src/karin/apps/tools.ts +48 -6
  81. package/src/karin/module/server/constants/routes.ts +4 -4
  82. package/src/karin/module/server/controllers/video.ts +33 -45
  83. package/src/karin/module/utils/Base.ts +75 -36
  84. package/src/karin/module/utils/CommentPics.ts +13 -1
  85. package/src/karin/module/utils/Common.ts +81 -58
  86. package/src/karin/module/utils/EmojiReaction.ts +2 -2
  87. package/src/karin/module/utils/ErrorHandler/render.ts +32 -6
  88. package/src/karin/module/utils/ImageSlice.ts +71 -27
  89. package/src/karin/module/utils/ParseForward.ts +369 -354
  90. package/src/karin/module/utils/QqPanel.ts +143 -15
  91. package/src/karin/module/utils/ReactionPanel.ts +2467 -1146
  92. package/src/karin/module/utils/Render/index.ts +2 -0
  93. package/src/karin/module/utils/amagiClient.ts +14 -0
  94. package/src/karin/module/utils/emojiAssets.ts +69 -0
  95. package/src/karin/module/utils/loginSession.ts +12 -0
  96. package/src/karin/module/utils/runtime-report.ts +8 -2
  97. package/src/karin/platform/bilibili/bilibili.ts +2981 -2937
  98. package/src/karin/platform/bilibili/interactive-story.ts +139 -10
  99. package/src/karin/platform/bilibili/riskControl.ts +10 -1
  100. package/src/karin/platform/douyin/douyin.ts +1451 -1416
  101. package/src/karin/platform/douyin/getID.ts +29 -8
  102. package/src/karin/platform/douyin/liveParams.ts +20 -0
  103. package/src/karin/platform/douyin/login.ts +11 -0
  104. package/src/karin/platform/douyin/push/live.ts +4 -4
  105. package/src/karin/platform/kuaishou/kuaishou.ts +260 -261
  106. package/src/karin/platform/xiaohongshu/getID.ts +28 -6
  107. package/src/karin/platform/xiaohongshu/xiaohongshu.ts +900 -901
  108. package/src/karin/setup.ts +7 -0
  109. package/src/karin/types/config/app.ts +1 -1
  110. package/src/karin/types/config/bilibili.ts +1 -1
  111. package/src/karin/types/config/douyin.ts +1 -1
  112. package/src/karin/types/config/kuaishou.ts +1 -1
  113. package/src/karin/types/config/xiaohongshu.ts +1 -1
  114. package/src/ktr/template/bilibili/qrcodeImg/components/qrcodeImg.tsx +179 -179
  115. package/src/ktr/template/douyin/qrcodeImg/components/qrcodeImg.tsx +170 -170
  116. package/src/ktr/template/other/handlerError/components/handlerError.tsx +59 -8
  117. package/src/ktr/template/other/handlerError/components/types.ts +18 -3
  118. package/src/player/index.ts +1 -38
  119. package/src/qqFields.json +32 -2
  120. package/src/richtext/parse/emojiAssets.generated.ts +3803 -0
  121. package/src/richtext/parse/index.ts +20 -1
  122. package/src/richtext/parse/unicodeEmoji.ts +144 -0
  123. package/src/verify/index.ts +260 -0
  124. package/src/verify/page.ts +289 -0
  125. package/src/verify/riskStrategy.ts +91 -0
  126. package/src/webui.ts +88 -37
package/CHANGELOG.md CHANGED
@@ -1,5 +1,137 @@
1
1
  # 更新日志
2
2
 
3
+ ## 4.0.1
4
+
5
+ > 修一个 4.0.0 带出来的问题:开了「强制在线播放」之后,**番剧还是会下载完直接发文件**,
6
+ > 在发不出视频文件的机器人上(比如 B站私聊机器人)就卡在上传那一步报错。
7
+ > 普通视频不受影响 —— 它一直都是给链接的。
8
+
9
+ ### 修:番剧不走「强制在线播放」
10
+
11
+ - 「在线播放器设置」里的「强制在线播放的适配器」(默认填的是 `bilibili`)对**普通视频**
12
+ 一直是生效的:解析完给一条在线播放链接,不发视频文件。
13
+ - 但**番剧**走的是另一条分支,那一条漏了这一步 —— 于是照旧把视频下下来发文件,
14
+ 碰上发不出视频文件的机器人就卡在上传那一步报错。
15
+ - 现在两条分支一致了:**番剧也只给在线播放链接**,不再尝试发文件。
16
+
17
+ ## 4.0.0
18
+
19
+ > 这是 3.0 之后攒的一次大版本。下面把 **3.0 到 4.0 之间所有你用得出来的变化**
20
+ > 按「用起来是什么样」重新整理了一遍 —— 只说你能看到、能感觉到的事。
21
+ > 一路跟着升上来的话,大部分你已经用到了,可以直接跳过。
22
+
23
+ ### 出图快了很多
24
+
25
+ - 卡片以前要半分钟才出来,现在**两三秒**。卡面上那层几乎看不出区别的噪点默认去掉了,
26
+ 它要一个像素一个像素地算,占掉九成时间;想要颗粒感可以在设置里换成小图案平铺,仍然比原来快很多。
27
+ - 信息卡、评论区、图集、视频**各走各的**,谁先准备好谁先发,不再互相等。
28
+ - 每张卡片该按几倍分辨率渲染,会自己测一次、记住快的那档,不用你管。
29
+
30
+ ### 图片清楚了,也不会再发糊
31
+
32
+ - 卡片、评论图、图集里的图现在都按**不会被二次压缩的方式**发,卡片上的小字不再糊成一团。
33
+ - 图片**不会再被拉变形**:显示的尺寸一律按真实宽高来,量不到就退回普通图片(会糊一点,但比例是对的)。
34
+ - 超过一定高度的图会自动切开再发,不会再「先整张发一遍、被退回来才补切」。
35
+ - 同一张图不会反复上传,也不会发两遍。
36
+
37
+ ### 该发出去的,真的发出去了
38
+
39
+ - 发送失败现在**按平台给的原因**分别处理:看到「文件太大」就直接切成几张,不白等、也不重复传。
40
+ - **大文件下不完**的问题修了:下载源卡住会自动换一个,只要还在传数据就不会被掐断,
41
+ 报错也不再说成「连接被重置」那种看不懂的话。
42
+ - 快手那种好几行的长标题,以前会让视频**整个发不出来**,现在会先把名字收拾干净,还是被退就换个名字再发。
43
+ - 发特别大的视频时偶尔冒出来的一句看不懂的报错,已修。
44
+ - 没拿到发送结果就是没发出去,不再当成成功悄悄丢掉。
45
+
46
+ ### 选清晰度:所有平台都能选了
47
+
48
+ - 以前只有官方 QQ 机器人能在面板上点着选,其它平台直接按设置里写死的画质走。
49
+ 现在**所有平台**发链接后都会先给一份列表,**回序号就能选**。
50
+ - QQ 系(NapCat、LLOneBot 这些)还能**用表情当按钮**:点第几个表情就是第几档。
51
+ 个别会把行内文字吞掉的协议端,表情会排在最后一行,并写明「从左到右数第几个」。
52
+ - 等多久可以自己设(默认 60 秒)。**到点没人选就按默认画质继续解析**,不会把链接一直晾着。
53
+ - 没勾「发送视频」时不会再多问一句画质。
54
+ - **「提取封面图」并进了这张面板**:最右边多一个「对的对的」表情,贴它就把封面单独提出来,
55
+ 而且**提完面板还在**,可以接着选清晰度。
56
+
57
+ ### 卡片下面能单独取图
58
+
59
+ - 卡片下面多了「提取封面图」「提取评论区图片」两个按钮,B站 / 抖音 / 小红书 / 快手都有。
60
+ - **同一个按钮只放行一次**,再点不会刷屏 —— 想再要一次,重新发一遍链接就行。
61
+ 自己手敲指令不受这个限制。
62
+ - 开了「是否收集评论区的图片」时,解析完会直接把评论里的图发一条,按钮不再重复挂。
63
+
64
+ ### 互动视频能一路选着玩了
65
+
66
+ - 群里发一条互动视频链接,**选项就浮在播放页的画面上**,点一条接着播下一段,全屏也看得见、点得动。
67
+ - 点完能看到下一段的下载进度,失败会给「重试这一段」,不用刷新整页;下过的段会留着,再点回去是秒开。
68
+ - **剧情图**:把整条剧情画成一张图,走过的分支加粗高亮,结局在哪一目了然(开关默认关)。
69
+ - 互动视频不再被体积上限拦住,下完才检查一次;太大的段给你播放链接,剧情照样接着玩。
70
+ - 弹幕更全了:以前轨道被白字弹幕占满后,彩色弹幕和顶部弹幕基本轮不到显示,现在会按比例抽稀,留位置给它们。
71
+
72
+ ### 在线播放
73
+
74
+ - **默认不在服务器上把画面和声音合成一个文件**,打开就能放;下载分成「画面」「声音」「合成后」三个。
75
+ - 播放页上多了一行**原视频地址**,点了能在新窗口打开原站。
76
+ - 机器人重启之后,之前发出去的播放链接**照样能选剧情**。
77
+
78
+ ### 合并转发
79
+
80
+ - 两种开法:通用里打开 = 所有平台都合并;或者只在某一个平台单独打开。**默认全关**。
81
+ - 可以自己挑合并哪些内容:文字 / 图片 / 视频 / 文件,**还有流程图和评论区图片**。
82
+ - 每条内容各占一个条目,图片不会再因为挤在一条里而全部加载不出来。
83
+ - 转发失败不会丢内容,会自动退回一条条发;开着合并转发时选清晰度也不会再卡住。
84
+
85
+ ### 出错了会怎么样
86
+
87
+ - 出错时会自动把**错误信息、运行环境、最近的日志**上传,并给你一个**编号**,
88
+ 带着编号进群求助就行,不用再截图、翻日志。**Cookie 一律不传**,像密钥那类字段一律打码。
89
+ - 嫌那张错误卡片占地方,可以打开「**出错只发文字**」,只在群里留一行「已上传,ID:xxx」。
90
+ - 错误卡片**不会再渲染十几分钟**,超长内容会自动折叠,几秒钟就出来。
91
+ - 机器人掉线时不再甩一句英文,会直说「机器人当前不在线,等上线后下次推送会正常发出」。
92
+ - 抖音没返回数据时不再扔一句英文,会说清是哪一类问题、常见原因是什么。
93
+ - 被反爬页、风控拦下那类失败,卡片上会多一块**平台真正回的内容**,不用再照着一句套话猜。
94
+ - 日志只传本插件相关的部分,不再把整台机器的日志尾巴都传上去。
95
+
96
+ ### 平台这块
97
+
98
+ - **抖音**:抖音改了风控规则,**换 cookie 是没用的** —— 是解析用的库太旧。已经换到带新签名的新版本,
99
+ 作品详情、评论区、弹幕都正常。剧集(合集里的正片)以前走的分支不对,也修了。
100
+ - **快手、小红书**:评论区以前渲染不出来、或者一解析就报错,现在都能正常显示。
101
+ - **小红书**图文笔记的图集以前会一次发两遍,现在只发一遍;关掉「图片」是真的不发了。
102
+ - **卡片解析**:B 站卡片认错 UP 主的问题修了(首行、UP 主前后行都当候选);
103
+ 候选列表在个人号上也发得出来了(改成纯文本,一条条列标题和链接)。
104
+ - 评论、动态正文里的 emoji 以前在群里显示成**一个个方框**,现在换成苹果的表情图来画,
105
+ 肤色、国旗、`9️⃣` 这类组合也都认。
106
+
107
+ ### 卡片上的小修小补
108
+
109
+ - B站卡片的**简介**以前会整块不见,现在单行、多行、带 @ 和链接的都正常(QQ 面板那张也一起修了)。
110
+ - 实况照片那张提示卡以前在群里显示成一坨(间距全没、图标只剩两三个),已修。
111
+ - 评论卡右下角的二维码**中间带上作者头像**了(B站 / 快手 / 小红书,和抖音统一)。
112
+ - 一批卡片标题和数字的字号从最粗降到次粗,小尺寸下不再糊成一团。
113
+ - 抖音评论图里的二维码地址统一成规范短链,扫出来的地址稳定;
114
+ 登录二维码在部分机器上显示成一片方格的问题也修了。
115
+ - 抖音推送不会因为「去重记录到期」就把还在列表里的历史作品重复推一遍。
116
+
117
+ ### 设置和控制台
118
+
119
+ - 控制台里 40 条指令收进了 `kkk` 一个分组;`解析 <链接>` 这几种写法照旧都能用。
120
+ - 控制台插件配置页里的设置**全部隐藏**(避免两个界面各改一半互相覆盖),统一在 `/kkk` 面板里改;
121
+ 面板里多了「Koishi 设置」一组,以前只能在控制台改的几项现在也能在面板改。
122
+ - 面板里 200 多项设置全部显示、全部展开,说明都改成了看得懂的说法。
123
+ - 只支持**浏览器渲染**了:老的内置方案在 Windows 上加载不了网络图片,
124
+ 卡片里的封面、头像一直是空白框。装一个浏览器渲染插件即可。
125
+
126
+ ### 升级要注意
127
+
128
+ - **数据存放方式变了**:不再自己在数据目录里开数据库文件,全部改用 Koishi 自带的数据库,
129
+ 备份和迁移跟着你的宿主走。**代价:过滤词 / 过滤标签和解析统计历史会从零开始**
130
+ (订阅关系不受影响,每次启动自动重建)。
131
+ - 数据库服务变成**必选**,没配置数据库时插件不会加载。
132
+ - 以前在 MySQL 上建出过半截表的,需要先删掉再启动,让插件按新定义重建。
133
+ - 升级完**重启一次机器人**,并建议实测一次抖音解析。
134
+
3
135
  ## 3.14.0
4
136
 
5
137
  这一版把「选清晰度」这件事带到了 OneBot 平台(NapCat / Lagrange / LLOneBot 等),
@@ -24,12 +156,152 @@
24
156
  那是 QQ 私有的按钮标签,OneBot 不认 markdown,原样印出来就是一串乱码。
25
157
  现在只在**真的支持 markdown 的平台**上发按钮,其它平台发成一句可以直接复制的话。
26
158
 
27
- ### 点不动表情时的退路
159
+ ### 所有平台都能选清晰度了(不只是 QQ 系)
160
+
161
+ 上面那套表情按钮只有 QQ 系能用,其它平台以前是直接按配置里写死的画质解析。现在统一了:
162
+
163
+ - 发链接后先给一份**数字列表**,**回序号就能选**(开关「发链接后先问清晰度」,默认开);
164
+ - QQ 系(NapCat / LLOneBot 等)可以在此之上**额外**选择用表情当按钮(默认开),
165
+ 不需要就把那一个关掉,退回数字列表;
166
+ - **等多久**可以配(默认 60 秒)。到点没人点就**按配置里的默认画质继续解析**,
167
+ 不会把链接一直晾在那儿;
168
+ - LLOneBot 这类会把行内文字吞掉的协议端,表情改成排在最后一行,
169
+ 并多写一句「从左到右数第几个」。
170
+ **修:有的 LLOneBot 上选项还是会被吞**(5 档只剩「1.」和「5.」两行)——
171
+ 排法以前把「适配器叫什么」也算进判断,用 napcat 适配器连 LLOneBot 就被当成了 NapCat。
172
+ 现在**只看对面协议端自己报的名字**,报不上来就按最保险的排(表情放最后一行);
173
+ 日志里会打一行「表情排法判定:协议端 = … → …」,判成哪种一眼能看见。
174
+
175
+ ### 修:没勾「发送视频」也会问清晰度
176
+
177
+ 解析时发什么(作品信息 / 评论图片 / 视频)是分平台勾选的。以前只要开了清晰度面板,
178
+ **没勾视频也会先问一句画质**,答完才继续 —— 白问一次。
179
+ 现在没勾视频就直接跳过,该发的卡片照发。
180
+
181
+ ### 修:Milky 上图片发成一串看不懂的代码
182
+
183
+ Milky 上发图会变成 `![#420px #315px](https://…)` 这种裸文本,图一张都出不来 ——
184
+ 因为这个尺寸写法是 **QQ 官方机器人**才认的 markdown 语法,Milky 不渲染。
185
+
186
+ 「哪些平台不认 markdown」这份名单以前在四个文件里各写了一遍,**全都漏了 Milky**,
187
+ 于是它被当成「会渲染 markdown」的那类。现在名单收敛到一处,Milky 明确在不渲染那边,
188
+ 评论区图片、封面这些都改回普通图片发送。
189
+
190
+ ### 修:Satori 适配器上「收得到表情、发不出表情」
191
+
192
+ 走 Satori 适配器的协议端能收到点击、却怎么也发不出那排表情 —— 它的 Bot 上是**一个
193
+ 表情方法都没有**的(适配器按协议的方法表批量生成,而表情回应还是实验性资源、不在表里,
194
+ 连标准的那个方法都没生成)。
195
+
196
+ 现在方法找不到时会**按 Satori 协议直接发 HTTP**(`reaction.create` / `reaction.delete` /
197
+ `reaction.list`),适配器自带的连接已经带好了身份信息,照协议发就行。
198
+ 顺带 `reaction.list` 也能用了 —— 这条链路上连「谁点了」都查得到。
199
+
200
+ ### 新:Milky 上也能用表情选清晰度了
201
+
202
+ Milky 是 QQ NT 的另一套实现端,**它不是 OneBot**(没有 `set_msg_emoji_like`),
203
+ 所以以前在 Milky 上根本不会出清晰度面板。现在接上了:它的适配器给的是
204
+ **Satori 标准**的「贴表情 / 撤表情」接口,和 OneBot 那套形状完全不一样,
205
+ 两边各走各的路,功能一样(选清晰度、提取封面图、是否在线播放都能用)。
206
+
207
+ 点击这件事 Milky 反而**比 NapCat 更稳**:它的适配器把群里的表情回应直接发成标准事件,
208
+ 不像 NapCat 那条会被适配器丢掉,所以不需要机器人反复去问「谁点了」。
209
+
210
+ ### 新:「提取封面图」并进清晰度面板
211
+
212
+ 开了「发送视频」时,链接会先出清晰度面板,作品详情卡就不再单独发一次,
213
+ 而「提取封面图」原本只挂在那张卡上 —— 于是按钮整个消失。
214
+
215
+ 现在它**就在清晰度面板上**:面板最右边多一个 ✅️(对的对的),**贴它就把封面单独提出来**,
216
+ 而且**提完面板还在**,可以接着选清晰度;一直不选就按原来的超时处理(用默认画质继续解析)。
217
+ 没有表情可点的协议端上,它在数字列表里占一个序号,回那个序号效果一样。
218
+
219
+ 顺带几处小改动:
220
+
221
+ - 卡片下面那句提示现在会写明**「也可以直接给这条消息贴个表情」**
222
+ (只在真的会贴表情时才写,做不到就不写,免得照着做了没反应);
223
+ - 这个按钮的有效期从 3 分钟延长到 **10 分钟**,翻回去再点也能用;
224
+ - **提示里不再写 ✅️ 那种字符**了 —— 它在 QQ 上会显示成另一个图案,跟真贴上去的
225
+ 那个表情对不上,照着找一个对不上的图案等于白写。现在 NapCat 上把表情直接印在
226
+ 选项旁边,LLOneBot 上(那边表情只能排在最后一行)改成写「最右边那个『对的对的』」;
227
+ - 评论区图片**已经按配置直接发过**时,那条消息下面不再挂任何提示和表情。
228
+
229
+ ### 新:「合并转发内容」里可以单独勾「评论区图片」
230
+
231
+ 评论区里**用户自己贴的那些图**(就是「是否收集评论区的图片」打开时自动发出去的那一批)
232
+ 现在单独算一类,可以自己决定进不进聊天记录 —— **默认不进**:评论长图里已经把这些图画过一遍了,
233
+ 再在转发里收一份原图,同一批图会在一条记录里出现两遍,没意义。想要它进去就勾上「评论区图片」。
234
+
235
+ ### 修:开着「解析结果合并转发」时点了表情没反应
236
+
237
+ 合并转发模式下,选择提示会被先攒进转发缓冲区、拿不到真实的消息 id,
238
+ 面板拿着这个假 id 去贴表情、去等回应 —— 当然永远等不到。
239
+
240
+ 现在**先只发选择提示,选完把这些都撤回,解析结果才合并成一条转发发出去**:
241
+ 先选、后解析、再合并。
242
+
243
+ 开着合并转发时,**选清晰度这一步不再渲染作品详情卡**了 —— 只出一句选择提示,
244
+ 卡片留到你选完、真正开始解析时才渲染,于是卡片、视频、评论区**合成一条**转发出去,
245
+ 不会像之前那样先出一条「只有卡片」的转发、再出第二条。
246
+ (不开合并转发时不变:卡片照旧单独发一条,不会被选择提示那条消息一起撤掉。)
247
+
248
+ ### 修:发送大文件时报 `Maximum call stack size exceeded`
249
+
250
+ 往群里发体积较大的视频时,偶发一条看不懂的 `Maximum call stack size exceeded`,
251
+ 视频发不出来,也看不到真正的失败原因。已修。
252
+
253
+ ### 新:评论和动态里的 emoji 不再显示成方框
254
+
255
+ 评论、动态正文里大家打的 🔥、❤ 这类表情,以前在群里渲染出来是**一个个方框**
256
+ —— 生成图片的容器里没有表情字体,画不出来。
257
+
258
+ 现在改成用 Apple 的表情图来画:文字里每个表情都会被单独挑出来,换成对应的一张小图
259
+ 贴回原来的位置,肤色、国旗、`9️⃣` 这类组合形态也认得(评论里常见的「不带修饰符号」
260
+ 的 ❤ 也认)。
261
+
262
+ 这套图源是**可选依赖**,没装的话表情会退回成原来的字符,不影响其它功能。
263
+
264
+ ### 修:抖音部分账号解析被拦成 403
265
+
266
+ 抖音的网页接口现在要求带一组风控签名,少了就被拦成
267
+ `403 Blocked by ArgusSecurityPlugin Uifid Not Found` ——
268
+ 表现是**怎么换 cookie 都解析不了**,看着像 cookie 失效,其实不是。
269
+
270
+ 这套签名能力在解析库里,这次把解析库升到了带它的新版本。
271
+ **升级后建议实测一次抖音解析**(这是唯一没法离线验证的一项)。
272
+
273
+ ### 修:抖音剧集类作品走的分支不对
274
+
275
+ 剧集(合集里的正片)以前没被当成视频,走的分支不对。已修。
276
+
277
+ ### 修:抖音评论图里的二维码地址不规范
278
+
279
+ 评论区长图里那张二维码,非视频作品(图文 / 文章)的地址以前不是规范短链。
280
+ 现在统一成 `www.douyin.com` 的写法,扫出来的地址稳定。
281
+
282
+ ### 修:登录二维码在部分机器上显示成一片方格
283
+
284
+ 登录二维码那张图用了一个容器里未必存在的字体族,字族对不上时就渲染成一片方格。已修。
285
+
286
+ ### 新:解析失败时能看到平台到底回了什么
287
+
288
+ 撞上反爬页、被风控拦截那类失败,错误卡上以前只有一句「平台返回了反爬页面」
289
+ —— 那其实是库自己的兜底话,**不是平台说的**。
290
+
291
+ 现在这种情况会多一块**「响应体原文」**,把平台真正回的内容截一段印出来(太长会截断);
292
+ 上面那句也改叫「错误说明」,免得被当成平台原话。
293
+
294
+ ### 修:几个只在特定输入下才会出问题的隐患
28
295
 
29
- 表情这条路依赖协议端的**表情回应**能力,各家支持程度不一样。所以留了两条一定能用的退路:
296
+ 这几处都是上游修的安全问题,平时用不出来,但一旦被构造输入命中就有影响:
30
297
 
31
- - **引用**那条选择消息,回复序号(1 / 2 / 3…)—— 谁都能用;
32
- - **发链接的人**在 3 分钟内直接回数字也行。
298
+ - **引用消息里的图片地址**:以前拿到地址就去下载。如果那个地址指向内网
299
+ (`localhost`、私有网段这类),机器人会照着去访问。现在不是公网 http(s) 地址就不下载;
300
+ - **抖音 / 小红书短链展开**:展开前先确认域名真的是这两个站,不是就不发请求;
301
+ - **抖音下载直链**:以前只要消息里出现那段链接文字,就把**整条消息**当地址拿去下载。
302
+ 现在改成逐个取出 URL、核对该站域名与路径后才下载;
303
+ - **视频临时预览地址**:以前直接用磁盘文件名寻址,会**把服务器上的文件路径暴露出去**。
304
+ 现在改成随机令牌,预览页 / 视频流 / 状态推送都不再带路径。
33
305
 
34
306
  ## 3.13.0
35
307