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.
@@ -4,6 +4,7 @@ declare class ComRegister {
4
4
  static inject: string[];
5
5
  logger: Logger;
6
6
  config: ComRegister.Config;
7
+ loginTimer: Function;
7
8
  num: number;
8
9
  subNotifier: Notifier;
9
10
  subManager: {
@@ -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
- let dispose;
155
+ // 检查之前是否存在登录定时器
156
+ this.loginTimer && this.loginTimer();
156
157
  // 发起登录请求检查登录状态
157
- dispose = ctx.setInterval(async () => {
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
- dispose();
168
- return await session.send('登录失败!请联系管理员解决!');
168
+ this.loginTimer();
169
+ return await session.send('登录失败请联系管理员解决');
169
170
  }
170
171
  if (loginContent.data.code === 86038) {
171
- dispose();
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
- dispose();
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-bilibili-notify",
3
3
  "description": "Koishi bilibili notify plugin",
4
- "version": "1.0.12",
4
+ "version": "1.0.13",
5
5
  "contributors": [
6
6
  "Akokko <admin@akokko.com>"
7
7
  ],
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