koishi-plugin-bilibili-notify 2.0.0-alpha.0 → 2.0.0-alpha.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 +221 -26
- package/lib/index.d.ts +1 -1
- package/lib/index.js +9 -9
- package/package.json +1 -1
- package/readme.md +1 -0
package/lib/comRegister.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ declare class ComRegister {
|
|
|
29
29
|
sendPrivateMsgAndStopService(ctx: Context): Promise<void>;
|
|
30
30
|
sendMsg(targets: Array<string>, content: any): Promise<void>;
|
|
31
31
|
dynamicDetect(ctx: Context): () => Promise<void>;
|
|
32
|
+
debug_dynamicDetect(ctx: Context): () => Promise<void>;
|
|
32
33
|
liveDetect(ctx: Context, roomId: string, guildId: Array<string>): () => Promise<void>;
|
|
33
34
|
subShow(): string;
|
|
34
35
|
checkIfNeedSub(liveSub: boolean, dynamicSub: boolean, session: Session, data?: any): Promise<Array<boolean>>;
|
package/lib/comRegister.js
CHANGED
|
@@ -227,10 +227,10 @@ class ComRegister {
|
|
|
227
227
|
this.subManager.splice(i, 1);
|
|
228
228
|
// 将订阅对象移出订阅关注组
|
|
229
229
|
const removeUserFromGroupData = await ctx.ba.removeUserFromGroup(sub.uid);
|
|
230
|
-
// 判断是否移出成功
|
|
231
|
-
if (removeUserFromGroupData.code !== 0) {
|
|
230
|
+
// 判断是否移出成功 22105关注对象为自己
|
|
231
|
+
if (removeUserFromGroupData.code !== 0 || removeUserFromGroupData.data !== 22105) {
|
|
232
232
|
// 移出失败
|
|
233
|
-
session.send('取消订阅对象失败,请稍后重试');
|
|
233
|
+
await session.send('取消订阅对象失败,请稍后重试');
|
|
234
234
|
return;
|
|
235
235
|
}
|
|
236
236
|
// id--
|
|
@@ -243,7 +243,7 @@ class ComRegister {
|
|
|
243
243
|
this.dynamicDispose = null;
|
|
244
244
|
}
|
|
245
245
|
// 发送成功通知
|
|
246
|
-
session.send('已取消订阅该用户');
|
|
246
|
+
await session.send('已取消订阅该用户');
|
|
247
247
|
// 更新控制台提示
|
|
248
248
|
this.updateSubNotifier(ctx);
|
|
249
249
|
// 将存在flag设置为true
|
|
@@ -252,7 +252,7 @@ class ComRegister {
|
|
|
252
252
|
}));
|
|
253
253
|
// 未订阅该用户,无需取消订阅
|
|
254
254
|
if (!exist)
|
|
255
|
-
session.send('未订阅该用户,无需取消订阅');
|
|
255
|
+
await session.send('未订阅该用户,无需取消订阅');
|
|
256
256
|
});
|
|
257
257
|
biliCom
|
|
258
258
|
.subcommand('.show', '展示订阅对象')
|
|
@@ -270,6 +270,10 @@ class ComRegister {
|
|
|
270
270
|
.example('bili sub 1194210119 目标QQ群号(实验性) -l -d 订阅UID为1194210119的UP主的动态和直播')
|
|
271
271
|
.action(async ({ session, options }, mid, ...guildId) => {
|
|
272
272
|
this.logger.info('调用bili.sub指令');
|
|
273
|
+
// 先判断是否订阅直播,再判断是否解锁订阅限制,最后判断直播订阅是否已超三个
|
|
274
|
+
if (options.live && !this.config.unlockSubLimits && (this.subManager.reduce((acc, cur) => acc + (cur.live ? 1 : 0), 0) >= 3)) {
|
|
275
|
+
return '直播订阅已达上限,请取消部分直播订阅后再进行订阅';
|
|
276
|
+
}
|
|
273
277
|
// 检查是否是不支持的平台
|
|
274
278
|
switch (session.event.platform) {
|
|
275
279
|
case 'lark':
|
|
@@ -306,6 +310,7 @@ class ComRegister {
|
|
|
306
310
|
if (group.name === '订阅') {
|
|
307
311
|
// 拿到分组id
|
|
308
312
|
loginDBData.dynamic_group_id = group.tagid;
|
|
313
|
+
// 结束循环
|
|
309
314
|
break;
|
|
310
315
|
}
|
|
311
316
|
}
|
|
@@ -452,8 +457,6 @@ class ComRegister {
|
|
|
452
457
|
const { data } = content;
|
|
453
458
|
// 判断是否需要订阅直播和动态
|
|
454
459
|
const [liveMsg, dynamicMsg] = await this.checkIfNeedSub(options.live, options.dynamic, session, data);
|
|
455
|
-
console.log('Live MSG:', liveMsg);
|
|
456
|
-
console.log('Dynamic MSG:', dynamicMsg);
|
|
457
460
|
// 判断是否未订阅任何消息
|
|
458
461
|
if (!liveMsg && !dynamicMsg) {
|
|
459
462
|
return '您未订阅该UP的任何消息';
|
|
@@ -506,6 +509,7 @@ class ComRegister {
|
|
|
506
509
|
this.logger.error('bili sub指令 getMasterInfo() 发生了错误,错误为:' + e.message);
|
|
507
510
|
return '订阅出错啦,请重试';
|
|
508
511
|
}
|
|
512
|
+
console.log(liveMsg, dynamicMsg);
|
|
509
513
|
// 订阅直播
|
|
510
514
|
if (liveMsg) {
|
|
511
515
|
await session.execute(`bili live ${roomId} ${targetId.split(',').join(' ')}`);
|
|
@@ -517,7 +521,12 @@ class ComRegister {
|
|
|
517
521
|
// 判断是否开启动态监测
|
|
518
522
|
if (!this.dynamicDispose) {
|
|
519
523
|
// 开启动态监测
|
|
520
|
-
|
|
524
|
+
if (this.config.dynamicDebugMode) {
|
|
525
|
+
this.dynamicDispose = ctx.setInterval(this.debug_dynamicDetect(ctx), config.dynamicLoopTime * 1000);
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
this.dynamicDispose = ctx.setInterval(this.dynamicDetect(ctx), config.dynamicLoopTime * 1000);
|
|
529
|
+
}
|
|
521
530
|
}
|
|
522
531
|
// 发送订阅消息通知
|
|
523
532
|
await session.send(`订阅${userData.info.uname}动态通知`);
|
|
@@ -525,16 +534,6 @@ class ComRegister {
|
|
|
525
534
|
// 新增订阅展示到控制台
|
|
526
535
|
this.updateSubNotifier(ctx);
|
|
527
536
|
});
|
|
528
|
-
/* biliCom
|
|
529
|
-
.subcommand('.dynamic <uid:string> <...guildId:string>', '订阅用户动态推送', { hidden: true })
|
|
530
|
-
.usage('订阅用户动态推送')
|
|
531
|
-
.example('bili dynamic 1194210119 订阅UID为1194210119的动态')
|
|
532
|
-
.action(async () => {
|
|
533
|
-
// Log
|
|
534
|
-
this.logger.info('调用bili.dynamic指令')
|
|
535
|
-
// 开始循环检测
|
|
536
|
-
this.dynamicDispose = ctx.setInterval(this.dynamicDetect(ctx), config.dynamicLoopTime * 1000)
|
|
537
|
-
}) */
|
|
538
537
|
biliCom
|
|
539
538
|
.subcommand('.live <roomId:string> <...guildId:string>', '订阅主播开播通知', { hidden: true })
|
|
540
539
|
.usage('订阅主播开播通知')
|
|
@@ -694,6 +693,176 @@ class ComRegister {
|
|
|
694
693
|
}
|
|
695
694
|
}
|
|
696
695
|
dynamicDetect(ctx) {
|
|
696
|
+
let detectSetup = true;
|
|
697
|
+
let updateBaseline;
|
|
698
|
+
// 相当于锁的作用,防止上一个循环没处理完
|
|
699
|
+
let flag = true;
|
|
700
|
+
// 返回一个闭包函数
|
|
701
|
+
return async () => {
|
|
702
|
+
// 判断上一个循环是否完成
|
|
703
|
+
if (!flag)
|
|
704
|
+
return;
|
|
705
|
+
flag = false;
|
|
706
|
+
// 无论是否执行成功都要释放锁
|
|
707
|
+
try {
|
|
708
|
+
// 检测启动初始化
|
|
709
|
+
if (detectSetup) {
|
|
710
|
+
// 获取动态信息
|
|
711
|
+
const data = await ctx.ba.getAllDynamic();
|
|
712
|
+
// 判断获取动态信息是否成功
|
|
713
|
+
if (data.code !== 0)
|
|
714
|
+
return;
|
|
715
|
+
// 设置更新基线
|
|
716
|
+
updateBaseline = data.data.update_baseline;
|
|
717
|
+
// 设置初始化为false
|
|
718
|
+
detectSetup = false;
|
|
719
|
+
// 初始化完成
|
|
720
|
+
return;
|
|
721
|
+
}
|
|
722
|
+
// 获取用户所有动态数据
|
|
723
|
+
let updateNum;
|
|
724
|
+
let content;
|
|
725
|
+
try {
|
|
726
|
+
// 查询是否有新动态
|
|
727
|
+
const data = await ctx.ba.hasNewDynamic(updateBaseline);
|
|
728
|
+
updateNum = data.data.update_num;
|
|
729
|
+
// 没有新动态或获取动态信息失败直接返回
|
|
730
|
+
if (updateNum <= 0 || data.code !== 0)
|
|
731
|
+
return;
|
|
732
|
+
// 获取动态内容
|
|
733
|
+
content = await ctx.ba.getAllDynamic(updateBaseline);
|
|
734
|
+
}
|
|
735
|
+
catch (e) {
|
|
736
|
+
return this.logger.error('dynamicDetect getUserSpaceDynamic() 发生了错误,错误为:' + e.message);
|
|
737
|
+
}
|
|
738
|
+
// 判断获取动态内容是否成功
|
|
739
|
+
if (content.code !== 0) {
|
|
740
|
+
switch (content.code) {
|
|
741
|
+
case -101: { // 账号未登录
|
|
742
|
+
// 输出日志
|
|
743
|
+
this.logger.error('账号未登录,插件已停止工作,请登录后,输入指令 sys start 启动插件');
|
|
744
|
+
// 发送私聊消息
|
|
745
|
+
await this.sendPrivateMsg('账号未登录,插件已停止工作,请登录后,输入指令 sys start 启动插件');
|
|
746
|
+
// 停止服务
|
|
747
|
+
await ctx.sm.disposePlugin();
|
|
748
|
+
// 结束循环
|
|
749
|
+
break;
|
|
750
|
+
}
|
|
751
|
+
case -352: { // 风控
|
|
752
|
+
// 输出日志
|
|
753
|
+
this.logger.error('账号被风控,插件已停止工作,请确认风控解除后,输入指令 sys start 启动插件');
|
|
754
|
+
// 发送私聊消息
|
|
755
|
+
await this.sendPrivateMsg('账号被风控,插件已停止工作,请确认风控解除后,输入指令 sys start 启动插件');
|
|
756
|
+
// 停止服务
|
|
757
|
+
await ctx.sm.disposePlugin();
|
|
758
|
+
// 结束循环
|
|
759
|
+
break;
|
|
760
|
+
}
|
|
761
|
+
case 4101128:
|
|
762
|
+
case 4101129: { // 获取动态信息错误
|
|
763
|
+
// 输出日志
|
|
764
|
+
this.logger.error('获取动态信息错误,错误码为:' + content.code + ',错误为:' + content.message);
|
|
765
|
+
// 发送私聊消息
|
|
766
|
+
await this.sendPrivateMsg('获取动态信息错误,错误码为:' + content.code + ',错误为:' + content.message); // 未知错误
|
|
767
|
+
// 结束循环
|
|
768
|
+
break;
|
|
769
|
+
}
|
|
770
|
+
default: { // 未知错误
|
|
771
|
+
// 发送私聊消息
|
|
772
|
+
await this.sendPrivateMsg('获取动态信息错误,错误码为:' + content.code + ',错误为:' + content.message); // 未知错误
|
|
773
|
+
// 结束循环
|
|
774
|
+
break;
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
// 获取数据内容
|
|
779
|
+
const data = content.data;
|
|
780
|
+
// 更新基线
|
|
781
|
+
updateBaseline = data.update_baseline;
|
|
782
|
+
// 有新动态内容
|
|
783
|
+
const items = data.items;
|
|
784
|
+
// 检查更新的动态
|
|
785
|
+
for (let num = updateNum - 1; num >= 0; num--) {
|
|
786
|
+
// 没有动态内容则直接跳过
|
|
787
|
+
if (!items[num])
|
|
788
|
+
continue;
|
|
789
|
+
// 从动态数据中取出UP主名称、UID和动态ID
|
|
790
|
+
const upUID = items[num].modules.module_author.mid;
|
|
791
|
+
// 寻找关注的UP主的动态
|
|
792
|
+
this.subManager.forEach(async (sub) => {
|
|
793
|
+
// 判断是否是订阅的UP主
|
|
794
|
+
if (sub.uid == upUID) {
|
|
795
|
+
// 订阅该UP主,推送该动态
|
|
796
|
+
// 定义变量
|
|
797
|
+
let pic;
|
|
798
|
+
let buffer;
|
|
799
|
+
// 从动态数据中取出UP主名称和动态ID
|
|
800
|
+
const upName = content.data.items[num].modules.module_author.name;
|
|
801
|
+
const dynamicId = content.data.items[num].id_str;
|
|
802
|
+
// 推送该条动态
|
|
803
|
+
const attempts = 3;
|
|
804
|
+
for (let i = 0; i < attempts; i++) {
|
|
805
|
+
// 获取动态推送图片
|
|
806
|
+
try {
|
|
807
|
+
// 渲染图片
|
|
808
|
+
const { pic: gimgPic, buffer: gimgBuffer } = await ctx.gi.generateDynamicImg(items[num]);
|
|
809
|
+
// 赋值
|
|
810
|
+
pic = gimgPic;
|
|
811
|
+
buffer = gimgBuffer;
|
|
812
|
+
// 成功则跳出循环
|
|
813
|
+
break;
|
|
814
|
+
}
|
|
815
|
+
catch (e) {
|
|
816
|
+
// 直播开播动态,不做处理
|
|
817
|
+
if (e.message === '直播开播动态,不做处理')
|
|
818
|
+
return;
|
|
819
|
+
if (e.message === '出现关键词,屏蔽该动态') {
|
|
820
|
+
// 如果需要发送才发送
|
|
821
|
+
if (this.config.filter.notify) {
|
|
822
|
+
await this.sendMsg(sub.targetIdArr, `${upName}发布了一条含有屏蔽关键字的动态`);
|
|
823
|
+
}
|
|
824
|
+
return;
|
|
825
|
+
}
|
|
826
|
+
if (e.message === '已屏蔽转发动态') {
|
|
827
|
+
if (this.config.filter.notify) {
|
|
828
|
+
await this.sendMsg(sub.targetIdArr, `${upName}发布了一条转发动态,已屏蔽`);
|
|
829
|
+
}
|
|
830
|
+
return;
|
|
831
|
+
}
|
|
832
|
+
// 未知错误
|
|
833
|
+
if (i === attempts - 1) {
|
|
834
|
+
this.logger.error('dynamicDetect generateDynamicImg() 推送卡片发送失败,原因:' + e.message);
|
|
835
|
+
// 发送私聊消息并重启服务
|
|
836
|
+
return await this.sendPrivateMsgAndStopService(ctx);
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
// 判断是否需要发送URL
|
|
841
|
+
const dUrl = this.config.dynamicUrl ? `${upName}发布了一条动态:https://t.bilibili.com/${dynamicId}` : '';
|
|
842
|
+
// 如果pic存在,则直接返回pic
|
|
843
|
+
if (pic) {
|
|
844
|
+
this.logger.info('推送动态中,使用render模式');
|
|
845
|
+
// pic存在,使用的是render模式
|
|
846
|
+
await this.sendMsg(sub.targetIdArr, pic + (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: dUrl }));
|
|
847
|
+
}
|
|
848
|
+
else if (buffer) {
|
|
849
|
+
this.logger.info('推送动态中,使用page模式');
|
|
850
|
+
// pic不存在,说明使用的是page模式
|
|
851
|
+
await this.sendMsg(sub.targetIdArr, (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [koishi_1.h.image(buffer, 'image/png'), dUrl] }));
|
|
852
|
+
}
|
|
853
|
+
else {
|
|
854
|
+
this.logger.info(items[num].modules.module_author.name + '发布了一条动态,但是推送失败');
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
});
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
finally {
|
|
861
|
+
flag = true;
|
|
862
|
+
}
|
|
863
|
+
};
|
|
864
|
+
}
|
|
865
|
+
debug_dynamicDetect(ctx) {
|
|
697
866
|
let detectSetup = true;
|
|
698
867
|
let updateBaseline;
|
|
699
868
|
// 相当于锁的作用,防止上一个循环没处理完
|
|
@@ -1144,12 +1313,18 @@ class ComRegister {
|
|
|
1144
1313
|
// 未开通直播间
|
|
1145
1314
|
await session.send('该用户未开通直播间,无法订阅直播');
|
|
1146
1315
|
// 返回false
|
|
1147
|
-
return
|
|
1316
|
+
return true;
|
|
1148
1317
|
}
|
|
1318
|
+
return false;
|
|
1149
1319
|
};
|
|
1150
1320
|
// 如果两者都为true或者都为false则直接返回
|
|
1151
|
-
if ((liveSub && dynamicSub) || (!liveSub && !dynamicSub))
|
|
1321
|
+
if ((liveSub && dynamicSub) || (!liveSub && !dynamicSub)) {
|
|
1322
|
+
// 判断是否存在直播间
|
|
1323
|
+
if (await liveRoom())
|
|
1324
|
+
return [false, true];
|
|
1325
|
+
// 返回
|
|
1152
1326
|
return [true, true];
|
|
1327
|
+
}
|
|
1153
1328
|
// 如果只订阅直播
|
|
1154
1329
|
if (liveSub) {
|
|
1155
1330
|
// 判断是否存在直播间
|
|
@@ -1209,6 +1384,8 @@ class ComRegister {
|
|
|
1209
1384
|
return;
|
|
1210
1385
|
// 从数据库中获取数据
|
|
1211
1386
|
const subData = await ctx.database.get('bilibili', { id: { $gt: 0 } });
|
|
1387
|
+
// 定义变量:订阅直播数
|
|
1388
|
+
let liveSubNum = 0;
|
|
1212
1389
|
// 循环遍历
|
|
1213
1390
|
for (const sub of subData) {
|
|
1214
1391
|
// 判断是否存在没有任何订阅的数据
|
|
@@ -1291,11 +1468,24 @@ class ComRegister {
|
|
|
1291
1468
|
dynamic: +sub.dynamic === 1 ? true : false,
|
|
1292
1469
|
liveDispose: null
|
|
1293
1470
|
};
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1471
|
+
// 判断是否订阅直播
|
|
1472
|
+
if (sub.live) {
|
|
1473
|
+
// 判断订阅直播数是否超过限制
|
|
1474
|
+
if (!this.config.unlockSubLimits && liveSubNum >= 3) {
|
|
1475
|
+
subManagerItem.live = false;
|
|
1476
|
+
// log
|
|
1477
|
+
this.logger.warn(`UID:${sub.uid} 订阅直播数超过限制,自动取消订阅`);
|
|
1478
|
+
// 发送错误消息
|
|
1479
|
+
this.sendPrivateMsg(`UID:${sub.uid} 订阅直播数超过限制,自动取消订阅`);
|
|
1480
|
+
}
|
|
1481
|
+
else {
|
|
1482
|
+
// 直播订阅数+1
|
|
1483
|
+
liveSubNum++;
|
|
1484
|
+
// 订阅直播,开始循环检测
|
|
1485
|
+
const dispose = ctx.setInterval(this.liveDetect(ctx, sub.room_id, targetIdArr), this.config.liveLoopTime * 1000);
|
|
1486
|
+
// 保存销毁函数
|
|
1487
|
+
subManagerItem.liveDispose = dispose;
|
|
1488
|
+
}
|
|
1299
1489
|
}
|
|
1300
1490
|
// 保存新订阅对象
|
|
1301
1491
|
this.subManager.push(subManagerItem);
|
|
@@ -1303,7 +1493,12 @@ class ComRegister {
|
|
|
1303
1493
|
// 检查是否有订阅对象需要动态监测
|
|
1304
1494
|
if (this.subManager.some(sub => sub.dynamic)) {
|
|
1305
1495
|
// 开始动态监测
|
|
1306
|
-
|
|
1496
|
+
if (this.config.dynamicDebugMode) {
|
|
1497
|
+
this.dynamicDispose = ctx.setInterval(this.debug_dynamicDetect(ctx), 10000);
|
|
1498
|
+
}
|
|
1499
|
+
else {
|
|
1500
|
+
this.dynamicDispose = ctx.setInterval(this.dynamicDetect(ctx), 10000 /* this.config.dynamicLoopTime * 1000 */);
|
|
1501
|
+
}
|
|
1307
1502
|
}
|
|
1308
1503
|
// 在控制台中显示订阅对象
|
|
1309
1504
|
this.updateSubNotifier(ctx);
|
package/lib/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export interface Config {
|
|
|
19
19
|
dynamic: {};
|
|
20
20
|
dynamicUrl: boolean;
|
|
21
21
|
dynamicCheckNumber: number;
|
|
22
|
-
dynamicLoopTime: '1分钟' | '2分钟' | '3分钟' | '5分钟' | '20分钟';
|
|
22
|
+
dynamicLoopTime: '1分钟' | '2分钟' | '3分钟' | '5分钟' | '10分钟' | '20分钟';
|
|
23
23
|
live: {};
|
|
24
24
|
changeMasterInfoApi: boolean;
|
|
25
25
|
liveStartAtAll: boolean;
|
package/lib/index.js
CHANGED
|
@@ -59,7 +59,7 @@ exports.Config = koishi_1.Schema.object({
|
|
|
59
59
|
.description('请输入一个32位小写字母的十六进制密钥(例如:9b8db7ae562b9864efefe06289cc5530),使用此密钥将你的B站登录信息存储在数据库中,请一定保存好此密钥。如果你忘记了此密钥,必须重新登录。你可以自行生成,或到这个网站生成:https://www.sexauth.com/'),
|
|
60
60
|
platform: koishi_1.Schema.union(['qq', 'qqguild', 'onebot', 'red', 'telegram', 'satori', 'chronocat', 'lark'])
|
|
61
61
|
.role('')
|
|
62
|
-
.
|
|
62
|
+
.required()
|
|
63
63
|
.description('请选择你的机器人平台,目前支持QQ、QQ群、OneBot、RedBot、Telegram、Satori、ChronoCat、Lark。从2.0版本开始,只能在一个平台下使用本插件'),
|
|
64
64
|
master: koishi_1.Schema.intersect([
|
|
65
65
|
koishi_1.Schema.object({
|
|
@@ -84,7 +84,7 @@ exports.Config = koishi_1.Schema.object({
|
|
|
84
84
|
basicSettings: koishi_1.Schema.object({}).description('基本设置'),
|
|
85
85
|
unlockSubLimits: koishi_1.Schema.boolean()
|
|
86
86
|
.default(false)
|
|
87
|
-
.description('解锁3
|
|
87
|
+
.description('解锁3个直播订阅限制,默认只允许订阅3位UP主。订阅过多用户可能有导致IP暂时被封禁的风险'),
|
|
88
88
|
automaticResend: koishi_1.Schema.boolean()
|
|
89
89
|
.default(true)
|
|
90
90
|
.description('是否开启自动重发功能,默认开启。开启后,如果推送失败,将会自动重发,尝试三次。关闭后,推送失败将不会再重发,直到下一次推送'),
|
|
@@ -106,15 +106,14 @@ exports.Config = koishi_1.Schema.object({
|
|
|
106
106
|
.step(1)
|
|
107
107
|
.default(5)
|
|
108
108
|
.description('设定每次检查动态的数量。若订阅的UP主经常在短时间内连着发多条动态可以将该值提高,若订阅的UP主有置顶动态,在计算该值时应+1。默认值为5条'),
|
|
109
|
-
dynamicLoopTime: koishi_1.Schema.union(['1分钟', '2分钟', '3分钟', '5分钟', '20分钟'])
|
|
109
|
+
dynamicLoopTime: koishi_1.Schema.union(['1分钟', '2分钟', '3分钟', '5分钟', '10分钟', '20分钟'])
|
|
110
110
|
.role('')
|
|
111
111
|
.default('2分钟')
|
|
112
112
|
.description('设定多久检测一次动态。若需动态的时效性,可以设置为1分钟。若订阅的UP主经常在短时间内连着发多条动态应该将该值提高,否则会出现动态漏推送和晚推送的问题,默认值为2分钟'),
|
|
113
113
|
live: koishi_1.Schema.object({}).description('直播推送设置'),
|
|
114
114
|
changeMasterInfoApi: koishi_1.Schema.boolean()
|
|
115
115
|
.default(false)
|
|
116
|
-
.description('是否切换获取主播信息API,在遇到错误getMasterInfo()时可以尝试切换')
|
|
117
|
-
.experimental(),
|
|
116
|
+
.description('是否切换获取主播信息API,在遇到错误getMasterInfo()时可以尝试切换'),
|
|
118
117
|
liveStartAtAll: koishi_1.Schema.boolean()
|
|
119
118
|
.default(false)
|
|
120
119
|
.description('直播开始时艾特全体成员,默认关闭'),
|
|
@@ -123,8 +122,7 @@ exports.Config = koishi_1.Schema.object({
|
|
|
123
122
|
.description('插件重启后,如果订阅的主播正在直播,是否进行一次推送,默认开启'),
|
|
124
123
|
pushUrl: koishi_1.Schema.boolean()
|
|
125
124
|
.default(false)
|
|
126
|
-
.description('推送直播状态时是否同时发送链接。注意:如果使用的是QQ官方机器人不能开启此项!')
|
|
127
|
-
.experimental(),
|
|
125
|
+
.description('推送直播状态时是否同时发送链接。注意:如果使用的是QQ官方机器人不能开启此项!'),
|
|
128
126
|
pushTime: koishi_1.Schema.number()
|
|
129
127
|
.min(0)
|
|
130
128
|
.max(12)
|
|
@@ -139,8 +137,7 @@ exports.Config = koishi_1.Schema.object({
|
|
|
139
137
|
.description('自定义下播提示语,-name代表UP昵称,-time代表开播时长。例如-name下播啦,本次直播了-time,会发送为xxxUP下播啦,直播时长为xx小时xx分钟xx秒'),
|
|
140
138
|
hideDesc: koishi_1.Schema.boolean()
|
|
141
139
|
.default(false)
|
|
142
|
-
.description('是否隐藏UP主直播间简介,开启后推送的直播卡片将不再展示简介')
|
|
143
|
-
.experimental(),
|
|
140
|
+
.description('是否隐藏UP主直播间简介,开启后推送的直播卡片将不再展示简介'),
|
|
144
141
|
style: koishi_1.Schema.object({}).description('美化设置'),
|
|
145
142
|
removeBorder: koishi_1.Schema.boolean()
|
|
146
143
|
.default(false)
|
|
@@ -257,6 +254,9 @@ class ServerManager extends koishi_1.Service {
|
|
|
257
254
|
case '5分钟':
|
|
258
255
|
this.dynamicLoopTime = 300;
|
|
259
256
|
break;
|
|
257
|
+
case '10分钟':
|
|
258
|
+
this.dynamicLoopTime = 600;
|
|
259
|
+
break;
|
|
260
260
|
case '20分钟':
|
|
261
261
|
this.dynamicLoopTime = 1200;
|
|
262
262
|
break;
|
package/package.json
CHANGED