koishi-plugin-bilibili-notify 2.0.0-alpha.8 → 3.0.0-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.d.ts +17 -0
- package/lib/biliAPI.js +41 -0
- package/lib/blive.d.ts +24 -0
- package/lib/blive.js +81 -0
- package/lib/comRegister.d.ts +63 -23
- package/lib/comRegister.js +745 -414
- package/lib/database.d.ts +0 -1
- package/lib/database.js +0 -1
- package/lib/generateImg.js +3 -3
- package/lib/index.d.ts +17 -2
- package/lib/index.js +34 -12
- package/package.json +2 -1
- package/{README.md → readme.md} +26 -4
package/lib/database.d.ts
CHANGED
package/lib/database.js
CHANGED
package/lib/generateImg.js
CHANGED
|
@@ -176,7 +176,7 @@ class GenerateImg extends koishi_1.Service {
|
|
|
176
176
|
</div>
|
|
177
177
|
${this.giConfig.hideDesc ? '' : `<p class="card-text">${data.description ? data.description : '这个主播很懒,什么都简介都没写'}</p>`}
|
|
178
178
|
<p class="card-link">
|
|
179
|
-
|
|
179
|
+
${liveStatus !== 3 ? `<span>人气:${data.online > 10000 ? `${(data.online / 10000).toFixed(1)}万` : data.online}</span>` : ''}
|
|
180
180
|
<span>分区名称:${data.area_name}</span>
|
|
181
181
|
</p>
|
|
182
182
|
<p class="card-link">
|
|
@@ -1455,8 +1455,8 @@ class GenerateImg extends koishi_1.Service {
|
|
|
1455
1455
|
const seconds = differenceInSeconds % 60;
|
|
1456
1456
|
// 返回格式化的字符串
|
|
1457
1457
|
return days ?
|
|
1458
|
-
`${days} 天 ${hours}小时${minutes.toString().padStart(2, '0')}
|
|
1459
|
-
`${hours}小时${minutes.toString().padStart(2, '0')}
|
|
1458
|
+
`${days} 天 ${hours}小时${minutes.toString().padStart(2, '0')}分${seconds.toString().padStart(2, '0')}秒` :
|
|
1459
|
+
`${hours}小时${minutes.toString().padStart(2, '0')}分${seconds.toString().padStart(2, '0')}秒`;
|
|
1460
1460
|
}
|
|
1461
1461
|
unixTimestampToString(timestamp) {
|
|
1462
1462
|
const date = new Date(timestamp * 1000);
|
package/lib/index.d.ts
CHANGED
|
@@ -15,15 +15,30 @@ export interface Config {
|
|
|
15
15
|
automaticResend: boolean;
|
|
16
16
|
renderType: 'render' | 'page';
|
|
17
17
|
userAgent: string;
|
|
18
|
+
subTitle: {};
|
|
19
|
+
sub: Array<{
|
|
20
|
+
uid: string;
|
|
21
|
+
dynamic: boolean;
|
|
22
|
+
live: boolean;
|
|
23
|
+
target: Array<{
|
|
24
|
+
channelIdArr: Array<{
|
|
25
|
+
channelId: string;
|
|
26
|
+
dynamic: boolean;
|
|
27
|
+
live: boolean;
|
|
28
|
+
liveDanmaku: boolean;
|
|
29
|
+
atAll: boolean;
|
|
30
|
+
}>;
|
|
31
|
+
platform: string;
|
|
32
|
+
}>;
|
|
33
|
+
}>;
|
|
18
34
|
dynamic: {};
|
|
19
35
|
dynamicUrl: boolean;
|
|
20
36
|
dynamicCheckNumber: number;
|
|
21
37
|
dynamicLoopTime: '1分钟' | '2分钟' | '3分钟' | '5分钟' | '10分钟' | '20分钟';
|
|
22
38
|
live: {};
|
|
23
|
-
changeMasterInfoApi: boolean;
|
|
24
|
-
liveStartAtAll: boolean;
|
|
25
39
|
restartPush: boolean;
|
|
26
40
|
pushTime: number;
|
|
41
|
+
danmakuPushTime: number;
|
|
27
42
|
customLiveStart: string;
|
|
28
43
|
customLive: string;
|
|
29
44
|
customLiveEnd: string;
|
package/lib/index.js
CHANGED
|
@@ -47,6 +47,7 @@ const Database = __importStar(require("./database"));
|
|
|
47
47
|
// import Service
|
|
48
48
|
const generateImg_1 = __importDefault(require("./generateImg"));
|
|
49
49
|
const biliAPI_1 = __importDefault(require("./biliAPI"));
|
|
50
|
+
const blive_1 = __importDefault(require("./blive"));
|
|
50
51
|
exports.inject = ['puppeteer', 'database', 'notifier'];
|
|
51
52
|
exports.name = 'bilibili-notify';
|
|
52
53
|
let globalConfig;
|
|
@@ -93,6 +94,22 @@ exports.Config = koishi_1.Schema.object({
|
|
|
93
94
|
userAgent: koishi_1.Schema.string()
|
|
94
95
|
.required()
|
|
95
96
|
.description('设置请求头User-Agen,请求出现-352时可以尝试修改,UA获取方法可参考:https://blog.csdn.net/qq_44503987/article/details/104929111'),
|
|
97
|
+
subTitle: koishi_1.Schema.object({}).description('手动订阅'),
|
|
98
|
+
sub: koishi_1.Schema.array(koishi_1.Schema.object({
|
|
99
|
+
uid: koishi_1.Schema.string().description('订阅用户UID'),
|
|
100
|
+
dynamic: koishi_1.Schema.boolean().description('是否订阅用户动态'),
|
|
101
|
+
live: koishi_1.Schema.boolean().description('是否订阅用户直播'),
|
|
102
|
+
target: koishi_1.Schema.array(koishi_1.Schema.object({
|
|
103
|
+
channelIdArr: koishi_1.Schema.array(koishi_1.Schema.object({
|
|
104
|
+
channelId: koishi_1.Schema.string().description('频道/群组号'),
|
|
105
|
+
dynamic: koishi_1.Schema.boolean().description('该频道/群组是否推送动态信息'),
|
|
106
|
+
live: koishi_1.Schema.boolean().description('该频道/群组是否推送直播通知'),
|
|
107
|
+
liveDanmaku: koishi_1.Schema.boolean().description('该频道/群组是否推送弹幕消息'),
|
|
108
|
+
atAll: koishi_1.Schema.boolean().description('推送开播通知时是否艾特全体成员')
|
|
109
|
+
})).description('频道/群组信息'),
|
|
110
|
+
platform: koishi_1.Schema.string().description('推送平台')
|
|
111
|
+
})).description('订阅用户需要发送的频道/群组信息')
|
|
112
|
+
})).role('table').description('手动输入订阅信息,方便自定义订阅内容,这里的订阅内容不会存入数据库。uid: 订阅用户UID,dynamic: 是否需要订阅动态,live: 是否需要订阅直播'),
|
|
96
113
|
dynamic: koishi_1.Schema.object({}).description('动态推送设置'),
|
|
97
114
|
dynamicUrl: koishi_1.Schema.boolean()
|
|
98
115
|
.default(false)
|
|
@@ -109,12 +126,6 @@ exports.Config = koishi_1.Schema.object({
|
|
|
109
126
|
.default('2分钟')
|
|
110
127
|
.description('设定多久检测一次动态。若需动态的时效性,可以设置为1分钟。若订阅的UP主经常在短时间内连着发多条动态应该将该值提高,否则会出现动态漏推送和晚推送的问题,默认值为2分钟'),
|
|
111
128
|
live: koishi_1.Schema.object({}).description('直播推送设置'),
|
|
112
|
-
changeMasterInfoApi: koishi_1.Schema.boolean()
|
|
113
|
-
.default(false)
|
|
114
|
-
.description('是否切换获取主播信息API,在遇到错误getMasterInfo()时可以尝试切换'),
|
|
115
|
-
liveStartAtAll: koishi_1.Schema.boolean()
|
|
116
|
-
.default(false)
|
|
117
|
-
.description('直播开始时艾特全体成员,默认关闭'),
|
|
118
129
|
restartPush: koishi_1.Schema.boolean()
|
|
119
130
|
.default(true)
|
|
120
131
|
.description('插件重启后,如果订阅的主播正在直播,是否进行一次推送,默认开启'),
|
|
@@ -123,7 +134,13 @@ exports.Config = koishi_1.Schema.object({
|
|
|
123
134
|
.max(12)
|
|
124
135
|
.step(0.5)
|
|
125
136
|
.default(1)
|
|
126
|
-
.description('
|
|
137
|
+
.description('设定间隔多长时间推送一次直播状态,单位为小时,默认为一小时'),
|
|
138
|
+
danmakuPushTime: koishi_1.Schema.number()
|
|
139
|
+
.min(0)
|
|
140
|
+
.max(10)
|
|
141
|
+
.step(0.5)
|
|
142
|
+
.default(0.5)
|
|
143
|
+
.description('设定间隔多长时间推送一次弹幕消息,单位为分钟,默认为半分钟'),
|
|
127
144
|
customLiveStart: koishi_1.Schema.string()
|
|
128
145
|
.default('-name开播啦 -link')
|
|
129
146
|
.description('自定义开播提示语,-name代表UP昵称,-link代表直播间链接(如果使用的是QQ官方机器人,请不要使用)。例如-name开播啦,会发送为xxxUP开播啦'),
|
|
@@ -290,14 +307,14 @@ class ServerManager extends koishi_1.Service {
|
|
|
290
307
|
});
|
|
291
308
|
// CR = ComRegister
|
|
292
309
|
const cr = this.ctx.plugin(comRegister_1.default, {
|
|
310
|
+
sub: globalConfig.sub,
|
|
293
311
|
master: globalConfig.master,
|
|
294
312
|
unlockSubLimits: globalConfig.unlockSubLimits,
|
|
295
313
|
automaticResend: globalConfig.automaticResend,
|
|
296
|
-
changeMasterInfoApi: globalConfig.changeMasterInfoApi,
|
|
297
|
-
liveStartAtAll: globalConfig.liveStartAtAll,
|
|
298
314
|
restartPush: globalConfig.restartPush,
|
|
299
315
|
pushTime: globalConfig.pushTime,
|
|
300
316
|
customLiveStart: globalConfig.customLiveStart,
|
|
317
|
+
customLive: globalConfig.customLive,
|
|
301
318
|
customLiveEnd: globalConfig.customLiveEnd,
|
|
302
319
|
dynamicCheckNumber: globalConfig.dynamicCheckNumber,
|
|
303
320
|
dynamicLoopTime: this.dynamicLoopTime,
|
|
@@ -305,8 +322,13 @@ class ServerManager extends koishi_1.Service {
|
|
|
305
322
|
filter: globalConfig.filter,
|
|
306
323
|
dynamicDebugMode: globalConfig.dynamicDebugMode
|
|
307
324
|
});
|
|
325
|
+
// BL = BLive
|
|
326
|
+
const bl = this.ctx.plugin(blive_1.default, {
|
|
327
|
+
danmakuPushTime: globalConfig.danmakuPushTime
|
|
328
|
+
});
|
|
308
329
|
// 添加服务
|
|
309
330
|
this.servers.push(ba);
|
|
331
|
+
this.servers.push(bl);
|
|
310
332
|
this.servers.push(gi);
|
|
311
333
|
this.servers.push(cr);
|
|
312
334
|
}
|
|
@@ -341,9 +363,9 @@ class ServerManager extends koishi_1.Service {
|
|
|
341
363
|
await this.disposePlugin();
|
|
342
364
|
// 隔一秒启动插件
|
|
343
365
|
return new Promise(resolve => {
|
|
344
|
-
this.ctx.setTimeout(
|
|
366
|
+
this.ctx.setTimeout(() => {
|
|
345
367
|
try {
|
|
346
|
-
|
|
368
|
+
this.registerPlugin();
|
|
347
369
|
}
|
|
348
370
|
catch (e) {
|
|
349
371
|
this.logger.error('重启插件失败', e);
|
|
@@ -359,7 +381,7 @@ function apply(ctx, config) {
|
|
|
359
381
|
globalConfig = config;
|
|
360
382
|
// 设置提示
|
|
361
383
|
ctx.notifier.create({
|
|
362
|
-
content: '从2.0.0-alpha.
|
|
384
|
+
content: '从2.0.0-alpha.9以前版本更新需重新订阅'
|
|
363
385
|
});
|
|
364
386
|
ctx.notifier.create({
|
|
365
387
|
content: '请使用Auth插件创建超级管理员账号,没有权限将无法使用该插件提供的指令。'
|
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": "
|
|
4
|
+
"version": "3.0.0-alpha.0",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"Akokko <admin@akokko.com>"
|
|
7
7
|
],
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"axios": "^1.7.9",
|
|
31
31
|
"axios-cookiejar-support": "^5.0.5",
|
|
32
|
+
"blive-message-listener": "^0.5.0",
|
|
32
33
|
"jsdom": "^24.1.3",
|
|
33
34
|
"luxon": "^3.5.0",
|
|
34
35
|
"md5": "^2.3.0",
|
package/{README.md → readme.md}
RENAMED
|
@@ -53,15 +53,19 @@
|
|
|
53
53
|
|
|
54
54
|
订阅UP主:订阅你想要推送的UP主
|
|
55
55
|
|
|
56
|
-
- 使用指令 `bili sub <uid
|
|
56
|
+
- 使用指令 `bili sub <uid> [...groupId]` 订阅需要订阅的UP主
|
|
57
57
|
- 参数说明:
|
|
58
58
|
- `uid` 为必填参数,为 `up主` 的 `uid`
|
|
59
|
-
-
|
|
59
|
+
- `groupId` 为可选参数,为需要推送的群号/频道号,可输入多个群号
|
|
60
|
+
- 选项说明:`bili sub <uid>` 有四个选项:-l -d -m -a
|
|
60
61
|
- `-l` 为订阅UP主直播间,包括直播开播通知,定时推送直播内容,下播通知
|
|
61
62
|
- `-d` 为订阅UP主动态推送,目前实现推送的动态类型有:普通图文动态,转发动态,直播预约动态
|
|
62
|
-
- `-m`
|
|
63
|
+
- `-m` 为多平台动态推送,格式为:群号/频道号,群号/频道号,群号/频道号.平台名;群号/频道号,群号/频道号.平台号。如果群号/频道号为 `all` 代表推送该平台下的所有群聊或/频道。在群号/频道号后加 `@` 则代表这个群聊/频道需要@全体成员。订阅TG群组时请使用 `bili sub xxx -m "xxxxxxx"` 这样的格式
|
|
64
|
+
- `-a` 为是否艾特全体成员,对 `-m` 参数不生效
|
|
65
|
+
|
|
63
66
|
例如:
|
|
64
|
-
`-m 3247293,324389,89874324.qq;EDBWIUBIU.qqguild;79324792,3247892.onebot`
|
|
67
|
+
`-m 3247293,324389,89874324.qq;EDBWIUBIU.qqguild;79324792,3247892.onebot` 代表推送QQ下3247293,324389,89874324这三个群聊,QQ频道下EDBWIUBIU这个频道,Onebot平台下79324792,3247892这两个群聊
|
|
68
|
+
`-m 3247293,324389@,89874324.qq` 代表推送QQ下3247293,324389,89874324这三个群聊,其中群聊324389需要艾特全体成员
|
|
65
69
|
所有分隔符均为英文符号
|
|
66
70
|
|
|
67
71
|
- 例如:
|
|
@@ -69,6 +73,7 @@
|
|
|
69
73
|
- `bili sub 1194210119 -d` 订阅UID为1194210119的UP主动态推送
|
|
70
74
|
- `bili sub 1194210119 -l` 订阅UID为1194210119的UP主直播间
|
|
71
75
|
- `bili sub 1194210119 -m 3247293,324389,89874324.qq;all.onebot;EHUIWDBUAWD.qqguild` 订阅UID为1194210119的UP主,向群号为3247293,324389,89874324的QQ群,所有onebot平台下的群聊,频道号为EHUIWDBUAWD的QQ频道平台进行推送
|
|
76
|
+
- `bili sub 1194210119 -a` 订阅UID为1194210119的UP主动态推送和直播间并艾特全体成员
|
|
72
77
|
|
|
73
78
|
取消订阅UP主:取消订阅不需要推送的UP主
|
|
74
79
|
|
|
@@ -190,6 +195,23 @@
|
|
|
190
195
|
- ver 2.0.0-alpha.6 修复:直播推送发送失败的bug
|
|
191
196
|
- ver 2.0.0-alpha.7 重构:现已支持同一UP多平台推送
|
|
192
197
|
- ver 2.0.0-alpha.8 新增:重新订阅提示
|
|
198
|
+
- ver 2.0.0-alpha.9 修复:订阅反复提示未加入群组的bug,实际已加入
|
|
199
|
+
- ver 2.0.0-alpha.10 新增:可对每个群聊针对性设置是否艾特全体成员 优化:直播下播通知
|
|
200
|
+
- ver 2.0.0-alpha.11 回档:订阅时可直接接收群号/频道号 修复:直播过程推送消息不成功的bug
|
|
201
|
+
- ver 2.0.0-alpha.12 更改:开启艾特全体成员后,只有在开播时才艾特全体成员
|
|
202
|
+
- ver 2.0.0-alpha.13 修复:无法对TG群组的特殊频道号进行订阅处理;提示 `您未配置对应平台的机器人,不能在该平台进行订阅操作` 仍进行订阅操作
|
|
203
|
+
- ver 2.0.0-alpha.14 修复:订阅TG群组时提示输入无效
|
|
204
|
+
- ver 2.0.0-alpha.15 新增:手动订阅功能 修复:一些潜在的bug
|
|
205
|
+
- ver 2.0.0-alpha.16 优化:手动订阅功能
|
|
206
|
+
- ver 2.0.0-alpha.17 修复:直接订阅当前环境不会推送
|
|
207
|
+
- ver 2.0.0-alpha.18 修复:手动订阅无法推送直播通知;自定义直播中通知语不会发送
|
|
208
|
+
- ver 2.0.0-alpha.19 修复:开播通知后带false;下播通知卡片人气位置显示false
|
|
209
|
+
- ver 2.0.0-alpha.20 修复:直播推送失败 `Error with request send_group_msg`
|
|
210
|
+
- ver 2.0.0-alpha.21 修复:在某些场景下仍会出现 `2.0.0-alpha.19` 和 `2.0.0-alpha.20` 版本已修复的问题
|
|
211
|
+
- ver 2.0.0-alpha.22 移除:不需要的服务
|
|
212
|
+
- ver 2.0.0-alpha.23 优化:将艾特全体成员消息单独发送
|
|
213
|
+
|
|
214
|
+
- ver 3.0.0-alpha.0 重构:直播 新增:直播弹幕推送到群
|
|
193
215
|
|
|
194
216
|
## 交流群
|
|
195
217
|
|