koishi-plugin-bilibili-notify 3.2.5-alpha.9 → 3.2.6-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/index.mjs CHANGED
@@ -445,7 +445,7 @@ var require_lib$3 = __commonJS$1({ "node_modules/@koishijs/plugin-help/lib/index
445
445
  //#endregion
446
446
  //#region src/utils/index.ts
447
447
  function Retry(options = { attempts: 3 }) {
448
- return (target, propertyKey, descriptor) => {
448
+ return (_target, _propertyKey, descriptor) => {
449
449
  const originalMethod = descriptor.value;
450
450
  descriptor.value = async function(...args) {
451
451
  let lastError;
@@ -554,7 +554,7 @@ var ComRegister = class {
554
554
  subManager = [];
555
555
  dynamicTimelineManager = /* @__PURE__ */ new Map();
556
556
  liveStatusManager = /* @__PURE__ */ new Map();
557
- pushRecord = {};
557
+ pushArrMap = /* @__PURE__ */ new Map();
558
558
  loginDBData;
559
559
  privateBot;
560
560
  dynamicJob;
@@ -590,7 +590,7 @@ var ComRegister = class {
590
590
  let content;
591
591
  try {
592
592
  content = await ctx.ba.getLoginQRCode();
593
- } catch (e$1) {
593
+ } catch (_$2) {
594
594
  return "bili login getLoginQRCode() 本次网络请求失败";
595
595
  }
596
596
  if (content.code !== 0) return await session.send("出问题咯,请联系管理员解决");
@@ -799,7 +799,6 @@ var ComRegister = class {
799
799
  });
800
800
  }
801
801
  initPushRecord(subs) {
802
- const pushRecord = {};
803
802
  for (const sub of subs) {
804
803
  const atAllArr = [];
805
804
  const dynamicArr = [];
@@ -811,16 +810,15 @@ var ComRegister = class {
811
810
  if (channel.live) liveArr.push(`${platform.platform}:${channel.channelId}`);
812
811
  if (channel.liveGuardBuy) liveGuardBuyArr.push(`${platform.platform}:${channel.channelId}`);
813
812
  }
814
- pushRecord[sub.uid] = {
813
+ this.pushArrMap.set(sub.uid, {
815
814
  atAllArr,
816
815
  dynamicArr,
817
816
  liveArr,
818
817
  liveGuardBuyArr
819
- };
818
+ });
820
819
  }
821
- this.pushRecord = pushRecord;
822
820
  this.logger.info("初始化推送群组/频道信息:");
823
- this.logger.info(this.pushRecord);
821
+ this.logger.info(this.pushArrMap);
824
822
  }
825
823
  checkAllBotsAreReady() {
826
824
  return !this.ctx.bots.some((bot) => bot.status !== Universal.Status.ONLINE);
@@ -834,33 +832,37 @@ var ComRegister = class {
834
832
  return;
835
833
  }
836
834
  this.logger.info(`本次推送对象:${uid},推送类型:${PushTypeMsg[type]}`);
837
- const record = this.pushRecord[uid];
835
+ const record = this.pushArrMap.get(uid);
838
836
  this.logger.info("本次推送目标:");
839
837
  if (type === PushType.StartBroadcasting && record.atAllArr?.length >= 1) {
840
838
  this.logger.info(record.atAllArr);
839
+ const atAllArr = structuredClone(record.atAllArr);
841
840
  const success = await withRetry(async () => {
842
- return await this.ctx.broadcast(record.atAllArr, /* @__PURE__ */ jsxs("message", { children: [/* @__PURE__ */ jsx("at", { type: "all" }), /* @__PURE__ */ jsx("message", { children: content })] }));
841
+ return await this.ctx.broadcast(atAllArr, /* @__PURE__ */ jsx("message", { children: /* @__PURE__ */ jsx("at", { type: "all" }) }));
843
842
  }, 1);
844
843
  this.logger.info(`成功推送全体成员消息群组/频道:${success}`);
845
844
  }
846
845
  if (type === PushType.Dynamic && record.dynamicArr?.length >= 1) {
847
846
  this.logger.info(record.dynamicArr);
847
+ const dynamicArr = structuredClone(record.dynamicArr);
848
848
  const success = await withRetry(async () => {
849
- return await this.ctx.broadcast(record.dynamicArr, /* @__PURE__ */ jsx("message", { children: content }));
849
+ return await this.ctx.broadcast(dynamicArr, /* @__PURE__ */ jsx("message", { children: content }));
850
850
  }, 1);
851
851
  this.logger.info(`成功推送动态消息群组/频道:${success}`);
852
852
  }
853
853
  if ((type === PushType.Live || type === PushType.StartBroadcasting) && record.liveArr?.length >= 1) {
854
854
  this.logger.info(record.liveArr);
855
+ const liveArr = structuredClone(record.liveArr);
855
856
  const success = await withRetry(async () => {
856
- return await this.ctx.broadcast(record.liveArr, /* @__PURE__ */ jsx("message", { children: content }));
857
+ return await this.ctx.broadcast(liveArr, /* @__PURE__ */ jsx("message", { children: content }));
857
858
  }, 1);
858
859
  this.logger.info(`成功推送直播消息群组/频道:${success}`);
859
860
  }
860
861
  if (type === PushType.LiveGuardBuy && record.liveGuardBuyArr?.length >= 1) {
861
862
  this.logger.info(record.liveGuardBuyArr);
863
+ const liveGuardBuyArr = structuredClone(record.liveGuardBuyArr);
862
864
  const success = await withRetry(async () => {
863
- return await this.ctx.broadcast(record.liveGuardBuyArr, /* @__PURE__ */ jsx("message", { children: content }));
865
+ return await this.ctx.broadcast(liveGuardBuyArr, /* @__PURE__ */ jsx("message", { children: content }));
864
866
  }, 1);
865
867
  this.logger.info(`成功推送上舰消息群组/频道:${success}`);
866
868
  }
@@ -914,15 +916,15 @@ var ComRegister = class {
914
916
  }, 1).catch(async (e$1) => {
915
917
  if (e$1.message === "直播开播动态,不做处理") return;
916
918
  if (e$1.message === "出现关键词,屏蔽该动态") {
917
- if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, `${name$3}发布了一条含有屏蔽关键字的动态`, PushType.Dynamic);
919
+ if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, /* @__PURE__ */ jsxs("message", { children: [name$3, "发布了一条含有屏蔽关键字的动态"] }), PushType.Dynamic);
918
920
  return;
919
921
  }
920
922
  if (e$1.message === "已屏蔽转发动态") {
921
- if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, `${name$3}转发了一条动态,已屏蔽`, PushType.Dynamic);
923
+ if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, /* @__PURE__ */ jsxs("message", { children: [name$3, "转发了一条动态,已屏蔽"] }), PushType.Dynamic);
922
924
  return;
923
925
  }
924
926
  if (e$1.message === "已屏蔽专栏动态") {
925
- if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, `${name$3}投稿了一条专栏,已屏蔽`, PushType.Dynamic);
927
+ if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, /* @__PURE__ */ jsxs("message", { children: [name$3, "投稿了一条专栏,已屏蔽"] }), PushType.Dynamic);
926
928
  return;
927
929
  }
928
930
  this.logger.error(`dynamicDetect generateDynamicImg() 推送卡片发送失败,原因:${e$1.message}`);
@@ -936,7 +938,7 @@ var ComRegister = class {
936
938
  } else dUrl = `${name$3}发布了新视频:https:${item.modules.module_dynamic.major.archive.jump_url}`;
937
939
  else dUrl = `${name$3}发布了一条动态:https://t.bilibili.com/${item.id_str}`;
938
940
  this.logger.info("推送动态中...");
939
- await this.broadcastToTargets(sub.uid, /* @__PURE__ */ jsxs(Fragment, { children: [h.image(buffer, "image/jpeg"), dUrl] }), PushType.Dynamic);
941
+ await this.broadcastToTargets(sub.uid, /* @__PURE__ */ jsxs("message", { children: [h.image(buffer, "image/jpeg"), dUrl] }), PushType.Dynamic);
940
942
  if (this.config.pushImgsInDynamic) {
941
943
  if (item.type === "DYNAMIC_TYPE_DRAW") {
942
944
  const pics = item.modules?.module_dynamic?.major?.opus?.pics;
@@ -1019,15 +1021,15 @@ var ComRegister = class {
1019
1021
  }, 1).catch(async (e$1) => {
1020
1022
  if (e$1.message === "直播开播动态,不做处理") return;
1021
1023
  if (e$1.message === "出现关键词,屏蔽该动态") {
1022
- if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, `${name$3}发布了一条含有屏蔽关键字的动态`, PushType.Dynamic);
1024
+ if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, /* @__PURE__ */ jsxs("message", { children: [name$3, "发布了一条含有屏蔽关键字的动态"] }), PushType.Dynamic);
1023
1025
  return;
1024
1026
  }
1025
1027
  if (e$1.message === "已屏蔽转发动态") {
1026
- if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, `${name$3}转发了一条动态,已屏蔽`, PushType.Dynamic);
1028
+ if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, /* @__PURE__ */ jsxs("message", { children: [name$3, "转发了一条动态,已屏蔽"] }), PushType.Dynamic);
1027
1029
  return;
1028
1030
  }
1029
1031
  if (e$1.message === "已屏蔽专栏动态") {
1030
- if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, `${name$3}投稿了一条专栏,已屏蔽`, PushType.Dynamic);
1032
+ if (this.config.filter.notify) await this.broadcastToTargets(sub.uid, /* @__PURE__ */ jsxs("message", { children: [name$3, "投稿了一条专栏,已屏蔽"] }), PushType.Dynamic);
1031
1033
  return;
1032
1034
  }
1033
1035
  this.logger.error(`dynamicDetect generateDynamicImg() 推送卡片发送失败,原因:${e$1.message}`);
@@ -1046,7 +1048,7 @@ var ComRegister = class {
1046
1048
  this.logger.info("动态链接生成成功!");
1047
1049
  }
1048
1050
  this.logger.info("推送动态中...");
1049
- await this.broadcastToTargets(sub.uid, /* @__PURE__ */ jsxs(Fragment, { children: [h.image(buffer, "image/jpeg"), dUrl] }), PushType.Dynamic);
1051
+ await this.broadcastToTargets(sub.uid, /* @__PURE__ */ jsxs("message", { children: [h.image(buffer, "image/jpeg"), dUrl] }), PushType.Dynamic);
1050
1052
  if (this.config.pushImgsInDynamic) {
1051
1053
  this.logger.info("需要发送动态中的图片,开始发送...");
1052
1054
  if (item.type === "DYNAMIC_TYPE_DRAW") {
@@ -1118,7 +1120,7 @@ var ComRegister = class {
1118
1120
  this.logger.error(`liveDetect generateLiveImg() 推送卡片生成失败,原因:${e$1.message}`);
1119
1121
  });
1120
1122
  if (!buffer) return await this.sendPrivateMsgAndStopService();
1121
- const msg = /* @__PURE__ */ jsxs(Fragment, { children: [h.image(buffer, "image/jpeg"), liveNotifyMsg || ""] });
1123
+ const msg = /* @__PURE__ */ jsxs("message", { children: [h.image(buffer, "image/jpeg"), liveNotifyMsg || ""] });
1122
1124
  return await this.broadcastToTargets(uid, msg, liveType === LiveType.StartBroadcasting ? PushType.StartBroadcasting : PushType.Live);
1123
1125
  }
1124
1126
  async liveDetectWithListener(roomId, uid, cardStyle) {
@@ -1183,7 +1185,15 @@ var ComRegister = class {
1183
1185
  watchedNum = body.text_small;
1184
1186
  },
1185
1187
  onGuardBuy: ({ body }) => {
1186
- const content = `[${masterInfo.username}的直播间]「${body.user.uname}」加入了大航海(${body.gift_name})`;
1188
+ const content = /* @__PURE__ */ jsxs("message", { children: [
1189
+ "【",
1190
+ masterInfo.username,
1191
+ "的直播间】",
1192
+ body.user.uname,
1193
+ "加入了大航海(",
1194
+ body.gift_name,
1195
+ ")"
1196
+ ] });
1187
1197
  this.broadcastToTargets(uid, content, PushType.LiveGuardBuy);
1188
1198
  },
1189
1199
  onLiveStart: async () => {
@@ -1471,37 +1481,37 @@ var ComRegister = class {
1471
1481
  msg: "账号被封停,无法进行订阅操作"
1472
1482
  };
1473
1483
  },
1474
- [22002]: () => {
1484
+ 22002: () => {
1475
1485
  return {
1476
1486
  code: subUserData.code,
1477
1487
  msg: "因对方隐私设置,无法进行订阅操作"
1478
1488
  };
1479
1489
  },
1480
- [22003]: () => {
1490
+ 22003: () => {
1481
1491
  return {
1482
1492
  code: subUserData.code,
1483
1493
  msg: "你已将对方拉黑,无法进行订阅操作"
1484
1494
  };
1485
1495
  },
1486
- [22013]: () => {
1496
+ 22013: () => {
1487
1497
  return {
1488
1498
  code: subUserData.code,
1489
1499
  msg: "账号已注销,无法进行订阅操作"
1490
1500
  };
1491
1501
  },
1492
- [40061]: () => {
1502
+ 40061: () => {
1493
1503
  return {
1494
1504
  code: subUserData.code,
1495
1505
  msg: "账号不存在,请检查uid输入是否正确或用户是否存在"
1496
1506
  };
1497
1507
  },
1498
- [22001]: () => {
1508
+ 22001: () => {
1499
1509
  return {
1500
1510
  code: 0,
1501
1511
  msg: "订阅对象为自己,无需添加到分组"
1502
1512
  };
1503
1513
  },
1504
- [22014]: async () => {
1514
+ 22014: async () => {
1505
1515
  const copyUserToGroupData = await this.ctx.ba.copyUserToGroup(mid, this.loginDBData.dynamic_group_id);
1506
1516
  if (copyUserToGroupData.code !== 0) return {
1507
1517
  code: copyUserToGroupData.code,
@@ -1512,7 +1522,7 @@ var ComRegister = class {
1512
1522
  msg: "订阅对象添加成功"
1513
1523
  };
1514
1524
  },
1515
- [0]: async () => {
1525
+ 0: async () => {
1516
1526
  const copyUserToGroupData = await this.ctx.ba.copyUserToGroup(mid, this.loginDBData.dynamic_group_id);
1517
1527
  if (copyUserToGroupData.code !== 0) return {
1518
1528
  code: copyUserToGroupData.code,
@@ -1586,7 +1596,7 @@ var ComRegister = class {
1586
1596
  }
1587
1597
  }
1588
1598
  enableDynamicDetect() {
1589
- this.dynamicJob = new CronJob("*/2 * * * *", this.config.dynamicDebugMode ? this.debug_dynamicDetect() : this.dynamicDetect());
1599
+ this.dynamicJob = new CronJob(this.config.dynamicCron, this.config.dynamicDebugMode ? this.debug_dynamicDetect() : this.dynamicDetect());
1590
1600
  this.logger.info("动态监测已开启");
1591
1601
  this.dynamicJob.start();
1592
1602
  }
@@ -1642,6 +1652,7 @@ var ComRegister = class {
1642
1652
  customLive: Schema.string(),
1643
1653
  customLiveEnd: Schema.string().required(),
1644
1654
  dynamicUrl: Schema.boolean().required(),
1655
+ dynamicCron: Schema.string().required(),
1645
1656
  dynamicVideoUrlToBV: Schema.boolean().required(),
1646
1657
  filter: Schema.object({
1647
1658
  enable: Schema.boolean(),
@@ -58058,7 +58069,7 @@ var require_helpers$1 = __commonJS$1({ "node_modules/socks/build/common/helpers.
58058
58069
  }
58059
58070
  function ipv4ToInt32(ip) {
58060
58071
  const address = new ip_address_1$1.Address4(ip);
58061
- return address.toArray().reduce((acc, part) => (acc << 8) + part, 0);
58072
+ return address.toArray().reduce((acc, part) => (acc << 8) + part, 0) >>> 0;
58062
58073
  }
58063
58074
  exports.ipv4ToInt32 = ipv4ToInt32;
58064
58075
  function int32ToIpv4(int32) {
@@ -80278,6 +80289,7 @@ var require_once = __commonJS$1({ "node_modules/once/once.js"(exports, module) {
80278
80289
  var require_end_of_stream = __commonJS$1({ "node_modules/end-of-stream/index.js"(exports, module) {
80279
80290
  var once$1 = require_once();
80280
80291
  var noop$5 = function() {};
80292
+ var qnt = global.Bare ? queueMicrotask : process.nextTick.bind(process);
80281
80293
  var isRequest$1 = function(stream$3) {
80282
80294
  return stream$3.setHeader && typeof stream$3.abort === "function";
80283
80295
  };
@@ -80311,7 +80323,7 @@ var require_end_of_stream = __commonJS$1({ "node_modules/end-of-stream/index.js"
80311
80323
  callback.call(stream$3, err);
80312
80324
  };
80313
80325
  var onclose = function() {
80314
- process.nextTick(onclosenexttick);
80326
+ qnt(onclosenexttick);
80315
80327
  };
80316
80328
  var onclosenexttick = function() {
80317
80329
  if (cancelled) return;
@@ -80363,7 +80375,7 @@ var require_pump = __commonJS$1({ "node_modules/pump/index.js"(exports, module)
80363
80375
  fs$7 = __require("fs");
80364
80376
  } catch (e$1) {}
80365
80377
  var noop$4 = function() {};
80366
- var ancient = /^v?\.0/.test(process.version);
80378
+ var ancient = typeof process === "undefined" ? false : /^v?\.0/.test(process.version);
80367
80379
  var isFn = function(fn) {
80368
80380
  return typeof fn === "function";
80369
80381
  };
@@ -83945,7 +83957,7 @@ var require_tar_fs = __commonJS$1({ "node_modules/tar-fs/index.js"(exports) {
83945
83957
  const pump = require_pump();
83946
83958
  const fs$3 = __require("fs");
83947
83959
  const path$3 = __require("path");
83948
- const win32$1 = (global.Bare?.platform || process.platform) === "win32";
83960
+ const win32$1 = (global.Bare ? global.Bare.platform : process.platform) === "win32";
83949
83961
  exports.pack = function pack(cwd, opts) {
83950
83962
  if (!cwd) cwd = ".";
83951
83963
  if (!opts) opts = {};
@@ -84031,10 +84043,10 @@ var require_tar_fs = __commonJS$1({ "node_modules/tar-fs/index.js"(exports) {
84031
84043
  return list.length ? list[list.length - 1] : null;
84032
84044
  }
84033
84045
  function processGetuid() {
84034
- return process.getuid ? process.getuid() : -1;
84046
+ return !global.Bare && process.getuid ? process.getuid() : -1;
84035
84047
  }
84036
84048
  function processUmask() {
84037
- return process.umask ? process.umask() : 0;
84049
+ return !global.Bare && process.umask ? process.umask() : 0;
84038
84050
  }
84039
84051
  exports.extract = function extract(cwd, opts) {
84040
84052
  if (!cwd) cwd = ".";
@@ -94638,7 +94650,7 @@ var BiliAPI = class extends Service {
94638
94650
  cookies,
94639
94651
  refresh_token: decryptedRefreshToken
94640
94652
  };
94641
- } catch (e$1) {
94653
+ } catch (_$2) {
94642
94654
  this.loginNotifier = this.ctx.notifier.create({
94643
94655
  type: "warning",
94644
94656
  content: "数据库被篡改,请重新登录"
@@ -94727,7 +94739,7 @@ var BiliAPI = class extends Service {
94727
94739
  try {
94728
94740
  const { data: data$1 } = await this.getCookieInfo(refreshToken);
94729
94741
  if (!data$1.refresh) return;
94730
- } catch (e$1) {
94742
+ } catch (_$2) {
94731
94743
  if (times$1 >= 1) this.ctx.setTimeout(() => {
94732
94744
  this.checkIfTokenNeedRefresh(refreshToken, csrf, times$1 - 1);
94733
94745
  }, 3e3);
@@ -95033,6 +95045,7 @@ var ServerManager = class extends Service {
95033
95045
  customLive: globalConfig.customLive,
95034
95046
  customLiveEnd: globalConfig.customLiveEnd,
95035
95047
  dynamicUrl: globalConfig.dynamicUrl,
95048
+ dynamicCron: globalConfig.dynamicCron,
95036
95049
  dynamicVideoUrlToBV: globalConfig.dynamicVideoUrlToBV,
95037
95050
  filter: globalConfig.filter,
95038
95051
  dynamicDebugMode: globalConfig.dynamicDebugMode
@@ -95130,6 +95143,7 @@ const Config = Schema.object({
95130
95143
  }).collapse()).collapse().description("输入订阅信息,自定义订阅内容; uid: 订阅用户UID,dynamic: 是否需要订阅动态,live: 是否需要订阅直播"),
95131
95144
  dynamic: Schema.object({}).description("动态推送设置"),
95132
95145
  dynamicUrl: Schema.boolean().default(false).description("发送动态时是否同时发送链接。注意:如果使用的是QQ官方机器人不能开启此项!"),
95146
+ dynamicCron: Schema.string().default("*/2 * * * *").description("动态监测时间,请填入cron表达式,请勿填入过短时间"),
95133
95147
  dynamicVideoUrlToBV: Schema.boolean().default(false).description("如果推送的动态是视频动态,且开启了发送链接选项,开启此选项则会将链接转换为BV号以便其他用途"),
95134
95148
  pushImgsInDynamic: Schema.boolean().default(false).description("是否推送动态中的图片,默认不开启。开启后会单独推送动态中的图片,该功能容易导致QQ风控"),
95135
95149
  live: Schema.object({}).description("直播推送设置"),
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": "3.2.5-alpha.9",
4
+ "version": "3.2.6-alpha.0",
5
5
  "contributors": [
6
6
  "Akokko <admin@akokko.com>"
7
7
  ],
@@ -37,7 +37,7 @@
37
37
  "dependencies": {
38
38
  "@akokko/blive-message-listener": "^0.5.1",
39
39
  "@satorijs/element": "^3.1.8",
40
- "axios": "^1.9.0",
40
+ "axios": "^1.10.0",
41
41
  "axios-cookiejar-support": "^6.0.2",
42
42
  "cacheable-lookup": "^7.0.0",
43
43
  "cron": "^4.3.1",
@@ -48,9 +48,9 @@
48
48
  "tough-cookie": "^5.1.2"
49
49
  },
50
50
  "devDependencies": {
51
- "@biomejs/biome": "1.9.4",
51
+ "@biomejs/biome": "^2.0.0",
52
52
  "@koishijs/cache": "^2.1.0",
53
- "@koishijs/client": "^5.30.8",
53
+ "@koishijs/client": "^5.30.9",
54
54
  "@koishijs/plugin-help": "^2.4.5",
55
55
  "@koishijs/plugin-hmr": "^1.2.9",
56
56
  "@koishijs/plugin-notifier": "^1.2.1",
@@ -60,18 +60,12 @@
60
60
  "@types/md5": "^2.3.5",
61
61
  "@types/qrcode": "^1.5.5",
62
62
  "@types/tough-cookie": "^4.0.5",
63
- "esbuild": "^0.25.5",
64
- "esbuild-register": "^3.6.0",
65
63
  "globals": "^16.2.0",
66
64
  "koishi": "^4.18.8",
67
65
  "koishi-plugin-puppeteer": "^3.9.0",
68
- "tsdown": "^0.12.7",
69
- "tsx": "^4.19.4",
70
- "typescript": "5.8.3",
71
- "yakumo": "^1.0.0",
72
- "yakumo-esbuild": "^1.0.0",
73
- "yakumo-tsc": "^1.0.0",
74
- "yml-register": "^1.2.5"
66
+ "tsdown": "^0.12.8",
67
+ "tsx": "^4.20.3",
68
+ "typescript": "5.8.3"
75
69
  },
76
70
  "engines": {
77
71
  "node": ">= 18.0.0"
@@ -87,5 +81,8 @@
87
81
  "description": {
88
82
  "zh": "Bilibili动态推送,直播通知插件。具体使用方法请参考readme.md"
89
83
  }
84
+ },
85
+ "publishConfig": {
86
+ "access": "public"
90
87
  }
91
88
  }