koishi-plugin-kkk 3.10.0 → 3.10.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # 更新日志
2
2
 
3
+ ## 3.10.1
4
+
5
+ > B站的复制跳转修一下:3.10.0 改成用用户发的那条链接后,B站 App 复制了反而不跳。
6
+
7
+ ### B站跳转链接改回标准视频页
8
+
9
+ - 3.10.0 让跳转块统一用用户发出来的那条链接,B站照做之后反而不能用:
10
+ 用户发的多半是 `b23.tv/xxx` 短链,**B站 App 复制了不跳转**。
11
+ - B站的跳转块固定用 `https://www.bilibili.com/video/<bvid>`(分 P 带 `?p=N`),
12
+ 不再用用户发的那条。卡片右下角的二维码同步改成这条,两边一致。
13
+ - 抖音、快手、小红书仍按 3.10.0 的规则:用用户原样发的那条短链。
14
+
3
15
  ## 3.10.0
4
16
 
5
17
  > 解析消息底部的「打开原站」链接换成了**代码块形式的跳转卡片**:
@@ -1,10 +1,10 @@
1
1
  {
2
- "version": "3.10.0",
3
- "buildTime": "2026-09-29T18:43:09.611Z",
4
- "buildTimestamp": 1790707389633,
2
+ "version": "3.10.1",
3
+ "buildTime": "2026-09-30T02:30:42.608Z",
4
+ "buildTimestamp": 1790735442631,
5
5
  "name": "koishi-plugin-kkk",
6
6
  "description": "抖音 / B站 / 快手 / 小红书 视频解析与动态推送,带 QQ 交互面板与弹幕烧录(karin-plugin-kkk 的 Koishi 移植版)",
7
7
  "homepage": "https://github.com/maimai993/koishi-plugin-kkk#readme",
8
- "commitHash": "ec43387a40b337a0c1430c7b2eef36668fa92fc5",
9
- "shortCommitHash": "ec43387"
8
+ "commitHash": "faa50bc98b4adaa32a0dda5bdf68de39539794f1",
9
+ "shortCommitHash": "faa50bc"
10
10
  }
@@ -326,12 +326,11 @@ const handleBilibili = (0, ParseForward_1.withParseForward)((0, ErrorHandler_1.w
326
326
  platform: 'bilibili',
327
327
  url: 'https://www.bilibili.com/video/' + iddata.bvid + (iddata.p ? '?p=' + iddata.p : ''),
328
328
  id: String(iddata.bvid),
329
- page: iddata.p,
329
+ page: iddata.p
330
330
  /**
331
- * 跳转块用**用户发出来的那条**(通常是 b23.tv 短链):
332
- * 上面那条规范链接带 ?p= 参数,长度上去了 App 剪贴板就认不出来。
331
+ * B站**不传 jumpUrl**:跳转块固定用 `www.bilibili.com/video/<bvid>` 这种标准形态
332
+ * (b23.tv 短链 App 复制了不跳转),由面板自己按 bvid + 分P 拼,见 `bilibiliShareUrl`。
333
333
  */
334
- jumpUrl: String(url)
335
334
  }, flags)) {
336
335
  return;
337
336
  }
@@ -401,13 +401,18 @@ function douyinShareUrl(awemeId, detailShareUrl) {
401
401
  return String(detailShareUrl ?? '') || ('https://www.douyin.com/video/' + String(awemeId));
402
402
  }
403
403
  /**
404
- * B站作品的跳转链接。
404
+ * B站的跳转链接:**固定用标准视频页** `https://www.bilibili.com/video/<bvid>`。
405
405
  *
406
- * 用 **b23.tv 短链**(`https://b23.tv/<bvid>`):卡片右下角二维码走的就是这条,
407
- * 扫二维码和复制跳转是同一件事,两处链接必须一致。
406
+ * 试过 b23.tv 短链(`https://b23.tv/<bvid>`),实测 B站 App 认不出来 —— 复制后打开 App
407
+ * 没反应,必须是完整的 `www.bilibili.com/video/BV…` 这种形态。分 P 走 `?p=N` 查询参数。
408
+ *
409
+ * 卡片右下角的二维码也走这条(扫码不受长度影响,和跳转块保持一致)。
410
+ * @param bvid BV 号
411
+ * @param page 分 P(1 表示第一 P,不用带参数)
408
412
  */
409
- function bilibiliShareUrl(bvid) {
410
- return 'https://b23.tv/' + String(bvid);
413
+ function bilibiliShareUrl(bvid, page) {
414
+ const url = 'https://www.bilibili.com/video/' + String(bvid);
415
+ return page && page > 1 ? url + '?p=' + page : url;
411
416
  }
412
417
  /** 快手作品页链接(App 认的是自家域名下的链接,短链最终也是跳到这里) */
413
418
  function kuaishouShareUrl(photoId) {
@@ -1178,18 +1183,20 @@ async function sendQqParsePanel(e, request) {
1178
1183
  * B站 / 抖音给的是「复制后打开 XX 自动跳转」代码块:各家 App 都认剪贴板里的自家链接,
1179
1184
  * 不依赖 QQ 会不会把 markdown 链接渲染成可点的东西。快手之类仍给普通链接。
1180
1185
  *
1181
- * 链接**用用户原样发的那条**(`request.jumpUrl`),拼不出来才退回 `request.url`。
1182
- * 之前按「和卡片二维码一致」去用 `bilibiliShareUrl` / `douyinShareUrl`,实测行不通:
1183
- * 那种链接带一串 `xsec_token` / `u_code` 之类的参数,长到 App 的剪贴板识别压根不认。
1184
- * 反过来用户发出来的 `b23.tv/xxx`、`v.douyin.com/xxx` 本来就是 App 自己生成的分享形态,
1185
- * 最短也最容易被识别。二维码那边不受影响(扫码不吃 URL 长度),保持原来的链接不动。
1186
+ * 链接**优先用用户原样发的那条**(`request.jumpUrl`):我们拼的链接往往偏长,
1187
+ * App 剪贴板识别不了;用户发出来的 `v.douyin.com/xxx`、`v.kuaishou.com/xxx` 本来就是
1188
+ * 各家 App 自己生成的分享形态,最短也最容易被识别。
1189
+ *
1190
+ * **B站是唯一的例外**:它反过来 —— b23.tv 短链 App 不认,必须是完整的
1191
+ * `www.bilibili.com/video/BV…`,所以那支固定走 `bilibiliShareUrl()`,不用用户发的那条。
1192
+ * 二维码(卡片右下角)不受影响,和上面各平台一样保持自己的链接。
1186
1193
  */
1187
1194
  const linkStart = lines.length;
1188
1195
  if (runtime.config.qqPanelSourceLink !== false && request.url) {
1189
- // 优先用户原样发的那条:我们拼的链接偏长,App 剪贴板识别不了;App 自家分享的短链才稳
1190
1196
  const jumpUrl = request.jumpUrl || request.url;
1191
1197
  const block = request.platform === 'bilibili'
1192
- ? copyJumpBlock('b站', jumpUrl)
1198
+ // B站固定用 BV 规范链接(短链 App 不识别),分 P 靠 request.page 带上
1199
+ ? copyJumpBlock('b站', bilibiliShareUrl(String(request.id), request.page))
1193
1200
  : request.platform === 'douyin'
1194
1201
  ? copyJumpBlock('抖音', jumpUrl, DOUYIN_JUMP_TOKEN)
1195
1202
  : [sourceLink('打开原站', jumpUrl)];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "koishi-plugin-kkk",
3
- "version": "3.10.0",
3
+ "version": "3.10.1",
4
4
  "description": "抖音 / B站 / 快手 / 小红书 视频解析与动态推送,带 QQ 交互面板与弹幕烧录(karin-plugin-kkk 的 Koishi 移植版)",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -319,12 +319,11 @@ const handleBilibili = withParseForward(wrapWithErrorHandler(
319
319
  platform: 'bilibili',
320
320
  url: 'https://www.bilibili.com/video/' + iddata.bvid + (iddata.p ? '?p=' + iddata.p : ''),
321
321
  id: String(iddata.bvid),
322
- page: iddata.p,
322
+ page: iddata.p
323
323
  /**
324
- * 跳转块用**用户发出来的那条**(通常是 b23.tv 短链):
325
- * 上面那条规范链接带 ?p= 参数,长度上去了 App 剪贴板就认不出来。
324
+ * B站**不传 jumpUrl**:跳转块固定用 `www.bilibili.com/video/<bvid>` 这种标准形态
325
+ * (b23.tv 短链 App 复制了不跳转),由面板自己按 bvid + 分P 拼,见 `bilibiliShareUrl`。
326
326
  */
327
- jumpUrl: String(url)
328
327
  }, flags)
329
328
  ) {
330
329
  return
@@ -407,13 +407,18 @@ export function douyinShareUrl (awemeId: string, detailShareUrl?: string): strin
407
407
  }
408
408
 
409
409
  /**
410
- * B站作品的跳转链接。
410
+ * B站的跳转链接:**固定用标准视频页** `https://www.bilibili.com/video/<bvid>`。
411
411
  *
412
- * 用 **b23.tv 短链**(`https://b23.tv/<bvid>`):卡片右下角二维码走的就是这条,
413
- * 扫二维码和复制跳转是同一件事,两处链接必须一致。
412
+ * 试过 b23.tv 短链(`https://b23.tv/<bvid>`),实测 B站 App 认不出来 —— 复制后打开 App
413
+ * 没反应,必须是完整的 `www.bilibili.com/video/BV…` 这种形态。分 P 走 `?p=N` 查询参数。
414
+ *
415
+ * 卡片右下角的二维码也走这条(扫码不受长度影响,和跳转块保持一致)。
416
+ * @param bvid BV 号
417
+ * @param page 分 P(1 表示第一 P,不用带参数)
414
418
  */
415
- export function bilibiliShareUrl (bvid: string): string {
416
- return 'https://b23.tv/' + String(bvid)
419
+ export function bilibiliShareUrl (bvid: string, page?: number): string {
420
+ const url = 'https://www.bilibili.com/video/' + String(bvid)
421
+ return page && page > 1 ? url + '?p=' + page : url
417
422
  }
418
423
 
419
424
  /** 快手作品页链接(App 认的是自家域名下的链接,短链最终也是跳到这里) */
@@ -1185,18 +1190,20 @@ export async function sendQqParsePanel (e: Message, request: PanelRequest): Prom
1185
1190
  * B站 / 抖音给的是「复制后打开 XX 自动跳转」代码块:各家 App 都认剪贴板里的自家链接,
1186
1191
  * 不依赖 QQ 会不会把 markdown 链接渲染成可点的东西。快手之类仍给普通链接。
1187
1192
  *
1188
- * 链接**用用户原样发的那条**(`request.jumpUrl`),拼不出来才退回 `request.url`。
1189
- * 之前按「和卡片二维码一致」去用 `bilibiliShareUrl` / `douyinShareUrl`,实测行不通:
1190
- * 那种链接带一串 `xsec_token` / `u_code` 之类的参数,长到 App 的剪贴板识别压根不认。
1191
- * 反过来用户发出来的 `b23.tv/xxx`、`v.douyin.com/xxx` 本来就是 App 自己生成的分享形态,
1192
- * 最短也最容易被识别。二维码那边不受影响(扫码不吃 URL 长度),保持原来的链接不动。
1193
+ * 链接**优先用用户原样发的那条**(`request.jumpUrl`):我们拼的链接往往偏长,
1194
+ * App 剪贴板识别不了;用户发出来的 `v.douyin.com/xxx`、`v.kuaishou.com/xxx` 本来就是
1195
+ * 各家 App 自己生成的分享形态,最短也最容易被识别。
1196
+ *
1197
+ * **B站是唯一的例外**:它反过来 —— b23.tv 短链 App 不认,必须是完整的
1198
+ * `www.bilibili.com/video/BV…`,所以那支固定走 `bilibiliShareUrl()`,不用用户发的那条。
1199
+ * 二维码(卡片右下角)不受影响,和上面各平台一样保持自己的链接。
1193
1200
  */
1194
1201
  const linkStart = lines.length
1195
1202
  if (runtime.config.qqPanelSourceLink !== false && request.url) {
1196
- // 优先用户原样发的那条:我们拼的链接偏长,App 剪贴板识别不了;App 自家分享的短链才稳
1197
1203
  const jumpUrl = request.jumpUrl || request.url
1198
1204
  const block = request.platform === 'bilibili'
1199
- ? copyJumpBlock('b站', jumpUrl)
1205
+ // B站固定用 BV 规范链接(短链 App 不识别),分 P 靠 request.page 带上
1206
+ ? copyJumpBlock('b站', bilibiliShareUrl(String(request.id), request.page))
1200
1207
  : request.platform === 'douyin'
1201
1208
  ? copyJumpBlock('抖音', jumpUrl, DOUYIN_JUMP_TOKEN)
1202
1209
  : [sourceLink('打开原站', jumpUrl)]