koishi-plugin-bilibili-notify 3.0.1-alpha.2 → 3.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.
@@ -45,6 +45,7 @@ declare class ComRegister {
45
45
  }
46
46
  declare namespace ComRegister {
47
47
  interface Config {
48
+ subLoadTimeout: number;
48
49
  sub: Array<{
49
50
  uid: string;
50
51
  dynamic: boolean;
@@ -477,7 +477,9 @@ class ComRegister {
477
477
  // 更新基线
478
478
  let updateBaseline;
479
479
  // 第一条动态的动态ID
480
- let dynamicIdStr;
480
+ let dynamicIdStr1st;
481
+ // 第二条动态的动态ID
482
+ let dynamicIdStr2nd;
481
483
  // 定义handler
482
484
  const handler = async () => {
483
485
  // 检测启动初始化
@@ -499,7 +501,12 @@ class ComRegister {
499
501
  // 设置更新基线
500
502
  updateBaseline = content.data.update_baseline;
501
503
  // 设置第一条动态的动态ID
502
- dynamicIdStr = content.data.items[0].id_str;
504
+ dynamicIdStr1st = content.data?.items[0]?.id_str || "0";
505
+ // 判断第二条动态是否存在
506
+ if (content.data?.items[1]) {
507
+ // 设置第二条动态的动态ID
508
+ dynamicIdStr2nd = content.data.items[1].id_str;
509
+ }
503
510
  // 设置初始化为false
504
511
  detectSetup = false;
505
512
  // 初始化完成
@@ -569,7 +576,9 @@ class ComRegister {
569
576
  // 检查更新的动态
570
577
  for (const item of items) {
571
578
  // 动态ID如果一致则结束循环
572
- if (item.id_str === dynamicIdStr)
579
+ if (item.id_str === dynamicIdStr1st)
580
+ break;
581
+ if (item.id_str === dynamicIdStr2nd)
573
582
  break;
574
583
  // 没有动态内容则直接跳过
575
584
  if (!item)
@@ -637,7 +646,8 @@ class ComRegister {
637
646
  }
638
647
  }
639
648
  // 更新本次请求第一条动态的动态ID
640
- dynamicIdStr = items[0].id_str;
649
+ dynamicIdStr1st = items[0]?.id_str || "0";
650
+ dynamicIdStr2nd = items[1]?.id_str || "0";
641
651
  };
642
652
  // 返回一个闭包函数
643
653
  return (0, utils_1.withLock)(handler);
@@ -648,7 +658,8 @@ class ComRegister {
648
658
  // 更新基线
649
659
  let updateBaseline;
650
660
  // 第一条动态的动态ID
651
- let dynamicIdStr;
661
+ let dynamicIdStr1st;
662
+ let dynamicIdStr2nd;
652
663
  // 定义handler
653
664
  const handler = async () => {
654
665
  this.logger.info(`初始化状态:${detectSetup}`);
@@ -672,8 +683,10 @@ class ComRegister {
672
683
  updateBaseline = content.data.update_baseline;
673
684
  this.logger.info(`更新基线:${updateBaseline}`);
674
685
  // 设置第一条动态的动态ID
675
- dynamicIdStr = content.data.items[0].id_str;
676
- this.logger.info(`第一条动态ID:${dynamicIdStr}`);
686
+ dynamicIdStr1st = content.data.items[0]?.id_str || "0";
687
+ dynamicIdStr2nd = content.data.items[1]?.id_str || "0";
688
+ this.logger.info(`第一条动态ID:${dynamicIdStr1st}`);
689
+ this.logger.info(`第二条动态ID:${dynamicIdStr2nd}`);
677
690
  // 设置初始化为false
678
691
  detectSetup = false;
679
692
  // 初始化完成
@@ -681,7 +694,8 @@ class ComRegister {
681
694
  return;
682
695
  }
683
696
  this.logger.info(`更新基线:${updateBaseline}`);
684
- this.logger.info(`第一条动态ID:${dynamicIdStr}`);
697
+ this.logger.info(`第一条动态ID:${dynamicIdStr1st}`);
698
+ this.logger.info(`第二条动态ID:${dynamicIdStr2nd}`);
685
699
  this.logger.info("获取动态内容中...");
686
700
  // 使用withRetry函数进行重试
687
701
  const content = await (0, utils_1.withRetry)(async () => {
@@ -751,10 +765,11 @@ class ComRegister {
751
765
  // 检查更新的动态
752
766
  for (const item of items) {
753
767
  // 动态ID如果一致则结束循环
754
- if (item.id_str === dynamicIdStr) {
768
+ if (item.id_str === dynamicIdStr1st || item.id_str === dynamicIdStr2nd) {
769
+ // logger
755
770
  this.logger.info("动态ID与上次检测第一条一致,结束循环");
756
- // 结束循环
757
771
  this.logger.info("动态检测结束");
772
+ // 结束循环
758
773
  break;
759
774
  }
760
775
  // 没有动态内容则直接跳过
@@ -830,7 +845,8 @@ class ComRegister {
830
845
  }
831
846
  }
832
847
  // 更新本次请求第一条动态的动态ID
833
- dynamicIdStr = items[0].id_str;
848
+ dynamicIdStr1st = items[0]?.id_str || "0";
849
+ dynamicIdStr2nd = items[1]?.id_str || "0";
834
850
  };
835
851
  // 返回一个闭包函数
836
852
  return (0, utils_1.withLock)(handler);
@@ -1349,7 +1365,7 @@ class ComRegister {
1349
1365
  return;
1350
1366
  // 终止
1351
1367
  controller.abort(`加载订阅UID:${sub.uid}超时`);
1352
- }, 10 * 1000);
1368
+ }, this.config.subLoadTimeout * 1000);
1353
1369
  });
1354
1370
  await Promise.race([
1355
1371
  (async () => {
@@ -1391,6 +1407,8 @@ class ComRegister {
1391
1407
  // 订阅加载超时,取消订阅加载
1392
1408
  return;
1393
1409
  }
1410
+ // 清除定时器
1411
+ timer();
1394
1412
  // 将该订阅添加到sm中
1395
1413
  this.subManager.push({
1396
1414
  id: +sub.uid,
@@ -1403,8 +1421,6 @@ class ComRegister {
1403
1421
  dynamic: sub.dynamic,
1404
1422
  card: sub.card,
1405
1423
  });
1406
- // 清除定时器
1407
- timer();
1408
1424
  // logger
1409
1425
  this.logger.info(`UID:${sub.uid}订阅加载完毕!`);
1410
1426
  })(),
@@ -1440,6 +1456,7 @@ class ComRegister {
1440
1456
  }
1441
1457
  (function (ComRegister) {
1442
1458
  ComRegister.Config = koishi_1.Schema.object({
1459
+ subLoadTimeout: koishi_1.Schema.number(),
1443
1460
  sub: koishi_1.Schema.array(koishi_1.Schema.object({
1444
1461
  uid: koishi_1.Schema.string().description("订阅用户UID"),
1445
1462
  dynamic: koishi_1.Schema.boolean().description("是否订阅用户动态"),
package/lib/index.d.ts CHANGED
@@ -32,6 +32,7 @@ export interface Config {
32
32
  automaticResend: boolean;
33
33
  userAgent: string;
34
34
  subTitle: {};
35
+ subLoadTimeout: number;
35
36
  sub: Array<{
36
37
  name: string;
37
38
  uid: string;
package/lib/index.js CHANGED
@@ -139,6 +139,7 @@ class ServerManager extends koishi_1.Service {
139
139
  });
140
140
  // CR = ComRegister
141
141
  const cr = this.ctx.plugin(comRegister_1.default, {
142
+ subLoadTimeout: globalConfig.subLoadTimeout,
142
143
  sub: globalConfig.sub,
143
144
  master: globalConfig.master,
144
145
  automaticResend: globalConfig.automaticResend,
@@ -276,6 +277,9 @@ exports.Config = koishi_1.Schema.object({
276
277
  .required()
277
278
  .description("设置请求头User-Agen,请求出现-352时可以尝试修改,UA获取方法可参考:https://blog.csdn.net/qq_44503987/article/details/104929111"),
278
279
  subTitle: koishi_1.Schema.object({}).description("订阅配置"),
280
+ subLoadTimeout: koishi_1.Schema.number()
281
+ .default(10)
282
+ .description("订阅加载超时时间,单位为秒,默认10秒"),
279
283
  sub: koishi_1.Schema.array(koishi_1.Schema.object({
280
284
  name: koishi_1.Schema.string().description("订阅用户昵称,只是给你自己看的(相当于备注),可填可不填"),
281
285
  uid: koishi_1.Schema.string().required().description("订阅用户UID"),
@@ -308,8 +312,7 @@ exports.Config = koishi_1.Schema.object({
308
312
  koishi_1.Schema.object({
309
313
  enable: koishi_1.Schema.boolean()
310
314
  .default(false)
311
- .description("是否开启自定义卡片颜色")
312
- .experimental(),
315
+ .description("是否开启自定义卡片颜色"),
313
316
  }),
314
317
  koishi_1.Schema.union([
315
318
  koishi_1.Schema.object({
@@ -62,29 +62,27 @@ export type AllDynamicInfo = {
62
62
  message: string;
63
63
  data: {
64
64
  has_more: boolean;
65
- items: [
66
- {
67
- id_str: string;
68
- type: string;
69
- modules: {
70
- module_author: {
71
- mid: number;
72
- name: string;
73
- face: string;
74
- };
75
- module_dynamic: {
76
- major: {
77
- draw: {
78
- items: Array<{
79
- src: string;
80
- alt: string;
81
- }>;
82
- };
65
+ items: Array<{
66
+ id_str: string;
67
+ type: string;
68
+ modules: {
69
+ module_author: {
70
+ mid: number;
71
+ name: string;
72
+ face: string;
73
+ };
74
+ module_dynamic: {
75
+ major: {
76
+ draw: {
77
+ items: Array<{
78
+ src: string;
79
+ alt: string;
80
+ }>;
83
81
  };
84
82
  };
85
83
  };
86
- }
87
- ];
84
+ };
85
+ }>;
88
86
  offset: string;
89
87
  update_baseline: string;
90
88
  update_num: number;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-bilibili-notify",
3
3
  "description": "Koishi bilibili notify plugin",
4
- "version": "3.0.1-alpha.2",
4
+ "version": "3.0.1",
5
5
  "contributors": [
6
6
  "Akokko <admin@akokko.com>"
7
7
  ],
package/readme.md CHANGED
@@ -216,6 +216,7 @@
216
216
  - ver 3.0.1-alpha.0 优化:动态推送逻辑
217
217
  - ver 3.0.1-alpha.1 新增:直播提示语换行符,配置项 `sub.name` 为可选项; 修复:debug模式下动态监测5S一次; 优化:加载订阅
218
218
  - ver 3.0.1-alpha.2 优化:改进错误提示,改进订阅加载方式
219
+ - ver 3.0.1 修复:动态推送过程中,如果上一次请求的第一条动态被删除,可能导致动态重复推送(本次修复并不能完全保障不重复推送,如果第一条和第二条都被删除则可能会出现重复推送); 新增:配置项 `subTimeout` 设置订阅超时时间
219
220
 
220
221
  ## 交流群
221
222