koishi-plugin-bilibili-notify 1.2.11-alpha.1 → 1.2.12-alpha.0
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 +3 -2
- package/lib/comRegister.js +34 -20
- package/lib/generateImg.js +2 -2
- package/lib/index.d.ts +3 -3
- package/lib/index.js +93 -27
- package/package.json +1 -1
- package/readme.md +7 -0
package/lib/biliAPI.js
CHANGED
|
@@ -40,10 +40,11 @@ class BiliAPI extends koishi_1.Service {
|
|
|
40
40
|
this.createNewClient();
|
|
41
41
|
// 从数据库加载cookies
|
|
42
42
|
this.loadCookiesFromDatabase();
|
|
43
|
-
//
|
|
43
|
+
// 输出日志
|
|
44
|
+
this.logger.info('工作中');
|
|
44
45
|
}
|
|
45
46
|
stop() {
|
|
46
|
-
|
|
47
|
+
this.logger.info('已停止工作');
|
|
47
48
|
}
|
|
48
49
|
async getServerUTCTime() {
|
|
49
50
|
try {
|
package/lib/comRegister.js
CHANGED
|
@@ -715,7 +715,7 @@ class ComRegister {
|
|
|
715
715
|
async sendPrivateMsgAndRebootService(ctx, bot, content) {
|
|
716
716
|
await this.sendPrivateMsg(bot, content);
|
|
717
717
|
// 重启插件
|
|
718
|
-
const flag = ctx.sm.restartPlugin();
|
|
718
|
+
const flag = await ctx.sm.restartPlugin(true /* 非人为重启,需要计数 */);
|
|
719
719
|
// 判断是否重启成功
|
|
720
720
|
if (flag) {
|
|
721
721
|
this.logger.info('重启插件成功');
|
|
@@ -726,7 +726,7 @@ class ComRegister {
|
|
|
726
726
|
// 重启失败,发送消息
|
|
727
727
|
await this.sendPrivateMsg(bot, '已重启插件三次,请检查机器人状态后手动重启');
|
|
728
728
|
// 关闭插件
|
|
729
|
-
ctx.sm.disposePlugin();
|
|
729
|
+
await ctx.sm.disposePlugin();
|
|
730
730
|
}
|
|
731
731
|
}
|
|
732
732
|
async sendMsg(ctx, targets, bot, content) {
|
|
@@ -791,15 +791,37 @@ class ComRegister {
|
|
|
791
791
|
await this.sendPrivateMsg(bot, '账号未登录,请登录后重新订阅动态');
|
|
792
792
|
break;
|
|
793
793
|
}
|
|
794
|
-
|
|
794
|
+
case -352: { // 风控
|
|
795
|
+
// 发送私聊消息
|
|
796
|
+
await this.sendPrivateMsg(bot, '账号被风控,插件已停止工作,请确认风控解除后,输入指令 sys start 启动插件');
|
|
797
|
+
// 停止服务
|
|
798
|
+
await ctx.sm.disposePlugin();
|
|
799
|
+
// 结束循环
|
|
800
|
+
return;
|
|
801
|
+
}
|
|
802
|
+
default: { // 未知错误
|
|
803
|
+
await this.sendPrivateMsg(bot, '获取动态信息错误,错误码为:' + content.code + ',错误为:' + content.message); // 未知错误
|
|
804
|
+
// 取消订阅
|
|
805
|
+
this.unsubAll(ctx, bot, uid);
|
|
806
|
+
// 结束循环
|
|
807
|
+
return;
|
|
808
|
+
}
|
|
795
809
|
}
|
|
796
|
-
// 取消订阅
|
|
797
|
-
this.unsubAll(ctx, bot, uid);
|
|
798
|
-
// 结束循环
|
|
799
|
-
return;
|
|
800
810
|
}
|
|
801
811
|
// 获取数据内容
|
|
802
812
|
const items = content.data.items;
|
|
813
|
+
// 定义方法:更新时间点为最新发布动态的发布时间
|
|
814
|
+
const updatePoint = (num) => {
|
|
815
|
+
switch (num) {
|
|
816
|
+
case 1: {
|
|
817
|
+
if (items[0].modules.module_tag) { // 存在置顶动态
|
|
818
|
+
timePoint = items[num].modules.module_author.pub_ts;
|
|
819
|
+
}
|
|
820
|
+
break;
|
|
821
|
+
}
|
|
822
|
+
case 0: timePoint = items[num].modules.module_author.pub_ts;
|
|
823
|
+
}
|
|
824
|
+
};
|
|
803
825
|
// 发送请求 默认只查看配置文件规定数量的数据
|
|
804
826
|
for (let num = this.config.dynamicCheckNumber - 1; num >= 0; num--) {
|
|
805
827
|
// 没有动态内容则直接跳过
|
|
@@ -829,15 +851,15 @@ class ComRegister {
|
|
|
829
851
|
catch (e) {
|
|
830
852
|
// 直播开播动态,不做处理
|
|
831
853
|
if (e.message === '直播开播动态,不做处理')
|
|
832
|
-
|
|
854
|
+
return updatePoint(num);
|
|
833
855
|
if (e.message === '出现关键词,屏蔽该动态') {
|
|
834
856
|
// 如果需要发送才发送
|
|
835
857
|
this.config.filter.notify && await this.sendMsg(ctx, guildId, bot, `${upName}发布了一条含有屏蔽关键字的动态`);
|
|
836
|
-
|
|
858
|
+
return updatePoint(num);
|
|
837
859
|
}
|
|
838
860
|
if (e.message === '已屏蔽转发动态') {
|
|
839
861
|
this.config.filter.notify && await this.sendMsg(ctx, guildId, bot, `${upName}发布了一条转发动态,已屏蔽`);
|
|
840
|
-
|
|
862
|
+
return updatePoint(num);
|
|
841
863
|
}
|
|
842
864
|
// 未知错误
|
|
843
865
|
if (i === attempts - 1) {
|
|
@@ -863,16 +885,8 @@ class ComRegister {
|
|
|
863
885
|
else {
|
|
864
886
|
this.logger.info(items[num].modules.module_author.name + '发布了一条动态,但是推送失败');
|
|
865
887
|
}
|
|
866
|
-
//
|
|
867
|
-
|
|
868
|
-
case 1: {
|
|
869
|
-
if (items[0].modules.module_tag) { // 存在置顶动态
|
|
870
|
-
timePoint = items[num].modules.module_author.pub_ts;
|
|
871
|
-
}
|
|
872
|
-
break;
|
|
873
|
-
}
|
|
874
|
-
case 0: timePoint = items[num].modules.module_author.pub_ts;
|
|
875
|
-
}
|
|
888
|
+
// 更新时间点
|
|
889
|
+
updatePoint(num);
|
|
876
890
|
}
|
|
877
891
|
}
|
|
878
892
|
};
|
package/lib/generateImg.js
CHANGED
|
@@ -44,10 +44,10 @@ class GenerateImg extends koishi_1.Service {
|
|
|
44
44
|
this.giConfig = config;
|
|
45
45
|
}
|
|
46
46
|
start() {
|
|
47
|
-
|
|
47
|
+
this.logger.info('工作中');
|
|
48
48
|
}
|
|
49
49
|
stop() {
|
|
50
|
-
|
|
50
|
+
this.logger.info('已停止工作');
|
|
51
51
|
}
|
|
52
52
|
async generateLiveImg(data, userData, liveStatus /*0未开播 1刚开播 2已开播 */) {
|
|
53
53
|
const [titleStatus, liveTime, cover] = await this.getLiveStatus(data.live_time, liveStatus);
|
package/lib/index.d.ts
CHANGED
|
@@ -38,9 +38,9 @@ declare class ServerManager extends Service {
|
|
|
38
38
|
restartCount: number;
|
|
39
39
|
constructor(ctx: Context);
|
|
40
40
|
protected start(): void | Promise<void>;
|
|
41
|
-
registerPlugin: () =>
|
|
42
|
-
disposePlugin: () =>
|
|
43
|
-
restartPlugin: () => boolean
|
|
41
|
+
registerPlugin: () => Promise<boolean>;
|
|
42
|
+
disposePlugin: () => Promise<boolean>;
|
|
43
|
+
restartPlugin: (count?: boolean) => Promise<boolean>;
|
|
44
44
|
}
|
|
45
45
|
export declare function apply(ctx: Context, config: Config): void;
|
|
46
46
|
export {};
|
package/lib/index.js
CHANGED
|
@@ -160,6 +160,41 @@ class ServerManager extends koishi_1.Service {
|
|
|
160
160
|
restartCount = 0;
|
|
161
161
|
constructor(ctx) {
|
|
162
162
|
super(ctx, 'sm');
|
|
163
|
+
// 插件运行相关指令
|
|
164
|
+
const sysCom = ctx.command('sys', 'bili-notify插件运行相关指令', { permissions: ['authority:5'] });
|
|
165
|
+
sysCom
|
|
166
|
+
.subcommand('.restart', '重启插件')
|
|
167
|
+
.usage('重启插件')
|
|
168
|
+
.example('sys restart')
|
|
169
|
+
.action(async () => {
|
|
170
|
+
this.logger.info('调用sys restart指令');
|
|
171
|
+
if (await this.restartPlugin()) {
|
|
172
|
+
return '插件重启成功';
|
|
173
|
+
}
|
|
174
|
+
return '插件重启失败';
|
|
175
|
+
});
|
|
176
|
+
sysCom
|
|
177
|
+
.subcommand('.stop', '停止插件')
|
|
178
|
+
.usage('停止插件')
|
|
179
|
+
.example('sys stop')
|
|
180
|
+
.action(async () => {
|
|
181
|
+
this.logger.info('调用sys stop指令');
|
|
182
|
+
if (await this.disposePlugin()) {
|
|
183
|
+
return '插件已停止';
|
|
184
|
+
}
|
|
185
|
+
return '停止插件失败';
|
|
186
|
+
});
|
|
187
|
+
sysCom
|
|
188
|
+
.subcommand('.start', '启动插件')
|
|
189
|
+
.usage('启动插件')
|
|
190
|
+
.example('sys start')
|
|
191
|
+
.action(async () => {
|
|
192
|
+
this.logger.info('调用sys start指令');
|
|
193
|
+
if (await this.registerPlugin()) {
|
|
194
|
+
return '插件启动成功';
|
|
195
|
+
}
|
|
196
|
+
return '插件启动失败';
|
|
197
|
+
});
|
|
163
198
|
}
|
|
164
199
|
start() {
|
|
165
200
|
// 根据用户设置的渲染模式设置
|
|
@@ -174,40 +209,71 @@ class ServerManager extends koishi_1.Service {
|
|
|
174
209
|
// 注册插件
|
|
175
210
|
this.registerPlugin();
|
|
176
211
|
}
|
|
177
|
-
registerPlugin = () => {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
212
|
+
registerPlugin = async () => {
|
|
213
|
+
// 如果已经有服务则返回false
|
|
214
|
+
if (this.servers.length !== 0)
|
|
215
|
+
return false;
|
|
216
|
+
await new Promise(resolve => {
|
|
217
|
+
// 注册插件
|
|
218
|
+
const biliApi = this.ctx.plugin(biliAPI_1.default, {
|
|
219
|
+
userAgent: globalConfig.userAgent
|
|
220
|
+
});
|
|
221
|
+
const generateImg = this.ctx.plugin(generateImg_1.default, {
|
|
222
|
+
renderType: this.renderType,
|
|
223
|
+
filter: globalConfig.filter,
|
|
224
|
+
removeBorder: globalConfig.removeBorder,
|
|
225
|
+
cardColorStart: globalConfig.cardColorStart,
|
|
226
|
+
cardColorEnd: globalConfig.cardColorEnd,
|
|
227
|
+
enableLargeFont: globalConfig.enableLargeFont,
|
|
228
|
+
font: globalConfig.font
|
|
229
|
+
});
|
|
230
|
+
// 添加服务
|
|
231
|
+
this.servers.push(biliApi);
|
|
232
|
+
this.servers.push(generateImg);
|
|
233
|
+
// 成功
|
|
234
|
+
resolve('ok');
|
|
189
235
|
});
|
|
190
|
-
|
|
191
|
-
|
|
236
|
+
// 成功返回true
|
|
237
|
+
return true;
|
|
192
238
|
};
|
|
193
|
-
disposePlugin = () => {
|
|
194
|
-
|
|
195
|
-
|
|
239
|
+
disposePlugin = async () => {
|
|
240
|
+
// 如果没有服务则返回false
|
|
241
|
+
if (this.servers.length === 0)
|
|
242
|
+
return false;
|
|
243
|
+
// 遍历服务
|
|
244
|
+
await new Promise(resolve => {
|
|
245
|
+
this.servers.forEach(fork => {
|
|
246
|
+
fork.dispose();
|
|
247
|
+
});
|
|
248
|
+
// 清空服务
|
|
249
|
+
this.servers = [];
|
|
250
|
+
resolve('ok');
|
|
196
251
|
});
|
|
252
|
+
// 成功返回true
|
|
253
|
+
return true;
|
|
197
254
|
};
|
|
198
|
-
restartPlugin = () => {
|
|
199
|
-
//
|
|
200
|
-
if (this.
|
|
255
|
+
restartPlugin = async (count /* 是否需要计数 */) => {
|
|
256
|
+
// 如果没有服务则返回false
|
|
257
|
+
if (this.servers.length === 0)
|
|
201
258
|
return false;
|
|
202
|
-
//
|
|
203
|
-
|
|
259
|
+
// 如果需要计数
|
|
260
|
+
if (count) {
|
|
261
|
+
// 重启次数大于等于3次
|
|
262
|
+
if (this.restartCount >= 3)
|
|
263
|
+
return false;
|
|
264
|
+
// 重启次数+1
|
|
265
|
+
this.restartCount++;
|
|
266
|
+
}
|
|
204
267
|
// 停用插件
|
|
205
|
-
this.disposePlugin();
|
|
268
|
+
await this.disposePlugin();
|
|
206
269
|
// 隔一秒启动插件
|
|
207
|
-
|
|
208
|
-
this.
|
|
209
|
-
|
|
210
|
-
|
|
270
|
+
await new Promise(resolve => {
|
|
271
|
+
this.ctx.setTimeout(async () => {
|
|
272
|
+
await this.registerPlugin();
|
|
273
|
+
resolve('ok');
|
|
274
|
+
}, 1000);
|
|
275
|
+
});
|
|
276
|
+
// 成功返回true
|
|
211
277
|
return true;
|
|
212
278
|
};
|
|
213
279
|
}
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -67,6 +67,11 @@
|
|
|
67
67
|
|
|
68
68
|
- 使用指令 `bili show`
|
|
69
69
|
|
|
70
|
+
插件的启动、停止和重启
|
|
71
|
+
|
|
72
|
+
- 使用指令 `sys`
|
|
73
|
+
- 子命令:`start`、`stop`、`restart` 分别代表插件的启动,停止和重启
|
|
74
|
+
|
|
70
75
|
## 注意事项
|
|
71
76
|
|
|
72
77
|
1. 此插件依赖于 `database` 和 `puppeteer` 服务,同时受权限控制,需要具备 `authority:3` 及以上的权限才能使用本插件提供的指令,你可以参考下方配置登录插件中的方法得到一个超级管理员账号(具有 `authority:5` 的最高权限)
|
|
@@ -145,6 +150,8 @@
|
|
|
145
150
|
- ver 1.2.9-alpha.0 bug测试版本,请跳过
|
|
146
151
|
- ver 1.2.10 修复插件启动一段时间后一直报错的问题,更新了UA列表,新增了更多日志输出
|
|
147
152
|
- ver 1.2.11-alpha.0 新增自定义UA的设置。动态推送出错时,现在会直接取消订阅该UP主而不是取消订阅动态
|
|
153
|
+
- ver 1.2.11-alpha.1 修复报错 `app TypeError: Cannot read properties of undefined (reading 'toString')`,添加更多日志输出
|
|
154
|
+
- ver 1.2.12-alpha.0 新增 `sys` 类指令,包括子命令:`start`、`stop`、`restart` 分别为插件的启动、停止和重启,需要权限等级5才能使用。现在,账号出现某些问题后,不会再清除订阅信息,而是停止插件,在排除问题后需要使用指令 `sys start` 手动启动插件。修复一个动态推送的bug
|
|
148
155
|
|
|
149
156
|
## 交流群
|
|
150
157
|
|