koishi-plugin-bilibili-notify 3.0.1-alpha.2 → 3.0.2
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/lib/comRegister.d.ts +1 -1
- package/lib/comRegister.js +45 -23
- package/lib/index.d.ts +1 -0
- package/lib/index.js +6 -3
- package/lib/type/index.d.ts +18 -20
- package/package.json +2 -1
- package/readme.md +2 -0
package/lib/comRegister.d.ts
CHANGED
|
@@ -16,7 +16,6 @@ declare class ComRegister {
|
|
|
16
16
|
loginDBData: FlatPick<LoginBili, "dynamic_group_id">;
|
|
17
17
|
privateBot: Bot<Context>;
|
|
18
18
|
dynamicDispose: () => void;
|
|
19
|
-
liveDispose: () => void;
|
|
20
19
|
sendMsgFunc: (bot: Bot<Context, any>, channelId: string, content: any) => Promise<void>;
|
|
21
20
|
constructor(ctx: Context, config: ComRegister.Config);
|
|
22
21
|
init(config: ComRegister.Config): Promise<void>;
|
|
@@ -45,6 +44,7 @@ declare class ComRegister {
|
|
|
45
44
|
}
|
|
46
45
|
declare namespace ComRegister {
|
|
47
46
|
interface Config {
|
|
47
|
+
subLoadTimeout: number;
|
|
48
48
|
sub: Array<{
|
|
49
49
|
uid: string;
|
|
50
50
|
dynamic: boolean;
|
package/lib/comRegister.js
CHANGED
|
@@ -16,7 +16,7 @@ const type_1 = require("./type");
|
|
|
16
16
|
// import { Segment, useDefault } from "segmentit";
|
|
17
17
|
class ComRegister {
|
|
18
18
|
// 必须服务
|
|
19
|
-
static inject = ["ba", "gi", "database", "bl", "sm"];
|
|
19
|
+
static inject = ["ba", "gi", "database", "bl", "sm", "cron"];
|
|
20
20
|
// 定义数组:QQ相关bot
|
|
21
21
|
qqRelatedBotList = [
|
|
22
22
|
"qq",
|
|
@@ -47,8 +47,6 @@ class ComRegister {
|
|
|
47
47
|
privateBot;
|
|
48
48
|
// 动态检测销毁函数
|
|
49
49
|
dynamicDispose;
|
|
50
|
-
// 直播检测销毁函数
|
|
51
|
-
liveDispose;
|
|
52
50
|
// 发送消息方式
|
|
53
51
|
sendMsgFunc;
|
|
54
52
|
// 构造函数
|
|
@@ -328,6 +326,15 @@ class ComRegister {
|
|
|
328
326
|
this.checkIfDynamicDetectIsNeeded();
|
|
329
327
|
// 在控制台中显示订阅对象
|
|
330
328
|
this.updateSubNotifier();
|
|
329
|
+
// 注册插件销毁函数
|
|
330
|
+
this.ctx.on("dispose", () => {
|
|
331
|
+
// 销毁登录定时器
|
|
332
|
+
if (this.loginTimer)
|
|
333
|
+
this.loginTimer();
|
|
334
|
+
// 销毁动态监测
|
|
335
|
+
if (this.dynamicDispose)
|
|
336
|
+
this.dynamicDispose();
|
|
337
|
+
});
|
|
331
338
|
// logger
|
|
332
339
|
this.logger.info("插件初始化完毕!");
|
|
333
340
|
}
|
|
@@ -477,7 +484,9 @@ class ComRegister {
|
|
|
477
484
|
// 更新基线
|
|
478
485
|
let updateBaseline;
|
|
479
486
|
// 第一条动态的动态ID
|
|
480
|
-
let
|
|
487
|
+
let dynamicIdStr1st;
|
|
488
|
+
// 第二条动态的动态ID
|
|
489
|
+
let dynamicIdStr2nd;
|
|
481
490
|
// 定义handler
|
|
482
491
|
const handler = async () => {
|
|
483
492
|
// 检测启动初始化
|
|
@@ -499,7 +508,12 @@ class ComRegister {
|
|
|
499
508
|
// 设置更新基线
|
|
500
509
|
updateBaseline = content.data.update_baseline;
|
|
501
510
|
// 设置第一条动态的动态ID
|
|
502
|
-
|
|
511
|
+
dynamicIdStr1st = content.data?.items[0]?.id_str || "0";
|
|
512
|
+
// 判断第二条动态是否存在
|
|
513
|
+
if (content.data?.items[1]) {
|
|
514
|
+
// 设置第二条动态的动态ID
|
|
515
|
+
dynamicIdStr2nd = content.data.items[1].id_str;
|
|
516
|
+
}
|
|
503
517
|
// 设置初始化为false
|
|
504
518
|
detectSetup = false;
|
|
505
519
|
// 初始化完成
|
|
@@ -569,7 +583,9 @@ class ComRegister {
|
|
|
569
583
|
// 检查更新的动态
|
|
570
584
|
for (const item of items) {
|
|
571
585
|
// 动态ID如果一致则结束循环
|
|
572
|
-
if (item.id_str ===
|
|
586
|
+
if (item.id_str === dynamicIdStr1st)
|
|
587
|
+
break;
|
|
588
|
+
if (item.id_str === dynamicIdStr2nd)
|
|
573
589
|
break;
|
|
574
590
|
// 没有动态内容则直接跳过
|
|
575
591
|
if (!item)
|
|
@@ -637,7 +653,8 @@ class ComRegister {
|
|
|
637
653
|
}
|
|
638
654
|
}
|
|
639
655
|
// 更新本次请求第一条动态的动态ID
|
|
640
|
-
|
|
656
|
+
dynamicIdStr1st = items[0]?.id_str || "0";
|
|
657
|
+
dynamicIdStr2nd = items[1]?.id_str || "0";
|
|
641
658
|
};
|
|
642
659
|
// 返回一个闭包函数
|
|
643
660
|
return (0, utils_1.withLock)(handler);
|
|
@@ -648,7 +665,8 @@ class ComRegister {
|
|
|
648
665
|
// 更新基线
|
|
649
666
|
let updateBaseline;
|
|
650
667
|
// 第一条动态的动态ID
|
|
651
|
-
let
|
|
668
|
+
let dynamicIdStr1st;
|
|
669
|
+
let dynamicIdStr2nd;
|
|
652
670
|
// 定义handler
|
|
653
671
|
const handler = async () => {
|
|
654
672
|
this.logger.info(`初始化状态:${detectSetup}`);
|
|
@@ -672,8 +690,10 @@ class ComRegister {
|
|
|
672
690
|
updateBaseline = content.data.update_baseline;
|
|
673
691
|
this.logger.info(`更新基线:${updateBaseline}`);
|
|
674
692
|
// 设置第一条动态的动态ID
|
|
675
|
-
|
|
676
|
-
|
|
693
|
+
dynamicIdStr1st = content.data.items[0]?.id_str || "0";
|
|
694
|
+
dynamicIdStr2nd = content.data.items[1]?.id_str || "0";
|
|
695
|
+
this.logger.info(`第一条动态ID:${dynamicIdStr1st}`);
|
|
696
|
+
this.logger.info(`第二条动态ID:${dynamicIdStr2nd}`);
|
|
677
697
|
// 设置初始化为false
|
|
678
698
|
detectSetup = false;
|
|
679
699
|
// 初始化完成
|
|
@@ -681,7 +701,8 @@ class ComRegister {
|
|
|
681
701
|
return;
|
|
682
702
|
}
|
|
683
703
|
this.logger.info(`更新基线:${updateBaseline}`);
|
|
684
|
-
this.logger.info(`第一条动态ID:${
|
|
704
|
+
this.logger.info(`第一条动态ID:${dynamicIdStr1st}`);
|
|
705
|
+
this.logger.info(`第二条动态ID:${dynamicIdStr2nd}`);
|
|
685
706
|
this.logger.info("获取动态内容中...");
|
|
686
707
|
// 使用withRetry函数进行重试
|
|
687
708
|
const content = await (0, utils_1.withRetry)(async () => {
|
|
@@ -751,10 +772,12 @@ class ComRegister {
|
|
|
751
772
|
// 检查更新的动态
|
|
752
773
|
for (const item of items) {
|
|
753
774
|
// 动态ID如果一致则结束循环
|
|
754
|
-
if (item.id_str ===
|
|
775
|
+
if (item.id_str === dynamicIdStr1st ||
|
|
776
|
+
item.id_str === dynamicIdStr2nd) {
|
|
777
|
+
// logger
|
|
755
778
|
this.logger.info("动态ID与上次检测第一条一致,结束循环");
|
|
756
|
-
// 结束循环
|
|
757
779
|
this.logger.info("动态检测结束");
|
|
780
|
+
// 结束循环
|
|
758
781
|
break;
|
|
759
782
|
}
|
|
760
783
|
// 没有动态内容则直接跳过
|
|
@@ -830,7 +853,8 @@ class ComRegister {
|
|
|
830
853
|
}
|
|
831
854
|
}
|
|
832
855
|
// 更新本次请求第一条动态的动态ID
|
|
833
|
-
|
|
856
|
+
dynamicIdStr1st = items[0]?.id_str || "0";
|
|
857
|
+
dynamicIdStr2nd = items[1]?.id_str || "0";
|
|
834
858
|
};
|
|
835
859
|
// 返回一个闭包函数
|
|
836
860
|
return (0, utils_1.withLock)(handler);
|
|
@@ -1349,7 +1373,7 @@ class ComRegister {
|
|
|
1349
1373
|
return;
|
|
1350
1374
|
// 终止
|
|
1351
1375
|
controller.abort(`加载订阅UID:${sub.uid}超时`);
|
|
1352
|
-
},
|
|
1376
|
+
}, this.config.subLoadTimeout * 1000);
|
|
1353
1377
|
});
|
|
1354
1378
|
await Promise.race([
|
|
1355
1379
|
(async () => {
|
|
@@ -1391,6 +1415,8 @@ class ComRegister {
|
|
|
1391
1415
|
// 订阅加载超时,取消订阅加载
|
|
1392
1416
|
return;
|
|
1393
1417
|
}
|
|
1418
|
+
// 清除定时器
|
|
1419
|
+
timer();
|
|
1394
1420
|
// 将该订阅添加到sm中
|
|
1395
1421
|
this.subManager.push({
|
|
1396
1422
|
id: +sub.uid,
|
|
@@ -1403,8 +1429,6 @@ class ComRegister {
|
|
|
1403
1429
|
dynamic: sub.dynamic,
|
|
1404
1430
|
card: sub.card,
|
|
1405
1431
|
});
|
|
1406
|
-
// 清除定时器
|
|
1407
|
-
timer();
|
|
1408
1432
|
// logger
|
|
1409
1433
|
this.logger.info(`UID:${sub.uid}订阅加载完毕!`);
|
|
1410
1434
|
})(),
|
|
@@ -1419,12 +1443,9 @@ class ComRegister {
|
|
|
1419
1443
|
}
|
|
1420
1444
|
enableDynamicDetect() {
|
|
1421
1445
|
// 开始动态监测
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
else {
|
|
1426
|
-
this.dynamicDispose = this.ctx.setInterval(this.dynamicDetect(), this.config.dynamicLoopTime * 1000);
|
|
1427
|
-
}
|
|
1446
|
+
this.dynamicDispose = this.ctx.cron("*/2 * * * *", this.config.dynamicDebugMode
|
|
1447
|
+
? this.debug_dynamicDetect()
|
|
1448
|
+
: this.dynamicDetect());
|
|
1428
1449
|
}
|
|
1429
1450
|
async checkIfIsLogin() {
|
|
1430
1451
|
if ((await this.ctx.database.get("loginBili", 1)).length !== 0) {
|
|
@@ -1440,6 +1461,7 @@ class ComRegister {
|
|
|
1440
1461
|
}
|
|
1441
1462
|
(function (ComRegister) {
|
|
1442
1463
|
ComRegister.Config = koishi_1.Schema.object({
|
|
1464
|
+
subLoadTimeout: koishi_1.Schema.number(),
|
|
1443
1465
|
sub: koishi_1.Schema.array(koishi_1.Schema.object({
|
|
1444
1466
|
uid: koishi_1.Schema.string().description("订阅用户UID"),
|
|
1445
1467
|
dynamic: koishi_1.Schema.boolean().description("是否订阅用户动态"),
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -46,7 +46,7 @@ const Database = __importStar(require("./database"));
|
|
|
46
46
|
const generateImg_1 = __importDefault(require("./generateImg"));
|
|
47
47
|
const biliAPI_1 = __importDefault(require("./biliAPI"));
|
|
48
48
|
const blive_1 = __importDefault(require("./blive"));
|
|
49
|
-
exports.inject = ["puppeteer", "database", "notifier"];
|
|
49
|
+
exports.inject = ["puppeteer", "database", "notifier", "cron"];
|
|
50
50
|
exports.name = "bilibili-notify";
|
|
51
51
|
let globalConfig;
|
|
52
52
|
class ServerManager extends koishi_1.Service {
|
|
@@ -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({
|
package/lib/type/index.d.ts
CHANGED
|
@@ -62,29 +62,27 @@ export type AllDynamicInfo = {
|
|
|
62
62
|
message: string;
|
|
63
63
|
data: {
|
|
64
64
|
has_more: boolean;
|
|
65
|
-
items:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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.
|
|
4
|
+
"version": "3.0.2",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"Akokko <admin@akokko.com>"
|
|
7
7
|
],
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"@types/qrcode": "^1.5.5",
|
|
45
45
|
"@types/tough-cookie": "^4.0.5",
|
|
46
46
|
"globals": "^15.14.0",
|
|
47
|
+
"koishi-plugin-cron": "^3.1.0",
|
|
47
48
|
"koishi-plugin-puppeteer": "^3.9.0"
|
|
48
49
|
},
|
|
49
50
|
"koishi": {
|
package/readme.md
CHANGED
|
@@ -216,6 +216,8 @@
|
|
|
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` 设置订阅超时时间
|
|
220
|
+
- ver 3.0.2 优化:动态监测,新增依赖服务cron
|
|
219
221
|
|
|
220
222
|
## 交流群
|
|
221
223
|
|