koishi-plugin-bilibili-notify 3.0.1-alpha.1 → 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.
- package/lib/comRegister.d.ts +2 -1
- package/lib/comRegister.js +216 -103
- package/lib/index.d.ts +1 -0
- package/lib/index.js +5 -2
- package/lib/type/index.d.ts +18 -20
- package/package.json +1 -1
- package/readme.md +2 -0
package/lib/comRegister.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ declare class ComRegister {
|
|
|
35
35
|
updateSubNotifier(): void;
|
|
36
36
|
checkIfLoginInfoIsLoaded(): Promise<unknown>;
|
|
37
37
|
subUserInBili(mid: string): Promise<{
|
|
38
|
-
|
|
38
|
+
code: number;
|
|
39
39
|
msg: string;
|
|
40
40
|
}>;
|
|
41
41
|
loadSubFromConfig(subs: ComRegister.Config["sub"]): Promise<void>;
|
|
@@ -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;
|
package/lib/comRegister.js
CHANGED
|
@@ -477,7 +477,9 @@ class ComRegister {
|
|
|
477
477
|
// 更新基线
|
|
478
478
|
let updateBaseline;
|
|
479
479
|
// 第一条动态的动态ID
|
|
480
|
-
let
|
|
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
|
-
|
|
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 ===
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
676
|
-
|
|
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:${
|
|
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 ===
|
|
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
|
-
|
|
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);
|
|
@@ -1185,135 +1201,231 @@ class ComRegister {
|
|
|
1185
1201
|
}
|
|
1186
1202
|
}
|
|
1187
1203
|
else if (createGroupData.code !== 0) {
|
|
1188
|
-
console.log(createGroupData);
|
|
1189
1204
|
// 创建分组失败
|
|
1190
|
-
return
|
|
1205
|
+
return { code: createGroupData.code, msg: createGroupData.message };
|
|
1191
1206
|
}
|
|
1192
1207
|
// 创建成功,保存到数据库
|
|
1193
1208
|
this.ctx.database.set("loginBili", 1, {
|
|
1194
1209
|
dynamic_group_id: this.loginDBData.dynamic_group_id,
|
|
1195
1210
|
});
|
|
1196
1211
|
// 创建成功
|
|
1197
|
-
return
|
|
1212
|
+
return { code: createGroupData.code, msg: createGroupData.message };
|
|
1198
1213
|
}
|
|
1199
|
-
return
|
|
1214
|
+
return { code: 0, msg: "分组已存在" };
|
|
1200
1215
|
};
|
|
1201
1216
|
// 判断分组是否准备好
|
|
1202
|
-
const
|
|
1217
|
+
const resp = await checkGroupIsReady();
|
|
1203
1218
|
// 判断是否创建成功
|
|
1204
|
-
if (
|
|
1219
|
+
if (resp.code !== 0) {
|
|
1205
1220
|
// 创建分组失败
|
|
1206
|
-
return
|
|
1221
|
+
return resp;
|
|
1207
1222
|
}
|
|
1208
|
-
//
|
|
1209
|
-
const
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
//
|
|
1220
|
-
|
|
1223
|
+
// 获取分组详情
|
|
1224
|
+
const getGroupDetailData = async () => {
|
|
1225
|
+
// 获取分组明细
|
|
1226
|
+
const relationGroupDetailData = await this.ctx.ba.getRelationGroupDetail(this.loginDBData.dynamic_group_id);
|
|
1227
|
+
// 判断分组信息是否获取成功
|
|
1228
|
+
if (relationGroupDetailData.code !== 0) {
|
|
1229
|
+
if (relationGroupDetailData.code === 22104) {
|
|
1230
|
+
// 将原先的分组id置空
|
|
1231
|
+
this.loginDBData.dynamic_group_id = null;
|
|
1232
|
+
// 分组不存在
|
|
1233
|
+
const resp = await checkGroupIsReady();
|
|
1234
|
+
// 判断是否创建成功
|
|
1235
|
+
if (resp.code !== 0) {
|
|
1236
|
+
// 创建分组失败
|
|
1237
|
+
return { ...resp, data: undefined };
|
|
1238
|
+
}
|
|
1239
|
+
// 再次获取分组明细
|
|
1240
|
+
return getGroupDetailData();
|
|
1221
1241
|
}
|
|
1222
|
-
|
|
1242
|
+
// 获取分组明细失败
|
|
1243
|
+
return {
|
|
1244
|
+
code: relationGroupDetailData.code,
|
|
1245
|
+
msg: relationGroupDetailData.message,
|
|
1246
|
+
data: undefined,
|
|
1247
|
+
};
|
|
1223
1248
|
}
|
|
1224
|
-
|
|
1225
|
-
|
|
1249
|
+
return {
|
|
1250
|
+
code: 0,
|
|
1251
|
+
msg: "获取分组明细成功",
|
|
1252
|
+
data: relationGroupDetailData.data,
|
|
1253
|
+
};
|
|
1254
|
+
};
|
|
1255
|
+
// 获取分组明细
|
|
1256
|
+
const { code, msg, data } = await getGroupDetailData();
|
|
1257
|
+
// 判断获取分组明细是否成功
|
|
1258
|
+
if (code !== 0) {
|
|
1259
|
+
return { code, msg };
|
|
1226
1260
|
}
|
|
1227
|
-
|
|
1261
|
+
// 判断是否已经订阅该对象
|
|
1262
|
+
for (const user of data) {
|
|
1228
1263
|
if (user.mid === mid) {
|
|
1229
1264
|
// 已关注订阅对象
|
|
1230
|
-
return {
|
|
1265
|
+
return { code: 0, msg: "订阅对象已存在于分组中" };
|
|
1231
1266
|
}
|
|
1232
1267
|
}
|
|
1233
1268
|
// 订阅对象
|
|
1234
|
-
const subUserData = await this.ctx.ba.follow(mid);
|
|
1235
|
-
//
|
|
1236
|
-
|
|
1237
|
-
|
|
1269
|
+
const subUserData = (await this.ctx.ba.follow(mid));
|
|
1270
|
+
// 模式匹配
|
|
1271
|
+
const subUserMatchPattern = {
|
|
1272
|
+
[-101]: () => {
|
|
1238
1273
|
return {
|
|
1239
|
-
|
|
1274
|
+
code: subUserData.code,
|
|
1240
1275
|
msg: "账号未登录,请使用指令bili login登录后再进行订阅操作",
|
|
1241
1276
|
};
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1277
|
+
},
|
|
1278
|
+
[-102]: () => {
|
|
1279
|
+
return {
|
|
1280
|
+
code: subUserData.code,
|
|
1281
|
+
msg: "账号被封停,无法进行订阅操作",
|
|
1282
|
+
};
|
|
1283
|
+
},
|
|
1284
|
+
[22002]: () => {
|
|
1285
|
+
return {
|
|
1286
|
+
code: subUserData.code,
|
|
1287
|
+
msg: "因对方隐私设置,无法进行订阅操作",
|
|
1288
|
+
};
|
|
1289
|
+
},
|
|
1290
|
+
[22003]: () => {
|
|
1291
|
+
return {
|
|
1292
|
+
code: subUserData.code,
|
|
1293
|
+
msg: "你已将对方拉黑,无法进行订阅操作",
|
|
1294
|
+
};
|
|
1295
|
+
},
|
|
1296
|
+
[22013]: () => {
|
|
1297
|
+
return {
|
|
1298
|
+
code: subUserData.code,
|
|
1299
|
+
msg: "账号已注销,无法进行订阅操作",
|
|
1300
|
+
};
|
|
1301
|
+
},
|
|
1302
|
+
[40061]: () => {
|
|
1251
1303
|
return {
|
|
1252
|
-
|
|
1304
|
+
code: subUserData.code,
|
|
1253
1305
|
msg: "账号不存在,请检查uid输入是否正确或用户是否存在",
|
|
1254
1306
|
};
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1307
|
+
},
|
|
1308
|
+
[22001]: () => {
|
|
1309
|
+
return {
|
|
1310
|
+
code: 0,
|
|
1311
|
+
msg: "订阅对象为自己,无需添加到分组",
|
|
1312
|
+
};
|
|
1313
|
+
},
|
|
1314
|
+
// 已订阅该对象
|
|
1315
|
+
[22014]: async () => {
|
|
1260
1316
|
// 把订阅对象添加到分组中
|
|
1261
1317
|
const copyUserToGroupData = await this.ctx.ba.copyUserToGroup(mid, this.loginDBData.dynamic_group_id);
|
|
1262
1318
|
// 判断是否添加成功
|
|
1263
1319
|
if (copyUserToGroupData.code !== 0) {
|
|
1264
1320
|
// 添加失败
|
|
1265
|
-
return {
|
|
1321
|
+
return {
|
|
1322
|
+
code: copyUserToGroupData.code,
|
|
1323
|
+
msg: "添加订阅对象到分组失败,请稍后重试",
|
|
1324
|
+
};
|
|
1266
1325
|
}
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1326
|
+
// 添加成功
|
|
1327
|
+
return { code: 0, msg: "订阅对象添加成功" };
|
|
1328
|
+
},
|
|
1329
|
+
// 订阅成功
|
|
1330
|
+
[0]: async () => {
|
|
1331
|
+
// 把订阅对象添加到分组中
|
|
1332
|
+
const copyUserToGroupData = await this.ctx.ba.copyUserToGroup(mid, this.loginDBData.dynamic_group_id);
|
|
1333
|
+
// 判断是否添加成功
|
|
1334
|
+
if (copyUserToGroupData.code !== 0) {
|
|
1335
|
+
// 添加失败
|
|
1336
|
+
return {
|
|
1337
|
+
code: copyUserToGroupData.code,
|
|
1338
|
+
msg: "添加订阅对象到分组失败,请稍后重试",
|
|
1339
|
+
};
|
|
1340
|
+
}
|
|
1341
|
+
// 添加成功
|
|
1342
|
+
return { code: 0, msg: "订阅对象添加成功" };
|
|
1343
|
+
},
|
|
1344
|
+
};
|
|
1345
|
+
// 获取函数
|
|
1346
|
+
const func = subUserMatchPattern[subUserData.code];
|
|
1347
|
+
// 执行函数并返回
|
|
1348
|
+
return await func();
|
|
1271
1349
|
}
|
|
1272
1350
|
async loadSubFromConfig(subs) {
|
|
1351
|
+
// 定义一个AbortController
|
|
1352
|
+
const controller = new AbortController();
|
|
1353
|
+
const { signal } = controller;
|
|
1354
|
+
// 设置超时
|
|
1355
|
+
signal.addEventListener("abort", () => {
|
|
1356
|
+
this.logger.info(`${signal.reason},订阅未完全加载!`);
|
|
1357
|
+
});
|
|
1273
1358
|
await Promise.all(subs.map(async (sub) => {
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
// 判断是否需要订阅直播
|
|
1285
|
-
if (sub.live) {
|
|
1286
|
-
// 检查roomid是否存在
|
|
1287
|
-
if (!data.live_room) {
|
|
1288
|
-
// 用户没有开通直播间,无法订阅直播
|
|
1289
|
-
sub.live = false;
|
|
1290
|
-
// 发送提示
|
|
1291
|
-
this.logger.warn(`UID:${sub.uid} 用户没有开通直播间,无法订阅直播!`);
|
|
1292
|
-
}
|
|
1293
|
-
// 判断是否订阅直播
|
|
1294
|
-
if (sub.live) {
|
|
1295
|
-
// 启动直播监测
|
|
1296
|
-
await this.liveDetectWithListener(data.live_room.roomid, sub.target, sub.card);
|
|
1297
|
-
}
|
|
1298
|
-
}
|
|
1299
|
-
// 在B站中订阅该对象
|
|
1300
|
-
const subInfo = await this.subUserInBili(sub.uid);
|
|
1301
|
-
// 判断订阅是否成功
|
|
1302
|
-
if (!subInfo.flag)
|
|
1303
|
-
this.logger.warn(subInfo.msg);
|
|
1304
|
-
// 将该订阅添加到sm中
|
|
1305
|
-
this.subManager.push({
|
|
1306
|
-
id: +sub.uid,
|
|
1307
|
-
uid: sub.uid,
|
|
1308
|
-
uname: data.name,
|
|
1309
|
-
roomId: sub.live ? data.live_room.roomid : "",
|
|
1310
|
-
target: sub.target,
|
|
1311
|
-
platform: "",
|
|
1312
|
-
live: sub.live,
|
|
1313
|
-
dynamic: sub.dynamic,
|
|
1314
|
-
card: sub.card,
|
|
1359
|
+
let timer;
|
|
1360
|
+
// 创建一个定时器
|
|
1361
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
1362
|
+
timer = this.ctx.setTimeout(() => {
|
|
1363
|
+
// 取消订阅加载
|
|
1364
|
+
if (signal.aborted)
|
|
1365
|
+
return;
|
|
1366
|
+
// 终止
|
|
1367
|
+
controller.abort(`加载订阅UID:${sub.uid}超时`);
|
|
1368
|
+
}, this.config.subLoadTimeout * 1000);
|
|
1315
1369
|
});
|
|
1316
|
-
|
|
1370
|
+
await Promise.race([
|
|
1371
|
+
(async () => {
|
|
1372
|
+
// logger
|
|
1373
|
+
this.logger.info(`加载订阅UID:${sub.uid}中...`);
|
|
1374
|
+
// 定义Data
|
|
1375
|
+
const data = await (0, utils_1.withRetry)(async () => await this.ctx.ba.getUserInfo(sub.uid))
|
|
1376
|
+
.then((content) => content.data)
|
|
1377
|
+
.catch((e) => {
|
|
1378
|
+
this.logger.error(`loadSubFromConfig() getUserInfo() 发生了错误,错误为:${e.message}`);
|
|
1379
|
+
// logger
|
|
1380
|
+
this.logger.info(`加载订阅UID:${sub.uid}失败!`);
|
|
1381
|
+
});
|
|
1382
|
+
// 判断是否需要订阅直播
|
|
1383
|
+
if (sub.live) {
|
|
1384
|
+
// 检查roomid是否存在
|
|
1385
|
+
if (!data.live_room) {
|
|
1386
|
+
// 用户没有开通直播间,无法订阅直播
|
|
1387
|
+
sub.live = false;
|
|
1388
|
+
// 发送提示
|
|
1389
|
+
this.logger.warn(`UID:${sub.uid} 用户没有开通直播间,无法订阅直播!`);
|
|
1390
|
+
}
|
|
1391
|
+
// 判断是否订阅直播
|
|
1392
|
+
if (sub.live) {
|
|
1393
|
+
// 启动直播监测
|
|
1394
|
+
await this.liveDetectWithListener(data.live_room.roomid, sub.target, sub.card);
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1397
|
+
// 在B站中订阅该对象
|
|
1398
|
+
const subInfo = await this.subUserInBili(sub.uid);
|
|
1399
|
+
// 判断订阅是否成功
|
|
1400
|
+
if (subInfo.code !== 0) {
|
|
1401
|
+
// 订阅失败,直接返回
|
|
1402
|
+
this.logger.error(`UID:${sub.uid} 订阅失败,错误信息:${subInfo.msg}`);
|
|
1403
|
+
return;
|
|
1404
|
+
}
|
|
1405
|
+
// 判断是否超时
|
|
1406
|
+
if (signal.aborted) {
|
|
1407
|
+
// 订阅加载超时,取消订阅加载
|
|
1408
|
+
return;
|
|
1409
|
+
}
|
|
1410
|
+
// 清除定时器
|
|
1411
|
+
timer();
|
|
1412
|
+
// 将该订阅添加到sm中
|
|
1413
|
+
this.subManager.push({
|
|
1414
|
+
id: +sub.uid,
|
|
1415
|
+
uid: sub.uid,
|
|
1416
|
+
uname: data.name,
|
|
1417
|
+
roomId: sub.live ? data.live_room.roomid : "",
|
|
1418
|
+
target: sub.target,
|
|
1419
|
+
platform: "",
|
|
1420
|
+
live: sub.live,
|
|
1421
|
+
dynamic: sub.dynamic,
|
|
1422
|
+
card: sub.card,
|
|
1423
|
+
});
|
|
1424
|
+
// logger
|
|
1425
|
+
this.logger.info(`UID:${sub.uid}订阅加载完毕!`);
|
|
1426
|
+
})(),
|
|
1427
|
+
timeoutPromise,
|
|
1428
|
+
]);
|
|
1317
1429
|
}));
|
|
1318
1430
|
}
|
|
1319
1431
|
checkIfDynamicDetectIsNeeded() {
|
|
@@ -1344,6 +1456,7 @@ class ComRegister {
|
|
|
1344
1456
|
}
|
|
1345
1457
|
(function (ComRegister) {
|
|
1346
1458
|
ComRegister.Config = koishi_1.Schema.object({
|
|
1459
|
+
subLoadTimeout: koishi_1.Schema.number(),
|
|
1347
1460
|
sub: koishi_1.Schema.array(koishi_1.Schema.object({
|
|
1348
1461
|
uid: koishi_1.Schema.string().description("订阅用户UID"),
|
|
1349
1462
|
dynamic: koishi_1.Schema.boolean().description("是否订阅用户动态"),
|
package/lib/index.d.ts
CHANGED
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({
|
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
package/readme.md
CHANGED
|
@@ -215,6 +215,8 @@
|
|
|
215
215
|
- ver 3.0.0 优化:配置项 `sub.card` 添加实验性标识
|
|
216
216
|
- ver 3.0.1-alpha.0 优化:动态推送逻辑
|
|
217
217
|
- ver 3.0.1-alpha.1 新增:直播提示语换行符,配置项 `sub.name` 为可选项; 修复:debug模式下动态监测5S一次; 优化:加载订阅
|
|
218
|
+
- ver 3.0.1-alpha.2 优化:改进错误提示,改进订阅加载方式
|
|
219
|
+
- ver 3.0.1 修复:动态推送过程中,如果上一次请求的第一条动态被删除,可能导致动态重复推送(本次修复并不能完全保障不重复推送,如果第一条和第二条都被删除则可能会出现重复推送); 新增:配置项 `subTimeout` 设置订阅超时时间
|
|
218
220
|
|
|
219
221
|
## 交流群
|
|
220
222
|
|