koishi-plugin-bilibili-notify 1.2.12-alpha.0 → 1.2.12-alpha.2
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.d.ts +1 -1
- package/lib/biliAPI.js +1 -1
- package/lib/comRegister.js +54 -39
- package/lib/generateImg.d.ts +1 -1
- package/lib/generateImg.js +3 -3
- package/lib/index.d.ts +1 -0
- package/lib/index.js +38 -35
- package/lib/wbi.d.ts +1 -0
- package/lib/wbi.js +4 -1
- package/package.json +1 -1
- package/readme.md +2 -0
package/lib/biliAPI.d.ts
CHANGED
package/lib/biliAPI.js
CHANGED
package/lib/comRegister.js
CHANGED
|
@@ -15,7 +15,7 @@ var LiveType;
|
|
|
15
15
|
LiveType[LiveType["LiveBroadcast"] = 2] = "LiveBroadcast";
|
|
16
16
|
})(LiveType || (LiveType = {}));
|
|
17
17
|
class ComRegister {
|
|
18
|
-
static inject = ['
|
|
18
|
+
static inject = ['ba', 'gi', 'wbi', 'database', 'sm'];
|
|
19
19
|
logger;
|
|
20
20
|
config;
|
|
21
21
|
loginTimer;
|
|
@@ -37,7 +37,13 @@ class ComRegister {
|
|
|
37
37
|
// Chronocat机器人
|
|
38
38
|
chronocatBot;
|
|
39
39
|
constructor(ctx, config) {
|
|
40
|
-
this.logger = ctx.logger('
|
|
40
|
+
this.logger = ctx.logger('cr');
|
|
41
|
+
ctx.on('ready', () => {
|
|
42
|
+
this.logger.info('工作中');
|
|
43
|
+
});
|
|
44
|
+
ctx.on('dispose', () => {
|
|
45
|
+
this.logger.info('已停止工作');
|
|
46
|
+
});
|
|
41
47
|
this.config = config;
|
|
42
48
|
// 拿到各类机器人
|
|
43
49
|
ctx.bots.forEach(bot => {
|
|
@@ -73,8 +79,8 @@ class ComRegister {
|
|
|
73
79
|
.usage('测试指令,用于测试从数据库读取cookies')
|
|
74
80
|
.action(async () => {
|
|
75
81
|
this.logger.info('调用test cookies指令')
|
|
76
|
-
// await ctx.
|
|
77
|
-
console.log(JSON.parse(ctx.
|
|
82
|
+
// await ctx.ba.loadCookiesFromDatabase()
|
|
83
|
+
console.log(JSON.parse(ctx.ba.getCookies()));
|
|
78
84
|
})
|
|
79
85
|
|
|
80
86
|
testCom
|
|
@@ -82,7 +88,7 @@ class ComRegister {
|
|
|
82
88
|
.usage('测试指令,用于测试获取自己信息')
|
|
83
89
|
.example('test.my')
|
|
84
90
|
.action(async () => {
|
|
85
|
-
const content = await ctx.
|
|
91
|
+
const content = await ctx.ba.getMyselfInfo()
|
|
86
92
|
console.log(content);
|
|
87
93
|
})
|
|
88
94
|
|
|
@@ -91,7 +97,7 @@ class ComRegister {
|
|
|
91
97
|
.usage('测试指令,用于测试获取用户信息')
|
|
92
98
|
.example('test.user 用户UID')
|
|
93
99
|
.action(async (_, mid) => {
|
|
94
|
-
const content = await ctx.
|
|
100
|
+
const content = await ctx.ba.getUserInfo(mid)
|
|
95
101
|
console.log(content);
|
|
96
102
|
})
|
|
97
103
|
|
|
@@ -100,7 +106,7 @@ class ComRegister {
|
|
|
100
106
|
.usage('测试时间接口')
|
|
101
107
|
.example('test.time')
|
|
102
108
|
.action(async ({ session }) => {
|
|
103
|
-
session.send(await ctx.
|
|
109
|
+
session.send(await ctx.ba.getTimeNow())
|
|
104
110
|
})
|
|
105
111
|
|
|
106
112
|
testCom
|
|
@@ -111,9 +117,9 @@ class ComRegister {
|
|
|
111
117
|
// logger
|
|
112
118
|
this.logger.info('调用test gimg指令')
|
|
113
119
|
// 获取用户空间动态数据
|
|
114
|
-
const { data } = await ctx.
|
|
120
|
+
const { data } = await ctx.ba.getUserSpaceDynamic(uid)
|
|
115
121
|
// 获取动态推送图片
|
|
116
|
-
const { pic, buffer } = await ctx.
|
|
122
|
+
const { pic, buffer } = await ctx.gi.generateDynamicImg(data.items[index])
|
|
117
123
|
// 如果pic存在,则直接返回pic
|
|
118
124
|
if (pic) return pic
|
|
119
125
|
// pic不存在,说明使用的是page模式
|
|
@@ -141,7 +147,7 @@ class ComRegister {
|
|
|
141
147
|
.usage('获取当前UTC+8 Unix时间戳')
|
|
142
148
|
.example('test utc')
|
|
143
149
|
.action(async ({ session }) => {
|
|
144
|
-
session.send((await ctx.
|
|
150
|
+
session.send((await ctx.ba.getServerUTCTime()).toString())
|
|
145
151
|
})
|
|
146
152
|
|
|
147
153
|
testCom
|
|
@@ -152,7 +158,7 @@ class ComRegister {
|
|
|
152
158
|
// logger
|
|
153
159
|
this.logger.info('调用test gimg指令')
|
|
154
160
|
// 获取主播信息
|
|
155
|
-
const { data } = await ctx.
|
|
161
|
+
const { data } = await ctx.ba.getMasterInfo('686127')
|
|
156
162
|
let resizedImage: Buffer
|
|
157
163
|
try {
|
|
158
164
|
resizedImage = await Jimp.read(data.info.face).then(async image => {
|
|
@@ -186,7 +192,7 @@ class ComRegister {
|
|
|
186
192
|
// 获取二维码
|
|
187
193
|
let content;
|
|
188
194
|
try {
|
|
189
|
-
content = await ctx.
|
|
195
|
+
content = await ctx.ba.getLoginQRCode();
|
|
190
196
|
}
|
|
191
197
|
catch (e) {
|
|
192
198
|
return 'bili login getLoginQRCode() 本次网络请求失败';
|
|
@@ -222,7 +228,7 @@ class ComRegister {
|
|
|
222
228
|
// 获取登录信息
|
|
223
229
|
let loginContent;
|
|
224
230
|
try {
|
|
225
|
-
loginContent = await ctx.
|
|
231
|
+
loginContent = await ctx.ba.getLoginStatus(content.data.qrcode_key);
|
|
226
232
|
}
|
|
227
233
|
catch (e) {
|
|
228
234
|
this.logger.error(e);
|
|
@@ -237,7 +243,7 @@ class ComRegister {
|
|
|
237
243
|
return await session.send('二维码已失效,请重新登录');
|
|
238
244
|
}
|
|
239
245
|
if (loginContent.data.code === 0) { // 登录成功
|
|
240
|
-
const encryptedCookies = ctx.wbi.encrypt(ctx.
|
|
246
|
+
const encryptedCookies = ctx.wbi.encrypt(ctx.ba.getCookies());
|
|
241
247
|
const encryptedRefreshToken = ctx.wbi.encrypt(loginContent.data.refresh_token);
|
|
242
248
|
await ctx.database.upsert('loginBili', [{
|
|
243
249
|
id: 1,
|
|
@@ -249,13 +255,13 @@ class ComRegister {
|
|
|
249
255
|
// 订阅之前的订阅
|
|
250
256
|
await this.getSubFromDatabase(ctx);
|
|
251
257
|
// 清除控制台通知
|
|
252
|
-
ctx.
|
|
258
|
+
ctx.ba.disposeNotifier();
|
|
253
259
|
// 发送成功登录推送
|
|
254
260
|
await session.send('登录成功');
|
|
255
261
|
// bili show
|
|
256
262
|
await session.execute('bili show');
|
|
257
263
|
// 开启cookies刷新检测
|
|
258
|
-
ctx.
|
|
264
|
+
ctx.ba.enableRefreshCookiesDetect();
|
|
259
265
|
return;
|
|
260
266
|
}
|
|
261
267
|
}
|
|
@@ -361,7 +367,7 @@ class ComRegister {
|
|
|
361
367
|
// 获取用户信息
|
|
362
368
|
let content;
|
|
363
369
|
try {
|
|
364
|
-
content = await ctx.
|
|
370
|
+
content = await ctx.ba.getUserInfo(mid);
|
|
365
371
|
}
|
|
366
372
|
catch (e) {
|
|
367
373
|
return 'bili sub getUserInfo() 发生了错误,错误为:' + e.message;
|
|
@@ -497,7 +503,7 @@ class ComRegister {
|
|
|
497
503
|
// 获取用户信息
|
|
498
504
|
let userData;
|
|
499
505
|
try {
|
|
500
|
-
const { data } = await ctx.
|
|
506
|
+
const { data } = await ctx.ba.getMasterInfo(sub.uid);
|
|
501
507
|
userData = data;
|
|
502
508
|
}
|
|
503
509
|
catch (e) {
|
|
@@ -574,7 +580,7 @@ class ComRegister {
|
|
|
574
580
|
return session.send('请输入房间号!');
|
|
575
581
|
let content;
|
|
576
582
|
try {
|
|
577
|
-
content = await ctx.
|
|
583
|
+
content = await ctx.ba.getLiveRoomInfo(roomId);
|
|
578
584
|
}
|
|
579
585
|
catch (e) {
|
|
580
586
|
return 'bili status指令 getLiveRoomInfo() 发生了错误,错误为:' + e.message;
|
|
@@ -582,7 +588,7 @@ class ComRegister {
|
|
|
582
588
|
const { data } = content;
|
|
583
589
|
let userData;
|
|
584
590
|
try {
|
|
585
|
-
const { data: userInfo } = await ctx.
|
|
591
|
+
const { data: userInfo } = await ctx.ba.getMasterInfo(data.uid);
|
|
586
592
|
userData = userInfo;
|
|
587
593
|
}
|
|
588
594
|
catch (e) {
|
|
@@ -598,7 +604,7 @@ class ComRegister {
|
|
|
598
604
|
}
|
|
599
605
|
return;
|
|
600
606
|
}
|
|
601
|
-
const { pic, buffer } = await ctx.
|
|
607
|
+
const { pic, buffer } = await ctx.gi.generateLiveImg(data, userData, data.live_status !== 1 ?
|
|
602
608
|
LiveType.NotLiveBroadcast :
|
|
603
609
|
LiveType.LiveBroadcast);
|
|
604
610
|
// pic 存在,使用的是render模式
|
|
@@ -771,7 +777,7 @@ class ComRegister {
|
|
|
771
777
|
// 第一次订阅判断
|
|
772
778
|
if (firstSubscription) {
|
|
773
779
|
// 设置第一次的时间点
|
|
774
|
-
timePoint = ctx.
|
|
780
|
+
timePoint = ctx.ba.getTimeOfUTC8();
|
|
775
781
|
// 设置第一次为false
|
|
776
782
|
firstSubscription = false;
|
|
777
783
|
return;
|
|
@@ -779,7 +785,7 @@ class ComRegister {
|
|
|
779
785
|
// 获取用户空间动态数据
|
|
780
786
|
let content;
|
|
781
787
|
try {
|
|
782
|
-
content = await ctx.
|
|
788
|
+
content = await ctx.ba.getUserSpaceDynamic(uid);
|
|
783
789
|
}
|
|
784
790
|
catch (e) {
|
|
785
791
|
return this.logger.error('dynamicDetect getUserSpaceDynamic() 发生了错误,错误为:' + e.message);
|
|
@@ -788,23 +794,32 @@ class ComRegister {
|
|
|
788
794
|
if (content.code !== 0) {
|
|
789
795
|
switch (content.code) {
|
|
790
796
|
case -101: { // 账号未登录
|
|
791
|
-
|
|
797
|
+
// 输出日志
|
|
798
|
+
this.logger.error('账号未登录,插件已停止工作,请登录后,输入指令 sys start 启动插件');
|
|
799
|
+
// 发送私聊消息
|
|
800
|
+
await this.sendPrivateMsg(bot, '账号未登录,插件已停止工作,请登录后,输入指令 sys start 启动插件');
|
|
801
|
+
// 停止服务
|
|
802
|
+
await ctx.sm.disposePlugin();
|
|
803
|
+
// 结束循环
|
|
792
804
|
break;
|
|
793
805
|
}
|
|
794
806
|
case -352: { // 风控
|
|
807
|
+
// 输出日志
|
|
808
|
+
this.logger.error('账号被风控,插件已停止工作,请确认风控解除后,输入指令 sys start 启动插件');
|
|
795
809
|
// 发送私聊消息
|
|
796
810
|
await this.sendPrivateMsg(bot, '账号被风控,插件已停止工作,请确认风控解除后,输入指令 sys start 启动插件');
|
|
797
811
|
// 停止服务
|
|
798
812
|
await ctx.sm.disposePlugin();
|
|
799
813
|
// 结束循环
|
|
800
|
-
|
|
814
|
+
break;
|
|
801
815
|
}
|
|
802
816
|
default: { // 未知错误
|
|
817
|
+
// 发送私聊消息
|
|
803
818
|
await this.sendPrivateMsg(bot, '获取动态信息错误,错误码为:' + content.code + ',错误为:' + content.message); // 未知错误
|
|
804
819
|
// 取消订阅
|
|
805
820
|
this.unsubAll(ctx, bot, uid);
|
|
806
821
|
// 结束循环
|
|
807
|
-
|
|
822
|
+
break;
|
|
808
823
|
}
|
|
809
824
|
}
|
|
810
825
|
}
|
|
@@ -841,7 +856,7 @@ class ComRegister {
|
|
|
841
856
|
// 获取动态推送图片
|
|
842
857
|
try {
|
|
843
858
|
// 渲染图片
|
|
844
|
-
const { pic: gimgPic, buffer: gimgBuffer } = await ctx.
|
|
859
|
+
const { pic: gimgPic, buffer: gimgBuffer } = await ctx.gi.generateDynamicImg(items[num]);
|
|
845
860
|
// 赋值
|
|
846
861
|
pic = gimgPic;
|
|
847
862
|
buffer = gimgBuffer;
|
|
@@ -880,7 +895,7 @@ class ComRegister {
|
|
|
880
895
|
else if (buffer) {
|
|
881
896
|
this.logger.info('推送动态中,使用page模式');
|
|
882
897
|
// pic不存在,说明使用的是page模式
|
|
883
|
-
await this.sendMsg(ctx, guildId, bot, (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [koishi_1.h.image(buffer, 'image/png'),
|
|
898
|
+
await this.sendMsg(ctx, guildId, bot, (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [koishi_1.h.image(buffer, 'image/png'), dUrl] }));
|
|
884
899
|
}
|
|
885
900
|
else {
|
|
886
901
|
this.logger.info(items[num].modules.module_author.name + '发布了一条动态,但是推送失败');
|
|
@@ -908,7 +923,7 @@ class ComRegister {
|
|
|
908
923
|
for (let i = 0; i < attempts; i++) {
|
|
909
924
|
try {
|
|
910
925
|
// 获取直播通知卡片
|
|
911
|
-
const { pic: picv, buffer: bufferv } = await ctx.
|
|
926
|
+
const { pic: picv, buffer: bufferv } = await ctx.gi.generateLiveImg(data, uData, liveType);
|
|
912
927
|
// 赋值
|
|
913
928
|
pic = picv;
|
|
914
929
|
buffer = bufferv;
|
|
@@ -925,11 +940,11 @@ class ComRegister {
|
|
|
925
940
|
// 推送直播信息
|
|
926
941
|
// pic 存在,使用的是render模式
|
|
927
942
|
if (pic) {
|
|
928
|
-
let msg = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [atAll && (0, jsx_runtime_1.jsx)("at", { type: "all" }),
|
|
943
|
+
let msg = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [atAll && (0, jsx_runtime_1.jsx)("at", { type: "all" }), liveStartMsg && liveStartMsg] });
|
|
929
944
|
return await this.sendMsg(ctx, guildId, bot, pic + msg);
|
|
930
945
|
}
|
|
931
946
|
// pic不存在,说明使用的是page模式
|
|
932
|
-
await this.sendMsg(ctx, guildId, bot, (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [koishi_1.h.image(buffer, 'image/png'),
|
|
947
|
+
await this.sendMsg(ctx, guildId, bot, (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [koishi_1.h.image(buffer, 'image/png'), atAll && (0, jsx_runtime_1.jsx)("at", { type: "all" }), liveStartMsg && liveStartMsg] }));
|
|
933
948
|
};
|
|
934
949
|
return async () => {
|
|
935
950
|
try {
|
|
@@ -943,7 +958,7 @@ class ComRegister {
|
|
|
943
958
|
for (let i = 0; i < attempts; i++) {
|
|
944
959
|
try {
|
|
945
960
|
// 发送请求获取room信息
|
|
946
|
-
content = await ctx.
|
|
961
|
+
content = await ctx.ba.getLiveRoomInfo(roomId);
|
|
947
962
|
// 成功则跳出循环
|
|
948
963
|
break;
|
|
949
964
|
}
|
|
@@ -964,7 +979,7 @@ class ComRegister {
|
|
|
964
979
|
for (let i = 0; i < attempts; i++) {
|
|
965
980
|
try {
|
|
966
981
|
// 发送请求获取主播信息
|
|
967
|
-
const { data: userInfo } = await ctx.
|
|
982
|
+
const { data: userInfo } = await ctx.ba.getMasterInfo(data.uid);
|
|
968
983
|
userData = userInfo;
|
|
969
984
|
// 成功则跳出循环
|
|
970
985
|
break;
|
|
@@ -1001,7 +1016,7 @@ class ComRegister {
|
|
|
1001
1016
|
// 定义下播通知消息
|
|
1002
1017
|
let liveEndMsg = this.config.customLiveEnd
|
|
1003
1018
|
.replace('-name', uData.info.uname)
|
|
1004
|
-
.replace('-time', await ctx.
|
|
1019
|
+
.replace('-time', await ctx.gi.getTimeDifference(liveTime));
|
|
1005
1020
|
// 获取头像并缩放
|
|
1006
1021
|
let resizedImage;
|
|
1007
1022
|
// Jimp无法处理Webp格式,直接跳过
|
|
@@ -1034,7 +1049,7 @@ class ComRegister {
|
|
|
1034
1049
|
for (let i = 0; i < attempts; i++) {
|
|
1035
1050
|
try {
|
|
1036
1051
|
// 获取主播信息
|
|
1037
|
-
const { data: userInfo } = await ctx.
|
|
1052
|
+
const { data: userInfo } = await ctx.ba.getMasterInfo(data.uid);
|
|
1038
1053
|
userData = userInfo;
|
|
1039
1054
|
// 成功则跳出循环
|
|
1040
1055
|
break;
|
|
@@ -1051,7 +1066,7 @@ class ComRegister {
|
|
|
1051
1066
|
// 定义开播通知语
|
|
1052
1067
|
let liveStartMsg = this.config.customLiveStart
|
|
1053
1068
|
.replace('-name', uData.info.uname)
|
|
1054
|
-
.replace('-time', await ctx.
|
|
1069
|
+
.replace('-time', await ctx.gi.getTimeDifference(liveTime))
|
|
1055
1070
|
.replace('-link', `https://live.bilibili.com/${data.short_id === 0 ? data.room_id : data.short_id}`);
|
|
1056
1071
|
// 判断是否需要@全体成员
|
|
1057
1072
|
if (this.config.liveStartAtAll) {
|
|
@@ -1151,7 +1166,7 @@ class ComRegister {
|
|
|
1151
1166
|
async checkIfLoginInfoIsLoaded(ctx) {
|
|
1152
1167
|
return new Promise(resolve => {
|
|
1153
1168
|
const check = () => {
|
|
1154
|
-
if (!ctx.
|
|
1169
|
+
if (!ctx.ba.getLoginInfoIsLoaded()) {
|
|
1155
1170
|
ctx.setTimeout(check, 500);
|
|
1156
1171
|
}
|
|
1157
1172
|
else {
|
|
@@ -1242,7 +1257,7 @@ class ComRegister {
|
|
|
1242
1257
|
for (let i = 0; i < attempts; i++) {
|
|
1243
1258
|
try {
|
|
1244
1259
|
// 获取用户信息
|
|
1245
|
-
content = await ctx.
|
|
1260
|
+
content = await ctx.ba.getUserInfo(sub.uid);
|
|
1246
1261
|
// 成功则跳出循环
|
|
1247
1262
|
break;
|
|
1248
1263
|
}
|
|
@@ -1408,7 +1423,7 @@ class ComRegister {
|
|
|
1408
1423
|
async checkIfIsLogin(ctx) {
|
|
1409
1424
|
if ((await ctx.database.get('loginBili', 1)).length !== 0) { // 数据库中有数据
|
|
1410
1425
|
// 检查cookie中是否有值
|
|
1411
|
-
if (ctx.
|
|
1426
|
+
if (ctx.ba.getCookies() !== '[]') { // 有值说明已登录
|
|
1412
1427
|
return true;
|
|
1413
1428
|
}
|
|
1414
1429
|
}
|
package/lib/generateImg.d.ts
CHANGED
package/lib/generateImg.js
CHANGED
|
@@ -37,10 +37,10 @@ const ADDITIONAL_TYPE_UP_RCMD = 'ADDITIONAL_TYPE_UP_RCMD'
|
|
|
37
37
|
const ADDITIONAL_TYPE_UGC = 'ADDITIONAL_TYPE_UGC' */
|
|
38
38
|
const ADDITIONAL_TYPE_RESERVE = 'ADDITIONAL_TYPE_RESERVE';
|
|
39
39
|
class GenerateImg extends koishi_1.Service {
|
|
40
|
-
static inject = ['puppeteer', '
|
|
40
|
+
static inject = ['puppeteer', 'ba'];
|
|
41
41
|
giConfig;
|
|
42
42
|
constructor(ctx, config) {
|
|
43
|
-
super(ctx, '
|
|
43
|
+
super(ctx, 'gi');
|
|
44
44
|
this.giConfig = config;
|
|
45
45
|
}
|
|
46
46
|
start() {
|
|
@@ -1341,7 +1341,7 @@ class GenerateImg extends koishi_1.Service {
|
|
|
1341
1341
|
// 获取Unix时间戳(以毫秒为单位)
|
|
1342
1342
|
const unixTime = date.getTime() / 1000;
|
|
1343
1343
|
// 获取当前Unix时间戳
|
|
1344
|
-
const now = this.ctx.
|
|
1344
|
+
const now = this.ctx.ba.getTimeOfUTC8();
|
|
1345
1345
|
// 计算时间差(以秒为单位)
|
|
1346
1346
|
const differenceInSeconds = Math.floor(now - unixTime);
|
|
1347
1347
|
// 获取yyyy:MM:dd HH:mm:ss
|
package/lib/index.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ export declare const Config: Schema<Config>;
|
|
|
35
35
|
declare class ServerManager extends Service {
|
|
36
36
|
servers: ForkScope[];
|
|
37
37
|
renderType: number;
|
|
38
|
+
dynamicLoopTime: number;
|
|
38
39
|
restartCount: number;
|
|
39
40
|
constructor(ctx: Context);
|
|
40
41
|
protected start(): void | Promise<void>;
|
package/lib/index.js
CHANGED
|
@@ -156,6 +156,8 @@ class ServerManager extends koishi_1.Service {
|
|
|
156
156
|
servers = [];
|
|
157
157
|
// 渲染模式
|
|
158
158
|
renderType;
|
|
159
|
+
// 动态循环时间
|
|
160
|
+
dynamicLoopTime;
|
|
159
161
|
// 重启次数
|
|
160
162
|
restartCount = 0;
|
|
161
163
|
constructor(ctx) {
|
|
@@ -197,6 +199,7 @@ class ServerManager extends koishi_1.Service {
|
|
|
197
199
|
});
|
|
198
200
|
}
|
|
199
201
|
start() {
|
|
202
|
+
// 加载配置
|
|
200
203
|
// 根据用户设置的渲染模式设置
|
|
201
204
|
switch (globalConfig.renderType) {
|
|
202
205
|
case 'render':
|
|
@@ -206,6 +209,21 @@ class ServerManager extends koishi_1.Service {
|
|
|
206
209
|
this.renderType = 1;
|
|
207
210
|
break;
|
|
208
211
|
}
|
|
212
|
+
// 转换为具体时间
|
|
213
|
+
switch (globalConfig.dynamicLoopTime) {
|
|
214
|
+
case '1分钟':
|
|
215
|
+
this.dynamicLoopTime = 60;
|
|
216
|
+
break;
|
|
217
|
+
case '2分钟':
|
|
218
|
+
this.dynamicLoopTime = 120;
|
|
219
|
+
break;
|
|
220
|
+
case '3分钟':
|
|
221
|
+
this.dynamicLoopTime = 180;
|
|
222
|
+
break;
|
|
223
|
+
case '5分钟':
|
|
224
|
+
this.dynamicLoopTime = 300;
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
209
227
|
// 注册插件
|
|
210
228
|
this.registerPlugin();
|
|
211
229
|
}
|
|
@@ -215,10 +233,10 @@ class ServerManager extends koishi_1.Service {
|
|
|
215
233
|
return false;
|
|
216
234
|
await new Promise(resolve => {
|
|
217
235
|
// 注册插件
|
|
218
|
-
const
|
|
236
|
+
const ba = this.ctx.plugin(biliAPI_1.default, {
|
|
219
237
|
userAgent: globalConfig.userAgent
|
|
220
238
|
});
|
|
221
|
-
const
|
|
239
|
+
const gi = this.ctx.plugin(generateImg_1.default, {
|
|
222
240
|
renderType: this.renderType,
|
|
223
241
|
filter: globalConfig.filter,
|
|
224
242
|
removeBorder: globalConfig.removeBorder,
|
|
@@ -227,9 +245,24 @@ class ServerManager extends koishi_1.Service {
|
|
|
227
245
|
enableLargeFont: globalConfig.enableLargeFont,
|
|
228
246
|
font: globalConfig.font
|
|
229
247
|
});
|
|
248
|
+
const wbi = this.ctx.plugin(wbi_1.default, { key: globalConfig.key });
|
|
249
|
+
const cr = this.ctx.plugin(comRegister_1.default, {
|
|
250
|
+
master: globalConfig.master,
|
|
251
|
+
unlockSubLimits: globalConfig.unlockSubLimits,
|
|
252
|
+
liveStartAtAll: globalConfig.liveStartAtAll,
|
|
253
|
+
pushTime: globalConfig.pushTime,
|
|
254
|
+
customLiveStart: globalConfig.customLiveStart,
|
|
255
|
+
customLiveEnd: globalConfig.customLiveEnd,
|
|
256
|
+
dynamicCheckNumber: globalConfig.dynamicCheckNumber,
|
|
257
|
+
dynamicLoopTime: this.dynamicLoopTime,
|
|
258
|
+
dynamicUrl: globalConfig.dynamicUrl,
|
|
259
|
+
filter: globalConfig.filter
|
|
260
|
+
});
|
|
230
261
|
// 添加服务
|
|
231
|
-
this.servers.push(
|
|
232
|
-
this.servers.push(
|
|
262
|
+
this.servers.push(ba);
|
|
263
|
+
this.servers.push(gi);
|
|
264
|
+
this.servers.push(wbi);
|
|
265
|
+
this.servers.push(cr);
|
|
233
266
|
// 成功
|
|
234
267
|
resolve('ok');
|
|
235
268
|
});
|
|
@@ -291,40 +324,10 @@ function apply(ctx, config) {
|
|
|
291
324
|
content: '过多的订阅可能会导致IP暂时被封禁!'
|
|
292
325
|
});
|
|
293
326
|
}
|
|
294
|
-
// load config
|
|
295
|
-
// 转换为具体时间
|
|
296
|
-
let dynamicLoopTime;
|
|
297
|
-
switch (config.dynamicLoopTime) {
|
|
298
|
-
case '1分钟':
|
|
299
|
-
dynamicLoopTime = 60;
|
|
300
|
-
break;
|
|
301
|
-
case '2分钟':
|
|
302
|
-
dynamicLoopTime = 120;
|
|
303
|
-
break;
|
|
304
|
-
case '3分钟':
|
|
305
|
-
dynamicLoopTime = 180;
|
|
306
|
-
break;
|
|
307
|
-
case '5分钟':
|
|
308
|
-
dynamicLoopTime = 300;
|
|
309
|
-
break;
|
|
310
|
-
}
|
|
311
327
|
// load database
|
|
312
328
|
ctx.plugin(Database);
|
|
313
|
-
//
|
|
314
|
-
ctx.plugin(wbi_1.default, { key: config.key });
|
|
329
|
+
// Register ServerManager
|
|
315
330
|
ctx.plugin(ServerManager);
|
|
316
|
-
ctx.plugin(comRegister_1.default, {
|
|
317
|
-
master: config.master,
|
|
318
|
-
unlockSubLimits: config.unlockSubLimits,
|
|
319
|
-
liveStartAtAll: config.liveStartAtAll,
|
|
320
|
-
pushTime: config.pushTime,
|
|
321
|
-
customLiveStart: config.customLiveStart,
|
|
322
|
-
customLiveEnd: config.customLiveEnd,
|
|
323
|
-
dynamicCheckNumber: config.dynamicCheckNumber,
|
|
324
|
-
dynamicLoopTime,
|
|
325
|
-
dynamicUrl: config.dynamicUrl,
|
|
326
|
-
filter: config.filter
|
|
327
|
-
});
|
|
328
331
|
// 当用户输入“恶魔兔,启动!”时,执行 help 指令
|
|
329
332
|
ctx.middleware((session, next) => {
|
|
330
333
|
if (session.content === '恶魔兔,启动!') {
|
package/lib/wbi.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ declare class Wbi extends Service {
|
|
|
9
9
|
mixinKeyEncTab: number[];
|
|
10
10
|
constructor(ctx: Context, config: Wbi.Config);
|
|
11
11
|
protected start(): void | Promise<void>;
|
|
12
|
+
protected stop(): void | Promise<void>;
|
|
12
13
|
getMixinKey: (orig: any) => string;
|
|
13
14
|
encWbi(params: any, img_key: any, sub_key: any): string;
|
|
14
15
|
getWbiKeys(): Promise<{
|
package/lib/wbi.js
CHANGED
|
@@ -19,7 +19,10 @@ class Wbi extends koishi_1.Service {
|
|
|
19
19
|
this.wbiConfig = config;
|
|
20
20
|
}
|
|
21
21
|
start() {
|
|
22
|
-
|
|
22
|
+
this.logger.info('工作中');
|
|
23
|
+
}
|
|
24
|
+
stop() {
|
|
25
|
+
this.logger.info('已停止工作');
|
|
23
26
|
}
|
|
24
27
|
// 对 imgKey 和 subKey 进行字符顺序打乱编码
|
|
25
28
|
getMixinKey = (orig) => this.mixinKeyEncTab.map(n => orig[n]).join('').slice(0, 32);
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -152,6 +152,8 @@
|
|
|
152
152
|
- ver 1.2.11-alpha.0 新增自定义UA的设置。动态推送出错时,现在会直接取消订阅该UP主而不是取消订阅动态
|
|
153
153
|
- ver 1.2.11-alpha.1 修复报错 `app TypeError: Cannot read properties of undefined (reading 'toString')`,添加更多日志输出
|
|
154
154
|
- ver 1.2.12-alpha.0 新增 `sys` 类指令,包括子命令:`start`、`stop`、`restart` 分别为插件的启动、停止和重启,需要权限等级5才能使用。现在,账号出现某些问题后,不会再清除订阅信息,而是停止插件,在排除问题后需要使用指令 `sys start` 手动启动插件。修复一个动态推送的bug
|
|
155
|
+
- ver 1.2.12-alpha.1 删除直播推送时的多余空格
|
|
156
|
+
- ver 1.2.12-alpha.2 尝试修复版本 `1.2.12-alpha.0 账号出现某些问题后,不会再清除订阅信息` 仍然会清除订阅信息的bug
|
|
155
157
|
|
|
156
158
|
## 交流群
|
|
157
159
|
|