koishi-plugin-bilibili-notify 1.0.12 → 1.0.13
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 +29 -39
- package/package.json +1 -1
- package/readme.md +2 -0
package/lib/comRegister.d.ts
CHANGED
package/lib/comRegister.js
CHANGED
|
@@ -17,6 +17,7 @@ class ComRegister {
|
|
|
17
17
|
static inject = ['biliAPI', 'gimg', 'wbi', 'database'];
|
|
18
18
|
logger;
|
|
19
19
|
config;
|
|
20
|
+
loginTimer;
|
|
20
21
|
num = 0;
|
|
21
22
|
subNotifier;
|
|
22
23
|
subManager = [];
|
|
@@ -136,7 +137,7 @@ class ComRegister {
|
|
|
136
137
|
}
|
|
137
138
|
// 判断是否出问题
|
|
138
139
|
if (content.code !== 0)
|
|
139
|
-
return await session.send('
|
|
140
|
+
return await session.send('出问题咯,请联系管理员解决');
|
|
140
141
|
// 生成二维码
|
|
141
142
|
qrcode_1.default.toBuffer(content.data.url, {
|
|
142
143
|
errorCorrectionLevel: 'H', // 错误更正水平
|
|
@@ -148,13 +149,13 @@ class ComRegister {
|
|
|
148
149
|
}
|
|
149
150
|
}, async (err, buffer) => {
|
|
150
151
|
if (err)
|
|
151
|
-
return await session.send('
|
|
152
|
+
return await session.send('二维码生成出错,请重新尝试');
|
|
152
153
|
await session.send(koishi_1.h.image(buffer, 'image/png'));
|
|
153
154
|
});
|
|
154
|
-
//
|
|
155
|
-
|
|
155
|
+
// 检查之前是否存在登录定时器
|
|
156
|
+
this.loginTimer && this.loginTimer();
|
|
156
157
|
// 发起登录请求检查登录状态
|
|
157
|
-
|
|
158
|
+
this.loginTimer = ctx.setInterval(async () => {
|
|
158
159
|
let loginContent;
|
|
159
160
|
try {
|
|
160
161
|
loginContent = await ctx.biliAPI.getLoginStatus(content.data.qrcode_key);
|
|
@@ -164,12 +165,12 @@ class ComRegister {
|
|
|
164
165
|
return;
|
|
165
166
|
}
|
|
166
167
|
if (loginContent.code !== 0) {
|
|
167
|
-
|
|
168
|
-
return await session.send('
|
|
168
|
+
this.loginTimer();
|
|
169
|
+
return await session.send('登录失败请联系管理员解决');
|
|
169
170
|
}
|
|
170
171
|
if (loginContent.data.code === 86038) {
|
|
171
|
-
|
|
172
|
-
return await session.send('
|
|
172
|
+
this.loginTimer();
|
|
173
|
+
return await session.send('二维码已失效,请重新登录');
|
|
173
174
|
}
|
|
174
175
|
if (loginContent.data.code === 0) { // 登录成功
|
|
175
176
|
const encryptedCookies = ctx.wbi.encrypt(ctx.biliAPI.getCookies());
|
|
@@ -180,13 +181,13 @@ class ComRegister {
|
|
|
180
181
|
bili_refresh_token: encryptedRefreshToken
|
|
181
182
|
}]);
|
|
182
183
|
// 销毁定时器
|
|
183
|
-
|
|
184
|
+
this.loginTimer();
|
|
184
185
|
// 订阅之前的订阅
|
|
185
186
|
await this.getSubFromDatabase(ctx);
|
|
186
187
|
// 清除控制台通知
|
|
187
188
|
ctx.biliAPI.disposeNotifier();
|
|
188
189
|
// 发送成功登录推送
|
|
189
|
-
await session.send('
|
|
190
|
+
await session.send('登录成功');
|
|
190
191
|
// bili show
|
|
191
192
|
await session.execute('bili show');
|
|
192
193
|
return;
|
|
@@ -328,7 +329,7 @@ class ComRegister {
|
|
|
328
329
|
}
|
|
329
330
|
}
|
|
330
331
|
else {
|
|
331
|
-
return '
|
|
332
|
+
return '暂不支持群号发送';
|
|
332
333
|
}
|
|
333
334
|
// 保存到数据库中
|
|
334
335
|
const sub = await ctx.database.create('bilibili', {
|
|
@@ -484,10 +485,10 @@ class ComRegister {
|
|
|
484
485
|
// B站出问题了
|
|
485
486
|
if (content.code !== 0) {
|
|
486
487
|
if (content.msg === '未找到该房间') {
|
|
487
|
-
session.send('
|
|
488
|
+
session.send('未找到该房间');
|
|
488
489
|
}
|
|
489
490
|
else {
|
|
490
|
-
session.send('
|
|
491
|
+
session.send('未知错误,请呼叫管理员检查问题');
|
|
491
492
|
}
|
|
492
493
|
return;
|
|
493
494
|
}
|
|
@@ -554,14 +555,6 @@ class ComRegister {
|
|
|
554
555
|
this.logger.info(`items[${num}].modules.module_author.pub_ts: ${ctx.gimg.unixTimestampToString(items[num].modules.module_author.pub_ts)}`) */
|
|
555
556
|
// 寻找发布时间比时间点更晚的动态
|
|
556
557
|
if (items[num].modules.module_author.pub_ts > timePoint) {
|
|
557
|
-
// 更新时间点为当前动态的发布时间
|
|
558
|
-
/* if (num === 1) { // 寻找倒数第二条动态
|
|
559
|
-
if (items[0].modules.module_tag) { // 存在置顶动态
|
|
560
|
-
timePoint = items[num].modules.module_author.pub_ts
|
|
561
|
-
} else {
|
|
562
|
-
timePoint = items[0].modules.module_author.pub_ts
|
|
563
|
-
}
|
|
564
|
-
} */
|
|
565
558
|
// 推送该条动态
|
|
566
559
|
let attempts = 3;
|
|
567
560
|
for (let i = 0; i < attempts; i++) {
|
|
@@ -571,6 +564,7 @@ class ComRegister {
|
|
|
571
564
|
let buffer;
|
|
572
565
|
// 获取动态推送图片
|
|
573
566
|
try {
|
|
567
|
+
// 渲染图片
|
|
574
568
|
const { pic: gimgPic, buffer: gimgBuffer } = await ctx.gimg.generateDynamicImg(items[num]);
|
|
575
569
|
pic = gimgPic;
|
|
576
570
|
buffer = gimgBuffer;
|
|
@@ -612,22 +606,6 @@ class ComRegister {
|
|
|
612
606
|
}
|
|
613
607
|
case 0: timePoint = items[num].modules.module_author.pub_ts;
|
|
614
608
|
}
|
|
615
|
-
// 如果这是遍历的最后一条,将时间点设置为这条动态的发布时间
|
|
616
|
-
/* if (num === 1) timePoint = items[num].modules.module_author.pub_ts
|
|
617
|
-
if (num === 0) {
|
|
618
|
-
timePoint = items[num].modules.module_author.pub_ts
|
|
619
|
-
} */
|
|
620
|
-
// 检查最一条动态是否是置顶动态 (ver 1.0.4 不用考虑置顶动态的问题)
|
|
621
|
-
// 如果是新发布的置顶动态,直接推送即可。如果是旧的置顶动态,则无法进入这个判断
|
|
622
|
-
/* if (num === 0) {
|
|
623
|
-
// 如果是置顶动态,则跳过
|
|
624
|
-
if (items[num].modules.module_tag) {
|
|
625
|
-
// 将上一条动态的发布时间设为时间点
|
|
626
|
-
timePoint = items[num + 1].modules.module_author.pub_ts
|
|
627
|
-
continue
|
|
628
|
-
}
|
|
629
|
-
timePoint = items[num].modules.module_author.pub_ts
|
|
630
|
-
} */
|
|
631
609
|
}
|
|
632
610
|
}
|
|
633
611
|
};
|
|
@@ -652,6 +630,8 @@ class ComRegister {
|
|
|
652
630
|
return bot.sendMessage(guildId, pic);
|
|
653
631
|
// pic不存在,说明使用的是page模式
|
|
654
632
|
await bot.sendMessage(guildId, koishi_1.h.image(buffer, 'image/png'));
|
|
633
|
+
// 成功则跳出循环
|
|
634
|
+
break;
|
|
655
635
|
}
|
|
656
636
|
catch (e) {
|
|
657
637
|
this.logger.error('liveDetect generateLiveImg() 推送卡片发送失败');
|
|
@@ -672,7 +652,10 @@ class ComRegister {
|
|
|
672
652
|
let attempts = 3;
|
|
673
653
|
for (let i = 0; i < attempts; i++) {
|
|
674
654
|
try {
|
|
655
|
+
// 发送请求获取room信息
|
|
675
656
|
content = await ctx.biliAPI.getLiveRoomInfo(roomId);
|
|
657
|
+
// 成功则跳出循环
|
|
658
|
+
break;
|
|
676
659
|
}
|
|
677
660
|
catch (e) {
|
|
678
661
|
this.logger.error('liveDetect getLiveRoomInfo 网络请求失败');
|
|
@@ -701,8 +684,11 @@ class ComRegister {
|
|
|
701
684
|
let attempts = 3;
|
|
702
685
|
for (let i = 0; i < attempts; i++) {
|
|
703
686
|
try {
|
|
687
|
+
// 发送请求获取主播信息
|
|
704
688
|
const { data: userInfo } = await ctx.biliAPI.getMasterInfo(data.uid);
|
|
705
689
|
userData = userInfo;
|
|
690
|
+
// 成功则跳出循环
|
|
691
|
+
break;
|
|
706
692
|
}
|
|
707
693
|
catch (e) {
|
|
708
694
|
this.logger.error('liveDetect getMasterInfo() 本次网络请求失败');
|
|
@@ -750,8 +736,11 @@ class ComRegister {
|
|
|
750
736
|
let attempts = 3;
|
|
751
737
|
for (let i = 0; i < attempts; i++) {
|
|
752
738
|
try {
|
|
739
|
+
// 获取主播信息
|
|
753
740
|
const { data: userInfo } = await ctx.biliAPI.getMasterInfo(data.uid);
|
|
754
741
|
userData = userInfo;
|
|
742
|
+
// 成功则跳出循环
|
|
743
|
+
break;
|
|
755
744
|
}
|
|
756
745
|
catch (e) {
|
|
757
746
|
this.logger.error('liveDetect open getMasterInfo() 网络请求错误');
|
|
@@ -809,7 +798,7 @@ class ComRegister {
|
|
|
809
798
|
session.send(`是否需要订阅${subType}?需要输入 y 不需要输入 n `);
|
|
810
799
|
input = await session.prompt();
|
|
811
800
|
if (!input) {
|
|
812
|
-
await session.send('
|
|
801
|
+
await session.send('输入超时请重新订阅');
|
|
813
802
|
continue;
|
|
814
803
|
}
|
|
815
804
|
switch (input) {
|
|
@@ -906,6 +895,7 @@ class ComRegister {
|
|
|
906
895
|
for (let i = 0; i < attempts; i++) {
|
|
907
896
|
try {
|
|
908
897
|
content = await ctx.biliAPI.getUserInfo(sub.uid);
|
|
898
|
+
// 成功则跳出循环
|
|
909
899
|
break;
|
|
910
900
|
}
|
|
911
901
|
catch (e) {
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -87,6 +87,8 @@
|
|
|
87
87
|
- ver 1.0.9 更新请求客户端header信息。优化了动态推送卡片的页面布局,增加了字体大小。提供用户开放订阅数量限制的选项,提供用户移除推送卡片边框的选项。在控制台页面增加订阅信息提示
|
|
88
88
|
- ver 1.0.10 增加对onebot的支持,添加动态关键字屏蔽功能
|
|
89
89
|
- ver 1.0.11 修复了render渲染模式下,动态重复推送的问题,修复了没有订阅时,控制台空白提示的问题。优化了视频动态缩略图显示不全的问题,优化了部分逻辑。增强容错和增加错误提示
|
|
90
|
+
- ver 1.0.12 提供用户选择动态推送卡片字体增大的选项
|
|
91
|
+
- ver 1.0.13 修复了直播通知卡片连续发三次的bug,修复了多次调用指令 `bili login` 产生的bug
|
|
90
92
|
|
|
91
93
|
## 感谢
|
|
92
94
|
|