koishi-plugin-bilibili-notify 1.2.0 → 1.2.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/lib/comRegister.d.ts +1 -0
- package/lib/comRegister.js +50 -2
- package/package.json +1 -1
- package/readme.md +1 -0
package/lib/comRegister.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ declare class ComRegister {
|
|
|
23
23
|
oneBot: Bot<Context>;
|
|
24
24
|
redBot: Bot<Context>;
|
|
25
25
|
telegramBot: Bot<Context>;
|
|
26
|
+
satoriBot: Bot<Context>;
|
|
26
27
|
constructor(ctx: Context, config: ComRegister.Config);
|
|
27
28
|
dynamicDetect(ctx: Context, bot: Bot<Context>, uid: string, guildId: Array<string>): () => Promise<void>;
|
|
28
29
|
sendMsg(targets: Array<string>, bot: Bot<Context>, content: any): Promise<void>;
|
package/lib/comRegister.js
CHANGED
|
@@ -31,6 +31,8 @@ class ComRegister {
|
|
|
31
31
|
redBot;
|
|
32
32
|
// Telegram机器人
|
|
33
33
|
telegramBot;
|
|
34
|
+
// Satori机器人
|
|
35
|
+
satoriBot;
|
|
34
36
|
constructor(ctx, config) {
|
|
35
37
|
this.logger = ctx.logger('commandRegister');
|
|
36
38
|
this.config = config;
|
|
@@ -52,6 +54,9 @@ class ComRegister {
|
|
|
52
54
|
case 'telegram':
|
|
53
55
|
this.telegramBot = bot;
|
|
54
56
|
break;
|
|
57
|
+
case 'satori':
|
|
58
|
+
this.satoriBot = bot;
|
|
59
|
+
break;
|
|
55
60
|
}
|
|
56
61
|
});
|
|
57
62
|
// 从数据库获取订阅
|
|
@@ -305,6 +310,7 @@ class ComRegister {
|
|
|
305
310
|
case 'red':
|
|
306
311
|
case 'onebot':
|
|
307
312
|
case 'telegram':
|
|
313
|
+
case 'satori':
|
|
308
314
|
case 'qq':
|
|
309
315
|
case 'qqguild': break;
|
|
310
316
|
default: return '暂不支持该平台';
|
|
@@ -394,6 +400,10 @@ class ComRegister {
|
|
|
394
400
|
okGuild = await checkIfGuildHasJoined(this.redBot);
|
|
395
401
|
break;
|
|
396
402
|
}
|
|
403
|
+
case 'satori': {
|
|
404
|
+
okGuild = await checkIfGuildHasJoined(this.satoriBot);
|
|
405
|
+
break;
|
|
406
|
+
}
|
|
397
407
|
default: {
|
|
398
408
|
// 发送错误提示并返回
|
|
399
409
|
session.send('您尚未配置任何QQ群相关机器人,不能对QQ群进行操作');
|
|
@@ -504,6 +514,9 @@ class ComRegister {
|
|
|
504
514
|
case 'telegram':
|
|
505
515
|
bot = this.telegramBot;
|
|
506
516
|
break;
|
|
517
|
+
case 'satori':
|
|
518
|
+
bot = this.satoriBot;
|
|
519
|
+
break;
|
|
507
520
|
default: {
|
|
508
521
|
this.logger.warn(`${uid}非法调用 dynamic 指令,不支持该平台`);
|
|
509
522
|
return '非法调用';
|
|
@@ -547,6 +560,9 @@ class ComRegister {
|
|
|
547
560
|
case 'telegram':
|
|
548
561
|
bot = this.telegramBot;
|
|
549
562
|
break;
|
|
563
|
+
case 'satori':
|
|
564
|
+
bot = this.satoriBot;
|
|
565
|
+
break;
|
|
550
566
|
default: {
|
|
551
567
|
this.logger.warn(`${roomId}非法调用 dynamic 指令,不支持该平台`);
|
|
552
568
|
return `${roomId}非法调用 dynamic 指令`;
|
|
@@ -951,14 +967,19 @@ class ComRegister {
|
|
|
951
967
|
this.subNotifier = ctx.notifier.create(table);
|
|
952
968
|
}
|
|
953
969
|
async getSubFromDatabase(ctx) {
|
|
970
|
+
this.logger.info('开始执行数据库读取操作');
|
|
954
971
|
// 如果未登录,则直接返回
|
|
955
972
|
if (!(await this.checkIfIsLogin(ctx)))
|
|
956
973
|
return;
|
|
974
|
+
this.logger.info('已登录账号');
|
|
957
975
|
// 已存在订阅管理对象,不再进行订阅操作
|
|
958
976
|
if (this.subManager.length !== 0)
|
|
959
977
|
return;
|
|
978
|
+
this.logger.info('不存在订阅管理对象');
|
|
960
979
|
// 从数据库中获取数据
|
|
961
980
|
const subData = await ctx.database.get('bilibili', { id: { $gt: 0 } });
|
|
981
|
+
this.logger.info('已从数据库获取到数据,数据为:');
|
|
982
|
+
this.logger.info(subData);
|
|
962
983
|
// 设定订阅数量
|
|
963
984
|
this.num = subData.length;
|
|
964
985
|
// 如果订阅数量超过三个则数据库被非法修改
|
|
@@ -978,6 +999,8 @@ class ComRegister {
|
|
|
978
999
|
if (!sub.dynamic && !sub.live) { // 存在未订阅任何项目的数据
|
|
979
1000
|
// 删除该条数据
|
|
980
1001
|
ctx.database.remove('bilibili', { id: sub.id });
|
|
1002
|
+
// log
|
|
1003
|
+
this.logger.warn(`UID:${sub.uid} 该条数据没有任何订阅数据,自动取消订阅`);
|
|
981
1004
|
// 跳过下面的步骤
|
|
982
1005
|
continue;
|
|
983
1006
|
}
|
|
@@ -998,9 +1021,14 @@ class ComRegister {
|
|
|
998
1021
|
case 'telegram':
|
|
999
1022
|
bot = this.telegramBot;
|
|
1000
1023
|
break;
|
|
1024
|
+
case 'satori':
|
|
1025
|
+
bot = this.satoriBot;
|
|
1026
|
+
break;
|
|
1001
1027
|
default: {
|
|
1002
1028
|
// 本条数据被篡改,删除该条订阅
|
|
1003
1029
|
ctx.database.remove('bilibili', { id: sub.id });
|
|
1030
|
+
// 不支持的协议
|
|
1031
|
+
this.logger.info(`UID:${sub.uid} 出现不支持的协议,该条数据被篡改,自动取消订阅`);
|
|
1004
1032
|
// 继续下个循环
|
|
1005
1033
|
continue;
|
|
1006
1034
|
}
|
|
@@ -1013,7 +1041,10 @@ class ComRegister {
|
|
|
1013
1041
|
let attempts = 3;
|
|
1014
1042
|
for (let i = 0; i < attempts; i++) {
|
|
1015
1043
|
try {
|
|
1044
|
+
// 获取用户信息
|
|
1016
1045
|
content = await ctx.biliAPI.getUserInfo(sub.uid);
|
|
1046
|
+
// log
|
|
1047
|
+
this.logger.info(`UID:${sub.uid} 获取到用户信息`);
|
|
1017
1048
|
// 成功则跳出循环
|
|
1018
1049
|
break;
|
|
1019
1050
|
}
|
|
@@ -1043,17 +1074,24 @@ class ComRegister {
|
|
|
1043
1074
|
}
|
|
1044
1075
|
case -400:
|
|
1045
1076
|
case -404:
|
|
1046
|
-
default:
|
|
1077
|
+
default: {
|
|
1047
1078
|
await deleteSub();
|
|
1079
|
+
// log
|
|
1080
|
+
this.logger.info(`UID:${sub.uid} 数据出现问题,自动取消订阅`);
|
|
1048
1081
|
return;
|
|
1082
|
+
}
|
|
1049
1083
|
}
|
|
1050
1084
|
}
|
|
1051
1085
|
// 检测房间号是否被篡改
|
|
1052
1086
|
if (sub.live && (!data.live_room || data.live_room.roomid.toString() !== sub.room_id)) {
|
|
1053
1087
|
// 房间号被篡改,删除该订阅
|
|
1054
1088
|
await deleteSub();
|
|
1089
|
+
// log
|
|
1090
|
+
this.logger.info(`UID:${sub.uid} 房间号被篡改,自动取消订阅`);
|
|
1055
1091
|
return;
|
|
1056
1092
|
}
|
|
1093
|
+
// log
|
|
1094
|
+
this.logger.info(`UID:${sub.uid} 开始构建订阅对象`);
|
|
1057
1095
|
// 构建订阅对象
|
|
1058
1096
|
let subManagerItem = {
|
|
1059
1097
|
id: sub.id,
|
|
@@ -1066,24 +1104,34 @@ class ComRegister {
|
|
|
1066
1104
|
liveDispose: null,
|
|
1067
1105
|
dynamicDispose: null
|
|
1068
1106
|
};
|
|
1107
|
+
// log
|
|
1108
|
+
this.logger.info(`UID:${sub.uid} 订阅对象构建成功,开始进行订阅操作`);
|
|
1069
1109
|
// 判断需要订阅的服务
|
|
1070
1110
|
if (sub.dynamic) { // 需要订阅动态
|
|
1071
1111
|
// 开始循环检测
|
|
1072
1112
|
const dispose = ctx.setInterval(this.dynamicDetect(ctx, bot, sub.uid, targetArr), this.config.dynamicLoopTime * 1000);
|
|
1073
1113
|
// 保存销毁函数
|
|
1074
1114
|
subManagerItem.dynamicDispose = dispose;
|
|
1115
|
+
// log
|
|
1116
|
+
this.logger.info(`UID:${sub.uid} 成功订阅动态`);
|
|
1075
1117
|
}
|
|
1076
|
-
if (sub.live) { //
|
|
1118
|
+
if (sub.live) { // 需要订阅直播
|
|
1077
1119
|
// 开始循环检测
|
|
1078
1120
|
const dispose = ctx.setInterval(this.liveDetect(ctx, bot, sub.room_id, targetArr), this.config.liveLoopTime * 1000);
|
|
1079
1121
|
// 保存销毁函数
|
|
1080
1122
|
subManagerItem.liveDispose = dispose;
|
|
1123
|
+
// log
|
|
1124
|
+
this.logger.info(`UID:${sub.uid} 成功订阅直播`);
|
|
1081
1125
|
}
|
|
1082
1126
|
// 保存新订阅对象
|
|
1083
1127
|
this.subManager.push(subManagerItem);
|
|
1128
|
+
// log
|
|
1129
|
+
this.logger.info(`UID:${sub.uid} 成功保存订阅对象`);
|
|
1084
1130
|
}
|
|
1085
1131
|
// 在控制台中显示订阅对象
|
|
1086
1132
|
this.updateSubNotifier(ctx);
|
|
1133
|
+
// log
|
|
1134
|
+
this.logger.info(`数据库读取操作已完成`);
|
|
1087
1135
|
}
|
|
1088
1136
|
unsubSingle(ctx, id /* UID或RoomId */, type /* 0取消Live订阅,1取消Dynamic订阅 */) {
|
|
1089
1137
|
let index;
|
package/package.json
CHANGED