koishi-plugin-bilibili-notify 1.2.3-rc.1 → 1.2.3-rc.10
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/biliAPI.js +4 -1
- package/lib/comRegister.d.ts +3 -2
- package/lib/comRegister.js +234 -296
- package/lib/database.js +2 -2
- package/lib/generateImg.js +58 -60
- package/lib/index.d.ts +2 -0
- package/lib/index.js +20 -2
- package/package.json +1 -1
- package/readme.md +10 -1
package/lib/biliAPI.js
CHANGED
|
@@ -216,8 +216,11 @@ class BiliAPI extends koishi_1.Service {
|
|
|
216
216
|
// Get login info from db
|
|
217
217
|
const { cookies, refresh_token } = await this.getLoginInfoFromDB();
|
|
218
218
|
// 判断是否有值
|
|
219
|
-
if (!cookies || !refresh_token)
|
|
219
|
+
if (!cookies || !refresh_token) {
|
|
220
|
+
// Login info is loaded
|
|
221
|
+
this.loginInfoIsLoaded = true;
|
|
220
222
|
return;
|
|
223
|
+
}
|
|
221
224
|
// 定义CSRF Token
|
|
222
225
|
let csrf;
|
|
223
226
|
cookies.forEach(cookieData => {
|
package/lib/comRegister.d.ts
CHANGED
|
@@ -26,10 +26,11 @@ declare class ComRegister {
|
|
|
26
26
|
satoriBot: Bot<Context>;
|
|
27
27
|
chronocatBot: Bot<Context>;
|
|
28
28
|
constructor(ctx: Context, config: ComRegister.Config);
|
|
29
|
+
getTheCorrespondingBotBasedOnTheSession(session: Session): Bot<Context, any>;
|
|
29
30
|
sendPrivateMsg(bot: Bot<Context>, content: string): Promise<void>;
|
|
30
|
-
sendPrivateMsgAndRebootService(bot: Bot<Context>,
|
|
31
|
+
sendPrivateMsgAndRebootService(ctx: Context, bot: Bot<Context>, content: string): Promise<void>;
|
|
32
|
+
sendMsg(ctx: Context, targets: Array<string>, bot: Bot<Context>, content: any): Promise<void>;
|
|
31
33
|
dynamicDetect(ctx: Context, bot: Bot<Context>, uid: string, guildId: Array<string>): () => Promise<void>;
|
|
32
|
-
sendMsg(targets: Array<string>, bot: Bot<Context>, content: any): Promise<string[]>;
|
|
33
34
|
liveDetect(ctx: Context, bot: Bot<Context>, roomId: string, guildId: Array<string>): () => Promise<void>;
|
|
34
35
|
subShow(): string;
|
|
35
36
|
checkIfNeedSub(comNeed: boolean, subType: string, session: Session, data?: any): Promise<boolean>;
|
package/lib/comRegister.js
CHANGED
|
@@ -66,102 +66,106 @@ class ComRegister {
|
|
|
66
66
|
});
|
|
67
67
|
// 从数据库获取订阅
|
|
68
68
|
this.getSubFromDatabase(ctx);
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
const testCom = ctx.command('test', { hidden: true, permissions: ['authority:5'] });
|
|
71
70
|
testCom.subcommand('.cookies')
|
|
72
71
|
.usage('测试指令,用于测试从数据库读取cookies')
|
|
73
72
|
.action(async () => {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
this.logger.info('调用test cookies指令');
|
|
74
|
+
// await ctx.biliAPI.loadCookiesFromDatabase()
|
|
75
|
+
console.log(JSON.parse(ctx.biliAPI.getCookies()));
|
|
76
|
+
});
|
|
79
77
|
testCom
|
|
80
78
|
.subcommand('.my')
|
|
81
79
|
.usage('测试指令,用于测试获取自己信息')
|
|
82
80
|
.example('test.my')
|
|
83
81
|
.action(async () => {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
const content = await ctx.biliAPI.getMyselfInfo();
|
|
83
|
+
console.log(content);
|
|
84
|
+
});
|
|
88
85
|
testCom
|
|
89
86
|
.subcommand('.user <mid:string>')
|
|
90
87
|
.usage('测试指令,用于测试获取用户信息')
|
|
91
88
|
.example('test.user 用户UID')
|
|
92
89
|
.action(async (_, mid) => {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
90
|
+
const content = await ctx.biliAPI.getUserInfo(mid);
|
|
91
|
+
console.log(content);
|
|
92
|
+
});
|
|
97
93
|
testCom
|
|
98
94
|
.subcommand('.time')
|
|
99
95
|
.usage('测试时间接口')
|
|
100
96
|
.example('test.time')
|
|
101
97
|
.action(async ({ session }) => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
98
|
+
session.send(await ctx.biliAPI.getTimeNow());
|
|
99
|
+
});
|
|
105
100
|
testCom
|
|
106
101
|
.subcommand('.exist')
|
|
107
102
|
.usage('测试写法')
|
|
108
103
|
.example('test.exist')
|
|
109
104
|
.action(async () => {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
105
|
+
let num = 1;
|
|
106
|
+
console.log(num && `Hello World`);
|
|
107
|
+
});
|
|
114
108
|
testCom
|
|
115
109
|
.subcommand('.gimg <uid:string> <index:number>')
|
|
116
110
|
.usage('测试图片生成')
|
|
117
111
|
.example('test.gimg')
|
|
118
112
|
.action(async ({ session }, uid, index) => {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
113
|
+
// logger
|
|
114
|
+
this.logger.info('调用test gimg指令');
|
|
115
|
+
// 获取用户空间动态数据
|
|
116
|
+
const { data } = await ctx.biliAPI.getUserSpaceDynamic(uid);
|
|
117
|
+
// 获取动态推送图片
|
|
118
|
+
const { pic, buffer } = await ctx.gimg.generateDynamicImg(data.items[index]);
|
|
119
|
+
// 如果pic存在,则直接返回pic
|
|
120
|
+
if (pic)
|
|
121
|
+
return pic;
|
|
122
|
+
// pic不存在,说明使用的是page模式
|
|
123
|
+
await session.send(koishi_1.h.image(buffer, 'image/png'));
|
|
124
|
+
});
|
|
129
125
|
testCom
|
|
130
126
|
.subcommand('.group')
|
|
131
127
|
.usage('查看session groupId')
|
|
132
128
|
.example('test group')
|
|
133
129
|
.action(({ session }) => {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
130
|
+
console.log(session.event.channel);
|
|
131
|
+
});
|
|
137
132
|
testCom
|
|
138
133
|
.subcommand('.session')
|
|
139
134
|
.usage('查看seesion')
|
|
140
135
|
.example('test session')
|
|
141
136
|
.action(({ session }) => {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
137
|
+
console.log(session);
|
|
138
|
+
});
|
|
145
139
|
testCom
|
|
146
140
|
.subcommand('.utc')
|
|
147
141
|
.usage('获取当前UTC+8 Unix时间戳')
|
|
148
142
|
.example('test utc')
|
|
149
143
|
.action(async ({ session }) => {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
144
|
+
session.send((await ctx.biliAPI.getServerUTCTime()).toString());
|
|
145
|
+
});
|
|
153
146
|
testCom
|
|
154
147
|
.subcommand('.livestop', '发送下播提示语测试')
|
|
155
148
|
.usage('发送下播提示语测试')
|
|
156
149
|
.example('test livestop')
|
|
157
150
|
.action(async ({ session }) => {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
151
|
+
// logger
|
|
152
|
+
this.logger.info('调用test gimg指令');
|
|
153
|
+
const { data } = await ctx.biliAPI.getMasterInfo('194484313');
|
|
154
|
+
// console.log(data);
|
|
155
|
+
/* const message = h('message')
|
|
156
|
+
message.children.push(h('img', { src: data.info.face }))
|
|
157
|
+
message.children.push(h.text(`主播${data.info.uname}已下播`)) */
|
|
158
|
+
// <>{h('img', { src: data.info.face })} 主播{data.info.uname}已下播</>
|
|
159
|
+
await session.send((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, koishi_1.h)('img', { src: data.info.face }), " \u4E3B\u64AD", data.info.uname, "\u5DF2\u4E0B\u64AD"] }));
|
|
160
|
+
});
|
|
161
|
+
/* testCom
|
|
162
|
+
.subcommand('.sendmsg', '测试发送消息方法')
|
|
163
|
+
.usage('测试发送消息方法')
|
|
164
|
+
.example('test sendmsg')
|
|
165
|
+
.action(async ({ session }) => {
|
|
166
|
+
// 获得对应bot
|
|
167
|
+
const bot = this.getTheCorrespondingBotBasedOnTheSession(session)
|
|
168
|
+
this.sendMsg(['all'], bot, 'Hello World')
|
|
165
169
|
}) */
|
|
166
170
|
const biliCom = ctx.command('bili', 'bili-notify插件相关指令', { permissions: ['authority:3'] });
|
|
167
171
|
biliCom.subcommand('.login', '登录B站之后才可以进行之后的操作')
|
|
@@ -350,7 +354,7 @@ class ComRegister {
|
|
|
350
354
|
content = await ctx.biliAPI.getUserInfo(mid);
|
|
351
355
|
}
|
|
352
356
|
catch (e) {
|
|
353
|
-
return 'bili sub getUserInfo()
|
|
357
|
+
return 'bili sub getUserInfo() 发生了错误,错误为:' + e.toString();
|
|
354
358
|
}
|
|
355
359
|
// 判断是否有其他问题
|
|
356
360
|
if (content.code !== 0) {
|
|
@@ -368,7 +372,9 @@ class ComRegister {
|
|
|
368
372
|
case -352:
|
|
369
373
|
msg = '请登录后再尝试订阅';
|
|
370
374
|
break;
|
|
371
|
-
default:
|
|
375
|
+
default:
|
|
376
|
+
msg = '未知错误,错误信息:' + content.message;
|
|
377
|
+
break;
|
|
372
378
|
}
|
|
373
379
|
return msg;
|
|
374
380
|
}
|
|
@@ -376,9 +382,6 @@ class ComRegister {
|
|
|
376
382
|
let targetId;
|
|
377
383
|
// 判断是否输入了QQ群号
|
|
378
384
|
if (guildId.length > 0) { // 输入了QQ群号
|
|
379
|
-
// 判断是否需要加入的群全部推送
|
|
380
|
-
if (guildId[0] === 'ALL' || guildId[0] === 'all')
|
|
381
|
-
return ['ALL'];
|
|
382
385
|
// 定义方法
|
|
383
386
|
const checkIfGuildHasJoined = async (bot) => {
|
|
384
387
|
// 获取机器人加入的群组
|
|
@@ -401,33 +404,39 @@ class ComRegister {
|
|
|
401
404
|
};
|
|
402
405
|
// 定义可用的群组数组
|
|
403
406
|
let okGuild;
|
|
404
|
-
//
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
407
|
+
// 判断是否需要加入的群全部推送
|
|
408
|
+
if (guildId[0] === 'all') {
|
|
409
|
+
okGuild.push('all');
|
|
410
|
+
}
|
|
411
|
+
else {
|
|
412
|
+
// 判断是否有群机器人相关Bot
|
|
413
|
+
switch (session.event.platform) {
|
|
414
|
+
case 'qq': {
|
|
415
|
+
okGuild = await checkIfGuildHasJoined(this.qqBot);
|
|
416
|
+
break;
|
|
417
|
+
}
|
|
418
|
+
case 'onebot': {
|
|
419
|
+
okGuild = await checkIfGuildHasJoined(this.oneBot);
|
|
420
|
+
break;
|
|
421
|
+
}
|
|
422
|
+
case 'red': {
|
|
423
|
+
okGuild = await checkIfGuildHasJoined(this.redBot);
|
|
424
|
+
break;
|
|
425
|
+
}
|
|
426
|
+
case 'satori': {
|
|
427
|
+
okGuild = await checkIfGuildHasJoined(this.satoriBot);
|
|
428
|
+
break;
|
|
429
|
+
}
|
|
430
|
+
case 'chronocat': {
|
|
431
|
+
okGuild = await checkIfGuildHasJoined(this.chronocatBot);
|
|
432
|
+
break;
|
|
433
|
+
}
|
|
434
|
+
default: {
|
|
435
|
+
// 发送错误提示并返回
|
|
436
|
+
session.send('您尚未配置任何QQ群相关机器人,不能对QQ群进行操作');
|
|
437
|
+
// 直接返回
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
431
440
|
}
|
|
432
441
|
}
|
|
433
442
|
// 将群号用,进行分割
|
|
@@ -482,7 +491,7 @@ class ComRegister {
|
|
|
482
491
|
userData = data;
|
|
483
492
|
}
|
|
484
493
|
catch (e) {
|
|
485
|
-
this.logger.error('bili sub指令 getMasterInfo()
|
|
494
|
+
this.logger.error('bili sub指令 getMasterInfo() 发生了错误,错误为:' + e.toString());
|
|
486
495
|
return '订阅出错啦,请重试';
|
|
487
496
|
}
|
|
488
497
|
// 需要订阅直播
|
|
@@ -516,35 +525,8 @@ class ComRegister {
|
|
|
516
525
|
// 不存在则直接返回
|
|
517
526
|
if (index === -1)
|
|
518
527
|
return '请勿直接调用该指令';
|
|
519
|
-
//
|
|
520
|
-
|
|
521
|
-
switch (session.event.platform) {
|
|
522
|
-
case 'qq':
|
|
523
|
-
bot = this.qqBot;
|
|
524
|
-
break;
|
|
525
|
-
case 'qqguild':
|
|
526
|
-
bot = this.qqguildBot;
|
|
527
|
-
break;
|
|
528
|
-
case 'onebot':
|
|
529
|
-
bot = this.oneBot;
|
|
530
|
-
break;
|
|
531
|
-
case 'red':
|
|
532
|
-
bot = this.redBot;
|
|
533
|
-
break;
|
|
534
|
-
case 'telegram':
|
|
535
|
-
bot = this.telegramBot;
|
|
536
|
-
break;
|
|
537
|
-
case 'satori':
|
|
538
|
-
bot = this.satoriBot;
|
|
539
|
-
break;
|
|
540
|
-
case 'chronocat':
|
|
541
|
-
bot = this.chronocatBot;
|
|
542
|
-
break;
|
|
543
|
-
default: {
|
|
544
|
-
this.logger.warn(`${uid}非法调用 dynamic 指令,不支持该平台`);
|
|
545
|
-
return '非法调用';
|
|
546
|
-
}
|
|
547
|
-
}
|
|
528
|
+
// 获得对应bot
|
|
529
|
+
const bot = this.getTheCorrespondingBotBasedOnTheSession(session);
|
|
548
530
|
// 开始循环检测
|
|
549
531
|
const dispose = ctx.setInterval(this.dynamicDetect(ctx, bot, uid, guildId), config.dynamicLoopTime * 1000);
|
|
550
532
|
// 将销毁函数保存到订阅管理对象
|
|
@@ -565,35 +547,8 @@ class ComRegister {
|
|
|
565
547
|
const index = this.subManager.findIndex(sub => sub.roomId === roomId);
|
|
566
548
|
if (index === -1)
|
|
567
549
|
return '请勿直接调用该指令';
|
|
568
|
-
//
|
|
569
|
-
|
|
570
|
-
switch (session.event.platform) {
|
|
571
|
-
case 'qq':
|
|
572
|
-
bot = this.qqBot;
|
|
573
|
-
break;
|
|
574
|
-
case 'qqguild':
|
|
575
|
-
bot = this.qqguildBot;
|
|
576
|
-
break;
|
|
577
|
-
case 'onebot':
|
|
578
|
-
bot = this.oneBot;
|
|
579
|
-
break;
|
|
580
|
-
case 'red':
|
|
581
|
-
bot = this.redBot;
|
|
582
|
-
break;
|
|
583
|
-
case 'telegram':
|
|
584
|
-
bot = this.telegramBot;
|
|
585
|
-
break;
|
|
586
|
-
case 'satori':
|
|
587
|
-
bot = this.satoriBot;
|
|
588
|
-
break;
|
|
589
|
-
case 'chronocat':
|
|
590
|
-
bot = this.chronocatBot;
|
|
591
|
-
break;
|
|
592
|
-
default: {
|
|
593
|
-
this.logger.warn(`${roomId}非法调用 dynamic 指令,不支持该平台`);
|
|
594
|
-
return `${roomId}非法调用 dynamic 指令`;
|
|
595
|
-
}
|
|
596
|
-
}
|
|
550
|
+
// 获得对应bot
|
|
551
|
+
const bot = this.getTheCorrespondingBotBasedOnTheSession(session);
|
|
597
552
|
// 开始循环检测
|
|
598
553
|
const dispose = ctx.setInterval(this.liveDetect(ctx, bot, roomId, guildId), config.liveLoopTime * 1000);
|
|
599
554
|
// 保存销毁函数
|
|
@@ -612,7 +567,7 @@ class ComRegister {
|
|
|
612
567
|
content = await ctx.biliAPI.getLiveRoomInfo(roomId);
|
|
613
568
|
}
|
|
614
569
|
catch (e) {
|
|
615
|
-
return 'bili status指令 getLiveRoomInfo()
|
|
570
|
+
return 'bili status指令 getLiveRoomInfo() 发生了错误,错误为:' + e.toString();
|
|
616
571
|
}
|
|
617
572
|
const { data } = content;
|
|
618
573
|
let userData;
|
|
@@ -621,7 +576,7 @@ class ComRegister {
|
|
|
621
576
|
userData = userInfo;
|
|
622
577
|
}
|
|
623
578
|
catch (e) {
|
|
624
|
-
return 'bili status指令 getMasterInfo()
|
|
579
|
+
return 'bili status指令 getMasterInfo() 发生了错误,错误为:' + e.toString();
|
|
625
580
|
}
|
|
626
581
|
// B站出问题了
|
|
627
582
|
if (content.code !== 0) {
|
|
@@ -629,7 +584,7 @@ class ComRegister {
|
|
|
629
584
|
session.send('未找到该房间');
|
|
630
585
|
}
|
|
631
586
|
else {
|
|
632
|
-
session.send('
|
|
587
|
+
session.send('未知错误,错误信息为:' + content.message);
|
|
633
588
|
}
|
|
634
589
|
return;
|
|
635
590
|
}
|
|
@@ -660,111 +615,80 @@ class ComRegister {
|
|
|
660
615
|
.usage('向主人账号发送一条测试消息')
|
|
661
616
|
.example('bili private 向主人账号发送一条测试消息')
|
|
662
617
|
.action(async ({ session }) => {
|
|
663
|
-
//
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
case 'qq':
|
|
667
|
-
bot = this.qqBot;
|
|
668
|
-
break;
|
|
669
|
-
case 'qqguild':
|
|
670
|
-
bot = this.qqguildBot;
|
|
671
|
-
break;
|
|
672
|
-
case 'onebot':
|
|
673
|
-
bot = this.oneBot;
|
|
674
|
-
break;
|
|
675
|
-
case 'red':
|
|
676
|
-
bot = this.redBot;
|
|
677
|
-
break;
|
|
678
|
-
case 'telegram':
|
|
679
|
-
bot = this.telegramBot;
|
|
680
|
-
break;
|
|
681
|
-
case 'satori':
|
|
682
|
-
bot = this.satoriBot;
|
|
683
|
-
break;
|
|
684
|
-
case 'chronocat':
|
|
685
|
-
bot = this.chronocatBot;
|
|
686
|
-
break;
|
|
687
|
-
default: {
|
|
688
|
-
return `暂不支持该平台`;
|
|
689
|
-
}
|
|
690
|
-
}
|
|
618
|
+
// 获得对应bot
|
|
619
|
+
const bot = this.getTheCorrespondingBotBasedOnTheSession(session);
|
|
620
|
+
// 发送消息
|
|
691
621
|
await this.sendPrivateMsg(bot, 'Hello World');
|
|
622
|
+
// 发送提示
|
|
692
623
|
await session.send('已发送消息,如未收到则说明您的机器人不支持发送私聊消息或您的信息填写有误');
|
|
693
624
|
});
|
|
694
|
-
biliCom
|
|
625
|
+
/* biliCom
|
|
695
626
|
.subcommand('.reboot', '测试插件自动重启功能', { hidden: true })
|
|
696
627
|
.usage('测试插件自动重启功能')
|
|
697
628
|
.example('bili reboot 测试插件自动重启功能')
|
|
698
629
|
.action(async ({ session }) => {
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
bot = this.qqguildBot;
|
|
709
|
-
break;
|
|
710
|
-
case 'onebot':
|
|
711
|
-
bot = this.oneBot;
|
|
712
|
-
break;
|
|
713
|
-
case 'red':
|
|
714
|
-
bot = this.redBot;
|
|
715
|
-
break;
|
|
716
|
-
case 'telegram':
|
|
717
|
-
bot = this.telegramBot;
|
|
718
|
-
break;
|
|
719
|
-
case 'satori':
|
|
720
|
-
bot = this.satoriBot;
|
|
721
|
-
break;
|
|
722
|
-
case 'chronocat':
|
|
723
|
-
bot = this.chronocatBot;
|
|
724
|
-
break;
|
|
725
|
-
default: {
|
|
726
|
-
return `暂不支持该平台`;
|
|
727
|
-
}
|
|
728
|
-
}
|
|
729
|
-
// 发送提示消息,重启服务
|
|
730
|
-
await this.sendPrivateMsgAndRebootService(bot, ctx, '测试biliAPI等服务自动重启功能');
|
|
731
|
-
});
|
|
732
|
-
biliCom
|
|
733
|
-
.subcommand('.sendall', '测试给机器人加入的所有群发送消息')
|
|
630
|
+
// 发送提示消息
|
|
631
|
+
await session.send('测试biliAPI等服务自动重启功能')
|
|
632
|
+
// 获得对应bot
|
|
633
|
+
const bot = this.getTheCorrespondingBotBasedOnTheSession(session)
|
|
634
|
+
// 发送提示消息,重启服务
|
|
635
|
+
await this.sendPrivateMsgAndRebootService(ctx, bot, '测试biliAPI等服务自动重启功能')
|
|
636
|
+
}) */
|
|
637
|
+
/* biliCom
|
|
638
|
+
.subcommand('.sendall', '测试给机器人加入的所有群发送消息', { hidden: true })
|
|
734
639
|
.usage('测试给机器人加入的所有群发送消息')
|
|
735
640
|
.example('bili sendall 测试给机器人加入的所有群发送消息')
|
|
736
641
|
.action(async ({ session }) => {
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
642
|
+
// 获得对应bot
|
|
643
|
+
const bot = this.getTheCorrespondingBotBasedOnTheSession(session)
|
|
644
|
+
// 发送消息
|
|
645
|
+
await this.sendMsg(ctx, ['all'], bot, 'Hello World')
|
|
646
|
+
// 发送提示
|
|
647
|
+
await session.send('已向机器人加入的所有群发送了消息')
|
|
648
|
+
}) */
|
|
649
|
+
/* biliCom
|
|
650
|
+
.subcommand('.list', '获取机器人加入的所有群组', { hidden: true })
|
|
651
|
+
.usage('获取当前机器人加入的所有群聊')
|
|
652
|
+
.example('bili list 获取当前机器人加入的所有群聊')
|
|
653
|
+
.action(async ({ session }) => {
|
|
654
|
+
// 获取对应Bot
|
|
655
|
+
const bot = this.getTheCorrespondingBotBasedOnTheSession(session)
|
|
656
|
+
// 获取群列表
|
|
657
|
+
const guildList = (await bot.getGuildList()).data
|
|
658
|
+
// 遍历群列表
|
|
659
|
+
guildList.map(item => this.logger.info(`已加入${item.id}`))
|
|
660
|
+
}) */
|
|
661
|
+
}
|
|
662
|
+
getTheCorrespondingBotBasedOnTheSession(session) {
|
|
663
|
+
// 获取对应Bot
|
|
664
|
+
let bot;
|
|
665
|
+
switch (session.event.platform) {
|
|
666
|
+
case 'qq':
|
|
667
|
+
bot = this.qqBot;
|
|
668
|
+
break;
|
|
669
|
+
case 'qqguild':
|
|
670
|
+
bot = this.qqguildBot;
|
|
671
|
+
break;
|
|
672
|
+
case 'onebot':
|
|
673
|
+
bot = this.oneBot;
|
|
674
|
+
break;
|
|
675
|
+
case 'red':
|
|
676
|
+
bot = this.redBot;
|
|
677
|
+
break;
|
|
678
|
+
case 'telegram':
|
|
679
|
+
bot = this.telegramBot;
|
|
680
|
+
break;
|
|
681
|
+
case 'satori':
|
|
682
|
+
bot = this.satoriBot;
|
|
683
|
+
break;
|
|
684
|
+
case 'chronocat':
|
|
685
|
+
bot = this.chronocatBot;
|
|
686
|
+
break;
|
|
687
|
+
default: {
|
|
688
|
+
session.send('暂不支持该平台!');
|
|
764
689
|
}
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
});
|
|
690
|
+
}
|
|
691
|
+
return bot;
|
|
768
692
|
}
|
|
769
693
|
async sendPrivateMsg(bot, content) {
|
|
770
694
|
if (this.config.master.enable) {
|
|
@@ -778,14 +702,54 @@ class ComRegister {
|
|
|
778
702
|
}
|
|
779
703
|
}
|
|
780
704
|
}
|
|
781
|
-
async sendPrivateMsgAndRebootService(
|
|
705
|
+
async sendPrivateMsgAndRebootService(ctx, bot, content) {
|
|
782
706
|
await this.sendPrivateMsg(bot, content);
|
|
783
|
-
//
|
|
784
|
-
ctx.sm.
|
|
785
|
-
//
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
}
|
|
707
|
+
// 重启插件
|
|
708
|
+
const flag = ctx.sm.restartPlugin();
|
|
709
|
+
// 判断是否重启成功
|
|
710
|
+
if (flag) {
|
|
711
|
+
this.logger.info('重启插件成功');
|
|
712
|
+
}
|
|
713
|
+
else {
|
|
714
|
+
// 重启失败,发送消息
|
|
715
|
+
await this.sendPrivateMsg(bot, '已重启插件三次,请检查机器人状态后手动重启');
|
|
716
|
+
// 关闭插件
|
|
717
|
+
ctx.sm.disposePlugin();
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
async sendMsg(ctx, targets, bot, content) {
|
|
721
|
+
// 定义需要发送的数组
|
|
722
|
+
let sendArr = [];
|
|
723
|
+
// 判断是否需要推送所有机器人加入的群
|
|
724
|
+
if (targets[0] === 'all') {
|
|
725
|
+
// 获取所有guild
|
|
726
|
+
for (let guild of (await bot.getGuildList()).data) {
|
|
727
|
+
sendArr.push(guild.id);
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
else {
|
|
731
|
+
sendArr = targets;
|
|
732
|
+
}
|
|
733
|
+
// 循环给每个群组发送
|
|
734
|
+
for (let guildId of sendArr) {
|
|
735
|
+
// 多次尝试发送消息
|
|
736
|
+
let attempts = 3;
|
|
737
|
+
for (let i = 0; i < attempts; i++) {
|
|
738
|
+
try {
|
|
739
|
+
// 发送消息
|
|
740
|
+
await bot.sendMessage(guildId, content);
|
|
741
|
+
// 防止消息发送速度过快被忽略
|
|
742
|
+
await ctx.sleep(500);
|
|
743
|
+
// 成功发送消息,跳出循环
|
|
744
|
+
break;
|
|
745
|
+
}
|
|
746
|
+
catch (e) {
|
|
747
|
+
if (i === attempts - 1) { // 已尝试三次
|
|
748
|
+
throw new Error(`发送群组ID:${guildId}消息失败!原因: ` + e.toString());
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
}
|
|
789
753
|
}
|
|
790
754
|
dynamicDetect(ctx, bot, uid, guildId) {
|
|
791
755
|
let firstSubscription = true;
|
|
@@ -805,7 +769,7 @@ class ComRegister {
|
|
|
805
769
|
content = await ctx.biliAPI.getUserSpaceDynamic(uid);
|
|
806
770
|
}
|
|
807
771
|
catch (e) {
|
|
808
|
-
return this.logger.error('dynamicDetect getUserSpaceDynamic()
|
|
772
|
+
return this.logger.error('dynamicDetect getUserSpaceDynamic() 发生了错误,错误为:' + e.toString());
|
|
809
773
|
}
|
|
810
774
|
// 判断是否出现其他问题
|
|
811
775
|
if (content.code !== 0) {
|
|
@@ -814,10 +778,13 @@ class ComRegister {
|
|
|
814
778
|
await this.sendPrivateMsg(bot, '账号未登录,请登录后重新订阅动态');
|
|
815
779
|
break;
|
|
816
780
|
}
|
|
817
|
-
default: await this.sendPrivateMsg(bot, '
|
|
781
|
+
default: await this.sendPrivateMsg(bot, '获取动态信息错误,错误为:' + content.message); // 未知错误
|
|
818
782
|
}
|
|
819
783
|
// 取消订阅
|
|
820
784
|
this.unsubSingle(ctx, uid, 1); /* 1为取消动态订阅 */
|
|
785
|
+
// 发送取消订阅消息
|
|
786
|
+
await this.sendPrivateMsg(bot, `UID:${uid},已取消订阅动态`);
|
|
787
|
+
// 结束循环
|
|
821
788
|
return;
|
|
822
789
|
}
|
|
823
790
|
// 获取数据内容
|
|
@@ -854,22 +821,22 @@ class ComRegister {
|
|
|
854
821
|
break;
|
|
855
822
|
if (e.message === '出现关键词,屏蔽该动态') {
|
|
856
823
|
// 如果需要发送才发送
|
|
857
|
-
this.config.filter.notify && await this.sendMsg(guildId, bot, `${upName}发布了一条含有屏蔽关键字的动态`);
|
|
824
|
+
this.config.filter.notify && await this.sendMsg(ctx, guildId, bot, `${upName}发布了一条含有屏蔽关键字的动态`);
|
|
858
825
|
break;
|
|
859
826
|
}
|
|
860
827
|
if (e.message === '已屏蔽转发动态') {
|
|
861
|
-
this.config.filter.notify && await this.sendMsg(guildId, bot, `${upName}发布了一条转发动态,已屏蔽`);
|
|
828
|
+
this.config.filter.notify && await this.sendMsg(ctx, guildId, bot, `${upName}发布了一条转发动态,已屏蔽`);
|
|
862
829
|
break;
|
|
863
830
|
}
|
|
864
831
|
}
|
|
865
832
|
// 如果pic存在,则直接返回pic
|
|
866
833
|
if (pic) {
|
|
867
834
|
// pic存在,使用的是render模式
|
|
868
|
-
await this.sendMsg(guildId, bot, pic + dUrl);
|
|
835
|
+
await this.sendMsg(ctx, guildId, bot, pic + dUrl);
|
|
869
836
|
}
|
|
870
837
|
else {
|
|
871
838
|
// pic不存在,说明使用的是page模式
|
|
872
|
-
await this.sendMsg(guildId, bot, koishi_1.h.image(buffer, 'image/png' + dUrl));
|
|
839
|
+
await this.sendMsg(ctx, guildId, bot, koishi_1.h.image(buffer, 'image/png' + dUrl));
|
|
873
840
|
}
|
|
874
841
|
// 如果成功,那么跳出循环
|
|
875
842
|
break;
|
|
@@ -877,7 +844,7 @@ class ComRegister {
|
|
|
877
844
|
catch (e) {
|
|
878
845
|
this.logger.error('dynamicDetect generateDynamicImg() 推送卡片发送失败,原因:' + e.toString());
|
|
879
846
|
if (i === attempts - 1) { // 如果已经尝试了三次,那么抛出错误
|
|
880
|
-
return await this.sendPrivateMsgAndRebootService(
|
|
847
|
+
return await this.sendPrivateMsgAndRebootService(ctx, bot, '插件可能出现某些未知错误,请尝试重启插件,如果仍然发生该错误,请带着日志向作者反馈');
|
|
881
848
|
}
|
|
882
849
|
}
|
|
883
850
|
}
|
|
@@ -895,36 +862,6 @@ class ComRegister {
|
|
|
895
862
|
}
|
|
896
863
|
};
|
|
897
864
|
}
|
|
898
|
-
async sendMsg(targets, bot, content) {
|
|
899
|
-
// 定义需要发送的数组
|
|
900
|
-
let sendArr = [];
|
|
901
|
-
// 判断是否需要推送所有机器人加入的群
|
|
902
|
-
if (targets[0] === 'ALL') {
|
|
903
|
-
// 获取所有guild
|
|
904
|
-
for (let guild in (await bot.getGuildList())) {
|
|
905
|
-
this.logger.info(`已加入${guild}`);
|
|
906
|
-
sendArr.push(guild);
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
|
-
else {
|
|
910
|
-
sendArr = targets;
|
|
911
|
-
}
|
|
912
|
-
// 循环给每个群组发送
|
|
913
|
-
for (let guildId of sendArr) {
|
|
914
|
-
// 多次尝试生成图片
|
|
915
|
-
let attempts = 3;
|
|
916
|
-
for (let i = 0; i < attempts; i++) {
|
|
917
|
-
try {
|
|
918
|
-
return await bot.sendMessage(guildId, content);
|
|
919
|
-
}
|
|
920
|
-
catch (e) {
|
|
921
|
-
if (i === attempts - 1) { // 已尝试三次
|
|
922
|
-
throw new Error(`发送群组ID:${guildId}消息失败!原因: ` + e.toString());
|
|
923
|
-
}
|
|
924
|
-
}
|
|
925
|
-
}
|
|
926
|
-
}
|
|
927
|
-
}
|
|
928
865
|
liveDetect(ctx, bot, roomId, guildId) {
|
|
929
866
|
let firstSubscription = true;
|
|
930
867
|
let timer = 0;
|
|
@@ -943,23 +880,23 @@ class ComRegister {
|
|
|
943
880
|
if (!liveStartMsg) {
|
|
944
881
|
// pic 存在,使用的是render模式
|
|
945
882
|
if (pic)
|
|
946
|
-
return await this.sendMsg(guildId, bot, pic);
|
|
883
|
+
return await this.sendMsg(ctx, guildId, bot, pic);
|
|
947
884
|
// pic不存在,说明使用的是page模式
|
|
948
|
-
await this.sendMsg(guildId, bot, koishi_1.h.image(buffer, 'image/png'));
|
|
885
|
+
await this.sendMsg(ctx, guildId, bot, koishi_1.h.image(buffer, 'image/png'));
|
|
949
886
|
}
|
|
950
887
|
else if (liveStartMsg && atAll) {
|
|
951
888
|
// pic 存在,使用的是render模式
|
|
952
889
|
if (pic)
|
|
953
|
-
return await this.sendMsg(guildId, bot, pic + (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("at", { type: "all" }), " ", liveStartMsg, " "] }));
|
|
890
|
+
return await this.sendMsg(ctx, guildId, bot, pic + (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("at", { type: "all" }), " ", liveStartMsg, " "] }));
|
|
954
891
|
// pic不存在,说明使用的是page模式
|
|
955
|
-
await this.sendMsg(guildId, bot, koishi_1.h.image(buffer, 'image/png' + (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("at", { type: "all" }), " ", liveStartMsg] })));
|
|
892
|
+
await this.sendMsg(ctx, guildId, bot, koishi_1.h.image(buffer, 'image/png' + (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("at", { type: "all" }), " ", liveStartMsg] })));
|
|
956
893
|
}
|
|
957
894
|
else {
|
|
958
895
|
// pic 存在,使用的是render模式
|
|
959
896
|
if (pic)
|
|
960
|
-
return await this.sendMsg(guildId, bot, pic + liveStartMsg);
|
|
897
|
+
return await this.sendMsg(ctx, guildId, bot, pic + liveStartMsg);
|
|
961
898
|
// pic不存在,说明使用的是page模式
|
|
962
|
-
await this.sendMsg(guildId, bot, koishi_1.h.image(buffer, 'image/png' + liveStartMsg));
|
|
899
|
+
await this.sendMsg(ctx, guildId, bot, koishi_1.h.image(buffer, 'image/png' + liveStartMsg));
|
|
963
900
|
}
|
|
964
901
|
// 成功则跳出循环
|
|
965
902
|
break;
|
|
@@ -967,7 +904,7 @@ class ComRegister {
|
|
|
967
904
|
catch (e) {
|
|
968
905
|
this.logger.error('liveDetect generateLiveImg() 推送卡片发送失败,原因:' + e.toString());
|
|
969
906
|
if (i === attempts - 1) { // 已尝试三次
|
|
970
|
-
return await this.sendPrivateMsgAndRebootService(
|
|
907
|
+
return await this.sendPrivateMsgAndRebootService(ctx, bot, '插件可能出现某些未知错误,请尝试重启插件,如果仍然发生该错误,请带着日志向作者反馈');
|
|
971
908
|
}
|
|
972
909
|
}
|
|
973
910
|
}
|
|
@@ -989,9 +926,9 @@ class ComRegister {
|
|
|
989
926
|
break;
|
|
990
927
|
}
|
|
991
928
|
catch (e) {
|
|
992
|
-
this.logger.error('liveDetect getLiveRoomInfo
|
|
929
|
+
this.logger.error('liveDetect getLiveRoomInfo 发生了错误,错误为:' + e.toString());
|
|
993
930
|
if (i === attempts - 1) { // 已尝试三次
|
|
994
|
-
return await this.sendPrivateMsgAndRebootService(
|
|
931
|
+
return await this.sendPrivateMsgAndRebootService(ctx, bot, '插件可能出现某些未知错误,请尝试重启插件,如果仍然发生该错误,请带着日志向作者反馈');
|
|
995
932
|
}
|
|
996
933
|
}
|
|
997
934
|
}
|
|
@@ -1011,9 +948,9 @@ class ComRegister {
|
|
|
1011
948
|
break;
|
|
1012
949
|
}
|
|
1013
950
|
catch (e) {
|
|
1014
|
-
this.logger.error('liveDetect getMasterInfo()
|
|
951
|
+
this.logger.error('liveDetect getMasterInfo() 发生了错误,错误为:' + e.toString());
|
|
1015
952
|
if (i === attempts - 1) { // 已尝试三次
|
|
1016
|
-
return await this.sendPrivateMsgAndRebootService(
|
|
953
|
+
return await this.sendPrivateMsgAndRebootService(ctx, bot, '插件可能出现某些未知错误,请尝试重启插件,如果仍然发生该错误,请带着日志向作者反馈');
|
|
1017
954
|
}
|
|
1018
955
|
}
|
|
1019
956
|
}
|
|
@@ -1043,8 +980,9 @@ class ComRegister {
|
|
|
1043
980
|
let liveEndMsg = this.config.customLiveEnd
|
|
1044
981
|
.replace('-name', uData.info.uname)
|
|
1045
982
|
.replace('-time', await ctx.gimg.getTimeDifference(liveTime));
|
|
983
|
+
let msg = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, koishi_1.h)('img', { src: data.info.face }), " ", liveEndMsg] });
|
|
1046
984
|
// 发送下播通知
|
|
1047
|
-
await this.sendMsg(guildId, bot,
|
|
985
|
+
await this.sendMsg(ctx, guildId, bot, msg);
|
|
1048
986
|
}
|
|
1049
987
|
// 未进循环,还未开播,继续循环
|
|
1050
988
|
break;
|
|
@@ -1067,9 +1005,9 @@ class ComRegister {
|
|
|
1067
1005
|
break;
|
|
1068
1006
|
}
|
|
1069
1007
|
catch (e) {
|
|
1070
|
-
this.logger.error('liveDetect open getMasterInfo()
|
|
1008
|
+
this.logger.error('liveDetect open getMasterInfo() 发生了错误,错误为:' + e.toString());
|
|
1071
1009
|
if (i === attempts - 1) { // 已尝试三次
|
|
1072
|
-
return await this.sendPrivateMsgAndRebootService(
|
|
1010
|
+
return await this.sendPrivateMsgAndRebootService(ctx, bot, '插件可能出现某些未知错误,请尝试重启插件,如果仍然发生该错误,请带着日志向作者反馈');
|
|
1073
1011
|
}
|
|
1074
1012
|
}
|
|
1075
1013
|
}
|
|
@@ -1274,9 +1212,9 @@ class ComRegister {
|
|
|
1274
1212
|
break;
|
|
1275
1213
|
}
|
|
1276
1214
|
catch (e) {
|
|
1277
|
-
this.logger.error('getSubFromDatabase() getUserInfo()
|
|
1215
|
+
this.logger.error('getSubFromDatabase() getUserInfo() 发生了错误,错误为:' + e.toString());
|
|
1278
1216
|
if (i === attempts - 1) { // 已尝试三次
|
|
1279
|
-
return await this.sendPrivateMsgAndRebootService(
|
|
1217
|
+
return await this.sendPrivateMsgAndRebootService(ctx, bot, '你的网络可能出现了某些问题,请检查后重启插件');
|
|
1280
1218
|
}
|
|
1281
1219
|
}
|
|
1282
1220
|
}
|
package/lib/database.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.name = void 0;
|
|
4
|
-
exports.apply = apply;
|
|
3
|
+
exports.apply = exports.name = void 0;
|
|
5
4
|
exports.name = 'Database';
|
|
6
5
|
function apply(ctx) {
|
|
7
6
|
// 新增LoginBili表
|
|
@@ -23,3 +22,4 @@ function apply(ctx) {
|
|
|
23
22
|
time: 'timestamp'
|
|
24
23
|
}, { autoInc: true });
|
|
25
24
|
}
|
|
25
|
+
exports.apply = apply;
|
package/lib/generateImg.js
CHANGED
|
@@ -68,40 +68,38 @@ class GenerateImg extends koishi_1.Service {
|
|
|
68
68
|
* {
|
|
69
69
|
margin: 0;
|
|
70
70
|
padding: 0;
|
|
71
|
+
box-sizing: border-box;
|
|
71
72
|
font-family: "${this.giConfig.font}", "Custom Font", "Microsoft YaHei", "Source Han Sans", "Noto Sans CJK", sans-serif;
|
|
72
73
|
}
|
|
73
|
-
|
|
74
|
+
|
|
74
75
|
html {
|
|
75
|
-
width:
|
|
76
|
+
width: 800px;
|
|
76
77
|
height: auto;
|
|
77
78
|
}
|
|
78
|
-
|
|
79
|
+
|
|
79
80
|
.background {
|
|
80
|
-
width:
|
|
81
|
+
width: 100%;
|
|
81
82
|
height: auto;
|
|
83
|
+
padding: 15px;
|
|
82
84
|
background: linear-gradient(to right bottom, ${this.giConfig.cardColorStart}, ${this.giConfig.cardColorEnd});
|
|
83
85
|
overflow: hidden;
|
|
84
86
|
}
|
|
85
|
-
|
|
86
|
-
.
|
|
87
|
-
width:
|
|
87
|
+
|
|
88
|
+
.base-plate {
|
|
89
|
+
width: 100%;
|
|
88
90
|
height: auto;
|
|
89
91
|
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
overflow: hidden;
|
|
92
|
+
padding: 15px;
|
|
93
|
+
border-radius: 10px;
|
|
93
94
|
background-color: #FFF5EE;
|
|
94
95
|
}
|
|
95
|
-
|
|
96
|
-
.
|
|
97
|
-
|
|
98
|
-
width: 740px;
|
|
99
|
-
` : `
|
|
100
|
-
width: 704px;
|
|
101
|
-
margin: 20px auto;
|
|
102
|
-
`}
|
|
96
|
+
|
|
97
|
+
.card {
|
|
98
|
+
width: 100%;
|
|
103
99
|
height: auto;
|
|
104
|
-
border-radius:
|
|
100
|
+
border-radius: 5px;
|
|
101
|
+
padding: 15px;
|
|
102
|
+
overflow: hidden;
|
|
105
103
|
background-color: #fff;
|
|
106
104
|
}
|
|
107
105
|
|
|
@@ -165,8 +163,8 @@ class GenerateImg extends koishi_1.Service {
|
|
|
165
163
|
</head>
|
|
166
164
|
<body>
|
|
167
165
|
<div class="background">
|
|
168
|
-
<div class="
|
|
169
|
-
<div class="
|
|
166
|
+
<div ${this.giConfig.removeBorder ? '' : 'class="base-plate"'}>
|
|
167
|
+
<div class="card">
|
|
170
168
|
<img src="${cover ? data.user_cover : data.keyframe}"
|
|
171
169
|
alt="封面">
|
|
172
170
|
<div class="card-body">
|
|
@@ -321,8 +319,9 @@ class GenerateImg extends koishi_1.Service {
|
|
|
321
319
|
// 转发动态
|
|
322
320
|
if (dynamicMajorData.type === DYNAMIC_TYPE_FORWARD) {
|
|
323
321
|
//转发动态屏蔽
|
|
324
|
-
if (this.giConfig.filter.enable && this.giConfig.filter.forward)
|
|
322
|
+
if (this.giConfig.filter.enable && this.giConfig.filter.forward) {
|
|
325
323
|
throw new Error('已屏蔽转发动态');
|
|
324
|
+
}
|
|
326
325
|
// User info
|
|
327
326
|
const forward_module_author = dynamicMajorData.orig.modules.module_author;
|
|
328
327
|
const forwardUserAvatarUrl = forward_module_author.face;
|
|
@@ -333,7 +332,7 @@ class GenerateImg extends koishi_1.Service {
|
|
|
333
332
|
main += `
|
|
334
333
|
<div class="card-forward">
|
|
335
334
|
<div class="forward-userinfo">
|
|
336
|
-
<img class="forward-avatar" src="${forwardUserAvatarUrl}" alt="">
|
|
335
|
+
<img class="forward-avatar" src="${forwardUserAvatarUrl}" alt="avatar">
|
|
337
336
|
<span class="forward-username">${forwardUserName} ${forwardInfo ? forwardInfo : ''}</span>
|
|
338
337
|
</div>
|
|
339
338
|
<div class="forward-main">
|
|
@@ -548,38 +547,35 @@ class GenerateImg extends koishi_1.Service {
|
|
|
548
547
|
box-sizing: border-box;
|
|
549
548
|
font-family: "${this.giConfig.font}", "Custom Font", "Microsoft YaHei", "Source Han Sans", "Noto Sans CJK", sans-serif;
|
|
550
549
|
}
|
|
551
|
-
|
|
550
|
+
|
|
552
551
|
html {
|
|
553
|
-
width:
|
|
552
|
+
width: 800px;
|
|
554
553
|
height: auto;
|
|
555
554
|
}
|
|
556
|
-
|
|
555
|
+
|
|
557
556
|
.background {
|
|
558
|
-
width:
|
|
557
|
+
width: 100%;
|
|
559
558
|
height: auto;
|
|
559
|
+
padding: 15px;
|
|
560
560
|
background: linear-gradient(to right bottom, ${this.giConfig.cardColorStart}, ${this.giConfig.cardColorEnd});
|
|
561
561
|
overflow: hidden;
|
|
562
562
|
}
|
|
563
|
-
|
|
564
|
-
.
|
|
565
|
-
width:
|
|
563
|
+
|
|
564
|
+
.base-plate {
|
|
565
|
+
width: 100%;
|
|
566
566
|
height: auto;
|
|
567
567
|
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
overflow: hidden;
|
|
568
|
+
padding: 15px;
|
|
569
|
+
border-radius: 10px;
|
|
571
570
|
background-color: #FFF5EE;
|
|
572
571
|
}
|
|
573
|
-
|
|
574
|
-
.
|
|
575
|
-
|
|
576
|
-
width: 740px;
|
|
577
|
-
` : `
|
|
578
|
-
width: 704px;
|
|
579
|
-
margin: 20px auto;
|
|
580
|
-
`}
|
|
572
|
+
|
|
573
|
+
.card {
|
|
574
|
+
width: 100%;
|
|
581
575
|
height: auto;
|
|
582
|
-
border-radius:
|
|
576
|
+
border-radius: 5px;
|
|
577
|
+
padding: 15px;
|
|
578
|
+
overflow: hidden;
|
|
583
579
|
background-color: #fff;
|
|
584
580
|
}
|
|
585
581
|
|
|
@@ -785,8 +781,8 @@ class GenerateImg extends koishi_1.Service {
|
|
|
785
781
|
}
|
|
786
782
|
|
|
787
783
|
.card .card-forward {
|
|
788
|
-
|
|
789
|
-
padding: 12px
|
|
784
|
+
border-radius: 5px;
|
|
785
|
+
padding: 12px 10px 14px 10px;
|
|
790
786
|
background-color: #F6F7F8;
|
|
791
787
|
}
|
|
792
788
|
|
|
@@ -876,36 +872,38 @@ class GenerateImg extends koishi_1.Service {
|
|
|
876
872
|
* {
|
|
877
873
|
margin: 0;
|
|
878
874
|
padding: 0;
|
|
875
|
+
box-sizing: border-box;
|
|
879
876
|
font-family: "${this.giConfig.font}", "Custom Font", "Microsoft YaHei", "Source Han Sans", "Noto Sans CJK", sans-serif;
|
|
880
877
|
}
|
|
881
878
|
|
|
882
879
|
html {
|
|
883
|
-
width:
|
|
880
|
+
width: 800px;
|
|
884
881
|
height: auto;
|
|
885
882
|
}
|
|
886
883
|
|
|
887
884
|
.background {
|
|
888
|
-
width:
|
|
885
|
+
width: 100%;
|
|
889
886
|
height: auto;
|
|
887
|
+
padding: 15px;
|
|
890
888
|
background: linear-gradient(to right bottom, ${this.giConfig.cardColorStart}, ${this.giConfig.cardColorEnd});
|
|
891
889
|
overflow: hidden;
|
|
892
890
|
}
|
|
893
|
-
|
|
894
|
-
.
|
|
895
|
-
width:
|
|
891
|
+
|
|
892
|
+
.base-plate {
|
|
893
|
+
width: 100%;
|
|
896
894
|
height: auto;
|
|
897
895
|
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
overflow: hidden;
|
|
896
|
+
padding: 15px;
|
|
897
|
+
border-radius: 10px;
|
|
901
898
|
background-color: #FFF5EE;
|
|
902
899
|
}
|
|
903
900
|
|
|
904
|
-
.
|
|
905
|
-
width:
|
|
901
|
+
.card {
|
|
902
|
+
width: 100%;
|
|
906
903
|
height: auto;
|
|
907
|
-
|
|
908
|
-
|
|
904
|
+
border-radius: 5px;
|
|
905
|
+
padding: 15px;
|
|
906
|
+
overflow: hidden;
|
|
909
907
|
background-color: #fff;
|
|
910
908
|
}
|
|
911
909
|
|
|
@@ -1112,8 +1110,8 @@ class GenerateImg extends koishi_1.Service {
|
|
|
1112
1110
|
}
|
|
1113
1111
|
|
|
1114
1112
|
.card .card-forward {
|
|
1115
|
-
|
|
1116
|
-
padding: 12px
|
|
1113
|
+
border-radius: 5px;
|
|
1114
|
+
padding: 12px 10px 14px 10px;
|
|
1117
1115
|
background-color: #F6F7F8;
|
|
1118
1116
|
}
|
|
1119
1117
|
|
|
@@ -1205,8 +1203,8 @@ class GenerateImg extends koishi_1.Service {
|
|
|
1205
1203
|
</head>
|
|
1206
1204
|
<body>
|
|
1207
1205
|
<div class="background">
|
|
1208
|
-
<div class="
|
|
1209
|
-
<div class="
|
|
1206
|
+
<div ${this.giConfig.removeBorder ? '' : 'class="base-plate"'}>
|
|
1207
|
+
<div class="card">
|
|
1210
1208
|
<div class="card-body">
|
|
1211
1209
|
<!-- 主播头像 -->
|
|
1212
1210
|
<img class="anchor-avatar"
|
package/lib/index.d.ts
CHANGED
|
@@ -34,10 +34,12 @@ export declare const Config: Schema<Config>;
|
|
|
34
34
|
declare class ServerManager extends Service {
|
|
35
35
|
servers: ForkScope[];
|
|
36
36
|
renderType: number;
|
|
37
|
+
restartCount: number;
|
|
37
38
|
constructor(ctx: Context);
|
|
38
39
|
protected start(): void | Promise<void>;
|
|
39
40
|
registerPlugin: () => void;
|
|
40
41
|
disposePlugin: () => void;
|
|
42
|
+
restartPlugin: () => boolean;
|
|
41
43
|
}
|
|
42
44
|
export declare function apply(ctx: Context, config: Config): void;
|
|
43
45
|
export {};
|
package/lib/index.js
CHANGED
|
@@ -26,8 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.Config = exports.name = exports.inject = void 0;
|
|
30
|
-
exports.apply = apply;
|
|
29
|
+
exports.apply = exports.Config = exports.name = exports.inject = void 0;
|
|
31
30
|
const koishi_1 = require("koishi");
|
|
32
31
|
// import plugins
|
|
33
32
|
// import Authority from './authority'
|
|
@@ -149,9 +148,12 @@ exports.Config = koishi_1.Schema.object({
|
|
|
149
148
|
]),
|
|
150
149
|
});
|
|
151
150
|
class ServerManager extends koishi_1.Service {
|
|
151
|
+
// 服务
|
|
152
152
|
servers = [];
|
|
153
153
|
// 渲染模式
|
|
154
154
|
renderType;
|
|
155
|
+
// 重启次数
|
|
156
|
+
restartCount = 0;
|
|
155
157
|
constructor(ctx) {
|
|
156
158
|
super(ctx, 'sm');
|
|
157
159
|
}
|
|
@@ -185,6 +187,21 @@ class ServerManager extends koishi_1.Service {
|
|
|
185
187
|
fork.dispose();
|
|
186
188
|
});
|
|
187
189
|
};
|
|
190
|
+
restartPlugin = () => {
|
|
191
|
+
// 重启次数大于等于3次
|
|
192
|
+
if (this.restartCount >= 3)
|
|
193
|
+
return false;
|
|
194
|
+
// 重启次数+1
|
|
195
|
+
this.restartCount++;
|
|
196
|
+
// 停用插件
|
|
197
|
+
this.disposePlugin();
|
|
198
|
+
// 隔一秒启动插件
|
|
199
|
+
this.ctx.setTimeout(() => {
|
|
200
|
+
this.registerPlugin();
|
|
201
|
+
}, 1000);
|
|
202
|
+
// 返回true
|
|
203
|
+
return true;
|
|
204
|
+
};
|
|
188
205
|
}
|
|
189
206
|
function apply(ctx, config) {
|
|
190
207
|
// 设置config
|
|
@@ -244,3 +261,4 @@ function apply(ctx, config) {
|
|
|
244
261
|
}
|
|
245
262
|
});
|
|
246
263
|
}
|
|
264
|
+
exports.apply = apply;
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
- 使用指令 `bili sub <uid> [Q群号]` 订阅需要订阅的UP主
|
|
37
37
|
- 参数说明:
|
|
38
38
|
- `uid` 为必填参数,为 `up主` 的 `uid`
|
|
39
|
-
- `Q群号` 为可选参数,可以添加多个,如果Q群号为 `
|
|
39
|
+
- `Q群号` 为可选参数,可以添加多个,如果Q群号为 `all` 则会向机器人加入的所有群聊推送
|
|
40
40
|
- 选项说明:`bili sub <uid>` 有两个选项:-l 和 -d
|
|
41
41
|
- `-l` 为订阅UP主直播间,包括直播开播通知,定时推送直播内容,下播通知
|
|
42
42
|
- `-d` 为订阅UP主动态推送,目前实现推送的动态类型有:普通图文动态,转发动态,直播预约动态
|
|
@@ -126,6 +126,15 @@
|
|
|
126
126
|
- ver 1.2.3-beta.2 功能测试版本,请跳过该版本
|
|
127
127
|
- ver 1.2.3-rc.0 现已支持向机器人加入的所有群发送推送消息(仅支持Q群,实验性),修复预约动态无法正常推送的bug
|
|
128
128
|
- ver 1.2.3-rc.1 修复 `1.2.3-rc.0` 出现的重复推送bug
|
|
129
|
+
- ver 1.2.3-rc.2 bug测试版本,请跳过
|
|
130
|
+
- ver 1.2.3-rc.3 bug测试版本,请跳过
|
|
131
|
+
- ver 1.2.3-rc.4 bug测试版本,请跳过
|
|
132
|
+
- ver 1.2.3-rc.5 修复了第一次使用插件时,扫码登录后没有任何反应,并且仍提示没有登录的bug
|
|
133
|
+
- ver 1.2.3-rc.6 bug测试版本,请跳过
|
|
134
|
+
- ver 1.2.3-rc.7 尝试修复多群推送时部分群未推送的bug
|
|
135
|
+
- ver 1.2.3-rc.8 修复在 `1.2.3-rc.7` 版本引入的连续推送三次的bug
|
|
136
|
+
- ver 1.2.3-rc.9 完善了插件出错时的日志输出
|
|
137
|
+
- ver 1.2.3-rc.10 修复不能移除边框的bug,对图片布局进行了调整,新增下播消息发送主播头像
|
|
129
138
|
|
|
130
139
|
## 交流群
|
|
131
140
|
|