llonebot-dist 7.12.1 → 7.12.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/llbot.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { createRequire } from "node:module";
2
2
  import * as path$4 from "node:path";
3
3
  import path, { dirname } from "node:path";
4
- import fsPromise, { access, copyFile, mkdir, readFile, stat, unlink, writeFile } from "node:fs/promises";
5
- import fs, { createReadStream, existsSync, statSync } from "fs";
4
+ import fs, { access, copyFile, mkdir, readFile, stat, unlink, writeFile } from "node:fs/promises";
5
+ import fs$1, { createReadStream, existsSync, statSync } from "fs";
6
6
  import { Readable } from "stream";
7
- import * as fs$5 from "node:fs";
8
- import fs$1, { appendFile, appendFileSync, createReadStream as createReadStream$1, existsSync as existsSync$1, mkdirSync, promises, stat as stat$1, watch } from "node:fs";
7
+ import * as fs$6 from "node:fs";
8
+ import fs$2, { appendFile, appendFileSync, createReadStream as createReadStream$1, existsSync as existsSync$1, mkdirSync, promises, stat as stat$1, watch } from "node:fs";
9
9
  import os from "node:os";
10
10
  import { Binary, Time, camelize, clone, deduplicate, deepEqual, defineProperty, difference, filterKeys, hyphenate, is, isNonNullable, isNullable, isPlainObject, makeArray, mapValues, noop, omit, pick, remove, valueMap } from "cosmokit";
11
11
  import { Exporter, Factory } from "reggol";
@@ -21,7 +21,7 @@ import { createServer } from "http";
21
21
  import { Http2ServerRequest, constants as constants$1 } from "http2";
22
22
  import crypto$2 from "crypto";
23
23
  import { deflateSync, gunzipSync, gzipSync, inflateSync } from "node:zlib";
24
- import fsPromise$1, { stat as stat$2, unlink as unlink$1 } from "fs/promises";
24
+ import fsPromise, { stat as stat$2, unlink as unlink$1 } from "fs/promises";
25
25
  import http, { STATUS_CODES, request } from "node:http";
26
26
  import { inspect, isDeepStrictEqual } from "node:util";
27
27
  import { Transform } from "node:stream";
@@ -3964,7 +3964,7 @@ var require_utils$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
3964
3964
  //#endregion
3965
3965
  //#region node_modules/qrcode/lib/renderer/png.js
3966
3966
  var require_png = /* @__PURE__ */ __commonJSMin(((exports) => {
3967
- var fs$10 = __require("fs");
3967
+ var fs$11 = __require("fs");
3968
3968
  var PNG = require_png$1().PNG;
3969
3969
  var Utils = require_utils$1();
3970
3970
  exports.render = function render(qrData, options) {
@@ -4016,7 +4016,7 @@ var require_png = /* @__PURE__ */ __commonJSMin(((exports) => {
4016
4016
  called = true;
4017
4017
  cb.apply(null, args);
4018
4018
  };
4019
- const stream = fs$10.createWriteStream(path);
4019
+ const stream = fs$11.createWriteStream(path);
4020
4020
  stream.on("error", done);
4021
4021
  stream.on("close", done);
4022
4022
  exports.renderToFileStream(stream, qrData, options);
@@ -6614,7 +6614,7 @@ async function logSummaryMessage(ctx, message) {
6614
6614
  var require_windows = /* @__PURE__ */ __commonJSMin(((exports, module) => {
6615
6615
  module.exports = isexe;
6616
6616
  isexe.sync = sync;
6617
- var fs$9 = __require("fs");
6617
+ var fs$10 = __require("fs");
6618
6618
  function checkPathExt(path, options) {
6619
6619
  var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT;
6620
6620
  if (!pathext) return true;
@@ -6631,12 +6631,12 @@ var require_windows = /* @__PURE__ */ __commonJSMin(((exports, module) => {
6631
6631
  return checkPathExt(path, options);
6632
6632
  }
6633
6633
  function isexe(path, options, cb) {
6634
- fs$9.stat(path, function(er, stat) {
6634
+ fs$10.stat(path, function(er, stat) {
6635
6635
  cb(er, er ? false : checkStat(stat, path, options));
6636
6636
  });
6637
6637
  }
6638
6638
  function sync(path, options) {
6639
- return checkStat(fs$9.statSync(path), path, options);
6639
+ return checkStat(fs$10.statSync(path), path, options);
6640
6640
  }
6641
6641
  }));
6642
6642
  //#endregion
@@ -6644,14 +6644,14 @@ var require_windows = /* @__PURE__ */ __commonJSMin(((exports, module) => {
6644
6644
  var require_mode = /* @__PURE__ */ __commonJSMin(((exports, module) => {
6645
6645
  module.exports = isexe;
6646
6646
  isexe.sync = sync;
6647
- var fs$8 = __require("fs");
6647
+ var fs$9 = __require("fs");
6648
6648
  function isexe(path, options, cb) {
6649
- fs$8.stat(path, function(er, stat) {
6649
+ fs$9.stat(path, function(er, stat) {
6650
6650
  cb(er, er ? false : checkStat(stat, options));
6651
6651
  });
6652
6652
  }
6653
6653
  function sync(path, options) {
6654
- return checkStat(fs$8.statSync(path), options);
6654
+ return checkStat(fs$9.statSync(path), options);
6655
6655
  }
6656
6656
  function checkStat(stat, options) {
6657
6657
  return stat.isFile() && checkMode(stat, options);
@@ -9061,7 +9061,7 @@ var require_processor = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9061
9061
  //#endregion
9062
9062
  //#region node_modules/fluent-ffmpeg/lib/capabilities.js
9063
9063
  var require_capabilities = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9064
- var fs$7 = __require("fs");
9064
+ var fs$8 = __require("fs");
9065
9065
  var path$7 = __require("path");
9066
9066
  var async = require_async();
9067
9067
  var utils = require_utils();
@@ -9137,7 +9137,7 @@ var require_capabilities = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9137
9137
  proto._getFfmpegPath = function(callback) {
9138
9138
  if ("ffmpegPath" in cache) return callback(null, cache.ffmpegPath);
9139
9139
  async.waterfall([function(cb) {
9140
- if (process.env.FFMPEG_PATH) fs$7.exists(process.env.FFMPEG_PATH, function(exists) {
9140
+ if (process.env.FFMPEG_PATH) fs$8.exists(process.env.FFMPEG_PATH, function(exists) {
9141
9141
  if (exists) cb(null, process.env.FFMPEG_PATH);
9142
9142
  else cb(null, "");
9143
9143
  });
@@ -9168,7 +9168,7 @@ var require_capabilities = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9168
9168
  if ("ffprobePath" in cache) return callback(null, cache.ffprobePath);
9169
9169
  async.waterfall([
9170
9170
  function(cb) {
9171
- if (process.env.FFPROBE_PATH) fs$7.exists(process.env.FFPROBE_PATH, function(exists) {
9171
+ if (process.env.FFPROBE_PATH) fs$8.exists(process.env.FFPROBE_PATH, function(exists) {
9172
9172
  cb(null, exists ? process.env.FFPROBE_PATH : "");
9173
9173
  });
9174
9174
  else cb(null, "");
@@ -9186,7 +9186,7 @@ var require_capabilities = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9186
9186
  else if (ffmpeg.length) {
9187
9187
  var name = utils.isWindows ? "ffprobe.exe" : "ffprobe";
9188
9188
  var ffprobe = path$7.join(path$7.dirname(ffmpeg), name);
9189
- fs$7.exists(ffprobe, function(exists) {
9189
+ fs$8.exists(ffprobe, function(exists) {
9190
9190
  cb(null, exists ? ffprobe : "");
9191
9191
  });
9192
9192
  } else cb(null, "");
@@ -9211,14 +9211,14 @@ var require_capabilities = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9211
9211
  if ("flvtoolPath" in cache) return callback(null, cache.flvtoolPath);
9212
9212
  async.waterfall([
9213
9213
  function(cb) {
9214
- if (process.env.FLVMETA_PATH) fs$7.exists(process.env.FLVMETA_PATH, function(exists) {
9214
+ if (process.env.FLVMETA_PATH) fs$8.exists(process.env.FLVMETA_PATH, function(exists) {
9215
9215
  cb(null, exists ? process.env.FLVMETA_PATH : "");
9216
9216
  });
9217
9217
  else cb(null, "");
9218
9218
  },
9219
9219
  function(flvtool, cb) {
9220
9220
  if (flvtool.length) return cb(null, flvtool);
9221
- if (process.env.FLVTOOL2_PATH) fs$7.exists(process.env.FLVTOOL2_PATH, function(exists) {
9221
+ if (process.env.FLVTOOL2_PATH) fs$8.exists(process.env.FLVTOOL2_PATH, function(exists) {
9222
9222
  cb(null, exists ? process.env.FLVTOOL2_PATH : "");
9223
9223
  });
9224
9224
  else cb(null, "");
@@ -9723,7 +9723,7 @@ var require_ffprobe = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9723
9723
  //#endregion
9724
9724
  //#region node_modules/fluent-ffmpeg/lib/recipes.js
9725
9725
  var require_recipes = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9726
- var fs$6 = __require("fs");
9726
+ var fs$7 = __require("fs");
9727
9727
  var path$6 = __require("path");
9728
9728
  var PassThrough$4 = __require("stream").PassThrough;
9729
9729
  var async = require_async();
@@ -9929,8 +9929,8 @@ var require_recipes = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9929
9929
  next(null, filenames);
9930
9930
  },
9931
9931
  function createDirectory(filenames, next) {
9932
- fs$6.exists(config.folder, function(exists) {
9933
- if (!exists) fs$6.mkdir(config.folder, function(err) {
9932
+ fs$7.exists(config.folder, function(exists) {
9933
+ if (!exists) fs$7.mkdir(config.folder, function(err) {
9934
9934
  if (err) next(err);
9935
9935
  else next(null, filenames);
9936
9936
  });
@@ -10178,7 +10178,7 @@ function setFFMpegPath(ffmpegPath) {
10178
10178
  path.join(import.meta.dirname, "ffmpeg.exe"),
10179
10179
  process.env["FFMPEG_PATH"] || ""
10180
10180
  ];
10181
- for (const p of paths) if (fs$1.existsSync(p)) {
10181
+ for (const p of paths) if (fs$2.existsSync(p)) {
10182
10182
  import_fluent_ffmpeg.default.setFfmpegPath(p);
10183
10183
  console.log("set ffmpeg successfully", p);
10184
10184
  break;
@@ -11292,7 +11292,7 @@ var OB11HeartbeatEvent = class extends OB11BaseMetaEvent {
11292
11292
  };
11293
11293
  //#endregion
11294
11294
  //#region src/version.ts
11295
- var version$2 = "7.12.1";
11295
+ var version$2 = "7.12.2";
11296
11296
  //#endregion
11297
11297
  //#region node_modules/sift/es5m/index.js
11298
11298
  /******************************************************************************
@@ -12123,7 +12123,7 @@ var OB11WebSocket = class {
12123
12123
  } catch (e) {
12124
12124
  this.ctx.logger.error("发送生命周期失败", e);
12125
12125
  }
12126
- const disposeHeartBeat = this.ctx.setInterval(() => {
12126
+ const disposeHeartBeat = this.ctx.interval(() => {
12127
12127
  const event = new OB11HeartbeatEvent(selfInfo.online, true, this.config.heartInterval);
12128
12128
  if (!matchEventFilter(this.config.filter, event)) return;
12129
12129
  this.reply(socket, event);
@@ -12245,7 +12245,7 @@ var OB11WebSocketReverse = class {
12245
12245
  this.wsClient.on("ping", () => {
12246
12246
  this.wsClient?.pong();
12247
12247
  });
12248
- const disposeHeartBeat = this.ctx.setInterval(() => {
12248
+ const disposeHeartBeat = this.ctx.interval(() => {
12249
12249
  if (this.wsClient) {
12250
12250
  const event = new OB11HeartbeatEvent(selfInfo.online, true, this.config.heartInterval);
12251
12251
  if (!matchEventFilter(this.config.filter, event)) return;
@@ -12255,7 +12255,7 @@ var OB11WebSocketReverse = class {
12255
12255
  this.wsClient.on("close", (code) => {
12256
12256
  disposeHeartBeat();
12257
12257
  this.ctx.logger.info(`The websocket connection: ${this.config.url} closed, code ${code}${this.activated ? ", trying reconnecting..." : ""}`);
12258
- if (this.activated) this.ctx.setTimeout(() => this.tryConnect(), 3e3);
12258
+ if (this.activated) this.ctx.timeout(() => this.tryConnect(), 3e3);
12259
12259
  });
12260
12260
  }
12261
12261
  };
@@ -16951,7 +16951,7 @@ var processQueue = async () => {
16951
16951
  const promises = queue.splice(0, concurrency).map(async ({ filePath, resolve, reject }) => {
16952
16952
  let handle;
16953
16953
  try {
16954
- handle = await fs$5.promises.open(path$4.resolve(filePath), "r");
16954
+ handle = await fs$6.promises.open(path$4.resolve(filePath), "r");
16955
16955
  } catch (err) {
16956
16956
  return reject(err);
16957
16957
  }
@@ -16998,7 +16998,7 @@ function checkUriType(uri) {
16998
16998
  if (uri.startsWith("data:")) return { type: FileUriType.DataURL };
16999
16999
  if (uri.startsWith("http://") || uri.startsWith("https://")) return { type: FileUriType.RemoteURL };
17000
17000
  if (uri.startsWith("file://")) return { type: FileUriType.FileURL };
17001
- if (fs$1.existsSync(uri)) return { type: FileUriType.Path };
17001
+ if (fs$2.existsSync(uri)) return { type: FileUriType.Path };
17002
17002
  return { type: FileUriType.Unknown };
17003
17003
  }
17004
17004
  async function fetchFile(url, headersInit) {
@@ -17028,7 +17028,7 @@ async function uri2local(ctx, uri, needExt) {
17028
17028
  const { type } = checkUriType(uri);
17029
17029
  if (type === FileUriType.FileURL) {
17030
17030
  const filePath = fileURLToPath(uri);
17031
- if (!fs$1.existsSync(filePath)) return {
17031
+ if (!fs$2.existsSync(filePath)) return {
17032
17032
  success: false,
17033
17033
  errMsg: "路径不存在",
17034
17034
  fileName: "",
@@ -17054,12 +17054,12 @@ async function uri2local(ctx, uri, needExt) {
17054
17054
  const res = await fetchFile(uri);
17055
17055
  let fileName = randomUUID();
17056
17056
  let filePath = path.join(TEMP_DIR, fileName);
17057
- await fsPromise.writeFile(filePath, res.data);
17057
+ await fs.writeFile(filePath, res.data);
17058
17058
  if (needExt) {
17059
17059
  const ext = (await ctx.ntFileApi.getFileType(filePath)).ext;
17060
17060
  fileName += `.${ext}`;
17061
17061
  const newPath = `${filePath}.${ext}`;
17062
- await fsPromise.rename(filePath, newPath);
17062
+ await fs.rename(filePath, newPath);
17063
17063
  filePath = newPath;
17064
17064
  }
17065
17065
  return {
@@ -17082,11 +17082,11 @@ async function uri2local(ctx, uri, needExt) {
17082
17082
  let filename = randomUUID();
17083
17083
  let filePath = path.join(TEMP_DIR, filename);
17084
17084
  const base64 = uri.replace(/^base64:\/\//, "");
17085
- await fsPromise.writeFile(filePath, base64, "base64");
17085
+ await fs.writeFile(filePath, base64, "base64");
17086
17086
  if (needExt) {
17087
17087
  const ext = (await ctx.ntFileApi.getFileType(filePath)).ext;
17088
17088
  filename += `.${ext}`;
17089
- await fsPromise.rename(filePath, `${filePath}.${ext}`);
17089
+ await fs.rename(filePath, `${filePath}.${ext}`);
17090
17090
  filePath = `${filePath}.${ext}`;
17091
17091
  }
17092
17092
  return {
@@ -17103,11 +17103,11 @@ async function uri2local(ctx, uri, needExt) {
17103
17103
  let filename = randomUUID();
17104
17104
  const [, _type, base64] = capture;
17105
17105
  let filePath = path.join(TEMP_DIR, filename);
17106
- await fsPromise.writeFile(filePath, base64, "base64");
17106
+ await fs.writeFile(filePath, base64, "base64");
17107
17107
  if (needExt) {
17108
17108
  const ext = (await ctx.ntFileApi.getFileType(filePath)).ext;
17109
17109
  filename += `.${ext}`;
17110
- await fsPromise.rename(filePath, `${filePath}.${ext}`);
17110
+ await fs.rename(filePath, `${filePath}.${ext}`);
17111
17111
  filePath = `${filePath}.${ext}`;
17112
17112
  }
17113
17113
  return {
@@ -17165,13 +17165,13 @@ async function getImageSize(path) {
17165
17165
  }
17166
17166
  async function getMd5HexFromFile(filePath) {
17167
17167
  const hash = createHash("md5");
17168
- const stream = fs$1.createReadStream(filePath);
17168
+ const stream = fs$2.createReadStream(filePath);
17169
17169
  for await (const chunk of stream) hash.update(chunk);
17170
17170
  return hash.digest("hex");
17171
17171
  }
17172
17172
  async function getSha1HexFromFile(filePath) {
17173
17173
  const hash = createHash("sha1");
17174
- const stream = fs$1.createReadStream(filePath);
17174
+ const stream = fs$2.createReadStream(filePath);
17175
17175
  for await (const chunk of stream) hash.update(chunk);
17176
17176
  return hash.digest("hex");
17177
17177
  }
@@ -17180,13 +17180,13 @@ function getMd5BufferFromBuffer(buf) {
17180
17180
  }
17181
17181
  async function getMd5BufferFromFile(filePath) {
17182
17182
  const hash = createHash("md5");
17183
- const stream = fs$1.createReadStream(filePath);
17183
+ const stream = fs$2.createReadStream(filePath);
17184
17184
  for await (const chunk of stream) hash.update(chunk);
17185
17185
  return hash.digest();
17186
17186
  }
17187
17187
  async function getSha1BufferFromFile(filePath) {
17188
17188
  const hash = createHash("sha1");
17189
- const stream = fs$1.createReadStream(filePath);
17189
+ const stream = fs$2.createReadStream(filePath);
17190
17190
  for await (const chunk of stream) hash.update(chunk);
17191
17191
  return hash.digest();
17192
17192
  }
@@ -17422,7 +17422,7 @@ async function calculateSha1StreamBytes(filePath) {
17422
17422
  let bytesRead = 0;
17423
17423
  let nextBlockBoundary = blockSize;
17424
17424
  const byteArrayList = [];
17425
- const readable = fs$1.createReadStream(filePath);
17425
+ const readable = fs$2.createReadStream(filePath);
17426
17426
  for await (const chunk of readable) {
17427
17427
  let buf;
17428
17428
  if (tail.length > 0) {
@@ -17447,7 +17447,7 @@ async function calculateSha1StreamBytes(filePath) {
17447
17447
  }
17448
17448
  async function readAndHash10M(filePath) {
17449
17449
  const maxSize = 10002432;
17450
- const fd = await fsPromise.open(filePath, "r");
17450
+ const fd = await fs.open(filePath, "r");
17451
17451
  const buffer = Buffer.allocUnsafe(maxSize);
17452
17452
  const { bytesRead } = await fd.read(buffer, 0, maxSize, 0);
17453
17453
  await fd.close();
@@ -17489,13 +17489,13 @@ var TriSha1 = class {
17489
17489
  };
17490
17490
  async function calculateTriSha1(filePath, fileSize) {
17491
17491
  const hash = new TriSha1(fileSize);
17492
- const stream = fs$1.createReadStream(filePath);
17492
+ const stream = fs$2.createReadStream(filePath);
17493
17493
  for await (const chunk of stream) hash.update(chunk);
17494
17494
  return hash.finalize();
17495
17495
  }
17496
17496
  var defaultVideoThumb = Buffer.from("/9j/4AAQSkZJRgABAQAAAQABAAD//gAXR2VuZXJhdGVkIGJ5IFNuaXBhc3Rl/9sAhAAKBwcIBwYKCAgICwoKCw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBBMTQ5Oz4+PiUuRElDPEg3PT47AQoLCw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAF/APADAREAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDiAayNxwagBwNAC5oAM0xBmgBM0ANJoAjY0AQsaBkTGgCM0DEpAFAC0AFMBaACgAoEJTASgQlACUwCgQ4UAOFADhQA4UAOFADxQIkBqDQUGgBwagBQaBC5pgGaAELUAMLUARs1AETGgBhNAxhoASkAUALQIKYxaBBQAUwEoAQ0CEoASmAUAOoEKKAHCgBwoAeKAHigQ7NZmoZpgLmgBd1Ahd1ABupgNLUAMLUAMY0AMJoAYaAENACUCCgAoAWgAoAWgBKYCUAJQISgApgLQAooEOFACigB4oAeKBDxQAVmaiZpgGaAFzQAbqAE3UAIWpgNJoAYTQIaaAEoAQ0CEoASgBaACgBaACmAUAJQAlAgoAKYC0AKKBCigB4FADgKBDwKAHigBuazNRM0DEzTAM0AJmgAzQAhNAhpNACGmA2gQlACUCEoAKACgBaAFpgFACUAJQAUCCmAUALQIcBQA4CgB4FADgKBDhQA4UAMzWZqNzTGJQAZoATNABmgBKAEoEIaYCUCEoASgQlABQAtABQAtMBKACgAoEFABimAYoEKBQA4CgB4FADwKBDgKAFFADhQBCazNhKAEpgFACUAFACUAFAhDTAbQISgAoEJQAUALQAtMAoAKADFABigQYoAMUALimIUCgBwFAh4FADgKAHUALQAtAENZmwlACUwEoAKAEoAKACgQlMBpoEJQAUCCgBcUAFABTAXFAC4oAMUAGKBBigAxQIKYCigQ8UAOFADhQAtAC0ALQBDWZqJQMSgBKYBQAlABQISgBKYCGgQlAC0CCgBcUAFABTAUCkA7FMAxQAYoEJQAUCCmAooEOFADxQA4UAFAC0ALQBDWZqJQAlACUxhQAlABQIKAEoASmISgBcUCCgBaACgBcUAKBQAuKYC0CEoAQ0AJQISmAooEPFADhQA4UALQAtAC0AQ1maiUAFACUAJTAKAEoAKAEoAMUxBigAxQIWgAoAKAFAoAWgBaYBQIQ0ANNACUCCmIUUAOFADxQA4UALQAtABQBFWZqFACUAFACYpgFACUAFACUAFAgxTEFABQAUALQAooAWgAoAKYDTQIaaAEpiCgQ4UAOFAh4oGOFAC0ALSAKYEdZmglABQAUDDFACUwEoASgAoAKBBQIKYBQAUALQAtAC0AJQAhpgNJoENJoATNMQCgQ8UCHigB4oAWgYtABQAUAMrM0CgAoAKADFACUxiUAJQAlAgoAKYgoAKACgYtAC0AFAhDTAQmgBhNAhpNACZpiFBoEPFAEi0CHigB1ABQAUDEoAbWZoFABQAtABTAQ0ANNAxDQAlAhaAEpiCgAoGFAC0AFABmgBCaYhpNADCaBDSaBBmgABpiJFNAEimgB4NADqAFzQAlACE0AJWZoFAC0AFAC0wEIoAaaAG0AJQAUCCgApjCgAoAKADNABmgBpNMQ0mgBpNAhhNAgzQAoNADwaAHqaAJAaBDgaYC5oATNACZoAWszQKACgBaBDqYCGgBpoAYaBiUCCgBKYBQMKACgAoAM0AITQIaTQA0mmA0mgQ3NAhKAHCgBwNADwaAHg0AOBpiFzQAZoATNAD6zNAoAKAFoEOpgBoAaaAGGmAw0AJmgAzQMM0AGaADNABmgBM0AITQIaTQAhNMQw0AJQIKAFFADhQA4GgBwNADs0xC5oAM0CDNAEtZmoUCCgBaAHUwCgBppgRtQAw0ANzQAZoAM0AGaADNABmgBKAEoAQ0ANNMQhoEJQAlMBaQDgaAFBoAcDTAdmgQuaADNAgzQBPWZqFAgoAWgBaYC0CGmmBG1AyM0ANJoATNACZoAXNABmgAzQAUAJQAhoAQ0xDTQISmAUALQAUgHA0AKDTAdmgQuaBBQAtAFiszQKACgBaAFFMAoEIaYEbUDI2oAYaAEoASgAzQAuaACgAoAKAENMQ00AJTEFAhKACgAoAXNACg0AOBoAWgQtAC0AWazNAoAKACgBaYBQIQ0AMNMYw0AMIoAbQAlMAoAKACgAzSAKYhKAENACUxBQIKACgBKACgBaAHCgQ4UALQAUAWqzNAoAKACgApgFACGgQ00xjTQAwigBCKAG4pgJQAlABQAUCCgBKACgBKYgoEFABQISgAoAWgBRQA4UALQAUCLdZmoUAFABQAlMAoASgBDQA00wENACYoATFMBpFADSKAEoEJQAUAFABQAlMQtAgoASgQUAJQAUAKKAHCgBaBBQBbrM1CgAoAKACmAUAJQAlADaYBQAlACYpgIRQA0igBpFAhtABQAUAFMAoEFABQIKAEoASgQUALQAooAWgQUAW81mbC0CCgApgFACUAIaAEpgJQAUAFABQAhFMBpFADSKAGkUCExQAYoAMUAGKADFMQYoAMUCExSATFABQIKYBQAtABQIt5qDYM0ALmgQtIApgIaAENADaACmAlAC0ALQAUwGkUANIoAaRQAmKBBigAxQAYoAMUAGKBBigBMUAJigQmKAExTAKBC0AFAFnNQaig0AKDQAtAgoASgBDQAlMBKACgAFADhQAtMBCKAGkUAIRQAmKADFABigQmKADFACYoAXFABigQmKAExQAmKBCYpgJigAoAnzUGgZoAcDQAuaBC0AJQAhoASmAlABQAtADhQAtMAoATFACEUAJigAxQAYoATFAhMUAFABQAuKADFABigBpWgBCKBCYpgJigB+ag0DNADgaBDgaAFzQITNACUAJTAKACgBRQAopgOoAWgBKAEoAKACgAoASgBpoEJQAooAWgBaBhigBMUCEIoAQigBMUAJSLCgBQaBDgaQC5oEFACUwCgBKACmAtADhQA4UALQAUAJQAUAJQAUAJQAhoENoAWgBRQAooGLQAUAGKAGkUAIRQIZSKEoGKKBDhQAUCCgAoAKBBQAUwFoGKKAHCgBaACgAoASgAoASgBCaAEoEJmgAoAUGgBQaAHZoGFABQAUANoAjpDEoAWgBaAFoEFACUALQAUCCmAUAOFAxRQAtAC0AJQAUAJQAmaBDSaAEzQAmaYBmgBQaAHA0gFzQAuaBhmgAzQAlAEdIYUALQAtAgoAKAEoEFAC0AFMAoAUUDFFAC0ALQAUAJQAhoENNACE0wEoATNABmgBc0ALmgBc0gDNAC5oATNABmgBKRQlACigB1AgoASgQlABTAWgBKACgBaBi0ALQAZoAM0AFACGgQ00wENACUAJQAUCFzQMM0ALmgAzQAZoAM0AGaQC0igoAUUALQIWgBDQISmAUAFACUAFABQAuaBi5oAM0AGaBBmgBKAEpgIaAG0AJQAUCFoAM0DDNAC5oATNABmgAzQBJUlBQAooAWgQtACGmIaaACgAoASgBKACgBc0DCgQUAGaADNABTASgBDQAlACUAFAgoAKBhQAUAFABQAlAE1SUFAxRQIWgQtMBDQIQ0AJQAlAhKBiUAFABmgBc0AGaADNABTAKACgBKAEoASgQlABQAUAFAC0AFACUAFAE1SaBQAUCHCgQtMBKBCUAJQISgBDQA00DEzQAuaADNMBc0AGaADNABQAUAJQAlABQISgAoAKACgBaACgBKAEoAnqTQSgBRQIcKBC0xCUAJQISgBKAENADDQAmaYwzQAuaADNAC0AFABQAUAFAhKACgBKACgAoAWgAoELQAlAxKAJqk0EoAWgQooELTEFADaBCUABoENNMY00ANNAwzQAZoAXNAC0AFAC0CFoASgAoASgBKACgAoAWgQtABQAUANNAyWpNAoAKBCimIWgQUCEoASmIQ0ANNADTQMaaAEoGLmgAzQAtADhQIWgBaACgQhoASgYlACUALQIWgBaACgBKAENAyWpNBKYBQIcKBC0CEoEJTAKBCUANNADDQMQ0ANoGFAC5oAUGgBwNAhRQIWgBaAENACGgBtAwoAKAFzQIXNABmgAoAQ0DJKRoJQAtAhRQSLQIKYCUCCgBDQA00AMNAxpoGNoAM0AGaAFBoAcDQIcKBDqACgBDQAhoAQ0DEoAKADNAC5oEGaBhmgAoAkpGgUCCgQooELQIKYhKACgBKAGmgBpoGMNAxDQAlAwzQIUUAOFAhwoAcKBC0AJQAhoGNNACUAFABQAZoAXNABQAUAS0ixKACgQoNAhaYgoEFACUABoAaaAGmgYw0DENAxtABQAooEOFADhQIcKAFoASgBDQAhoGJQAUAFACUALQIKBi0CJDSLEoATNAhc0CHZpiCgQUAJQIKBjTQAhoGNNAxpoATFABigBQKAHCgBwoAWgAoAKACgBKAEoASgAoASgBaAAUAOoEONIoaTQAZoAUGmIUGgQtAgzQISgAoAQ0DGmgYlAxKACgAxQAtACigBRQAtAxaACgAoATFABigBCKAG0CEoAWgBRTAUUAf//Z", "base64");
17497
17497
  async function getVideoInfo(filePath) {
17498
- const size = fs$1.statSync(filePath).size;
17498
+ const size = fs$2.statSync(filePath).size;
17499
17499
  return new Promise((resolve, reject) => {
17500
17500
  (0, import_fluent_ffmpeg.default)(filePath).ffprobe((err, metadata) => {
17501
17501
  if (err) reject(err);
@@ -17572,7 +17572,7 @@ function convert(ctx, input, options, outputPath) {
17572
17572
  });
17573
17573
  }
17574
17574
  async function encodeSilk(ctx, filePath) {
17575
- const file = await fsPromise.readFile(filePath);
17575
+ const file = await fs.readFile(filePath);
17576
17576
  if (!isSilk(file)) {
17577
17577
  ctx.logger.info(`语音文件${filePath}需要转换成silk`);
17578
17578
  let result;
@@ -17591,7 +17591,7 @@ async function encodeSilk(ctx, filePath) {
17591
17591
  "-f s16le"
17592
17592
  ] }), 24e3);
17593
17593
  const pttPath = path.join(TEMP_DIR, randomUUID());
17594
- await fsPromise.writeFile(pttPath, result.data);
17594
+ await fs.writeFile(pttPath, result.data);
17595
17595
  ctx.logger.info(`语音文件${filePath}转换成功!`, pttPath, `时长:`, result.duration);
17596
17596
  return {
17597
17597
  converted: true,
@@ -17614,11 +17614,11 @@ async function encodeSilk(ctx, filePath) {
17614
17614
  }
17615
17615
  }
17616
17616
  async function decodeSilk(ctx, inputFilePath, outFormat) {
17617
- const { data } = await decode(await fsPromise.readFile(inputFilePath), 24e3);
17617
+ const { data } = await decode(await fs.readFile(inputFilePath), 24e3);
17618
17618
  const tmpPath = path.join(TEMP_DIR, path.basename(inputFilePath));
17619
17619
  const outFilePath = tmpPath + `.${outFormat}`;
17620
17620
  const pcmFilePath = tmpPath + ".pcm";
17621
- await fsPromise.writeFile(pcmFilePath, data);
17621
+ await fs.writeFile(pcmFilePath, data);
17622
17622
  return convert(ctx, pcmFilePath, { input: [
17623
17623
  "-f s16le",
17624
17624
  "-ar 24000",
@@ -20839,8 +20839,9 @@ var OB11Http = class {
20839
20839
  return new Promise((resolve) => {
20840
20840
  if (this.server) {
20841
20841
  this.ctx.logger.info("OneBot V11 HTTP Server closing...");
20842
- this.server.closeAllConnections();
20843
- this.server.close((err) => {
20842
+ const server = this.server;
20843
+ server.closeAllConnections();
20844
+ server.close((err) => {
20844
20845
  if (err) this.ctx.logger.error(`OneBot V11 HTTP Server closing ${err}`);
20845
20846
  else this.ctx.logger.info("OneBot V11 HTTP Server closed");
20846
20847
  this.server = void 0;
@@ -20925,7 +20926,7 @@ var OB11HttpPost = class {
20925
20926
  }
20926
20927
  start() {
20927
20928
  this.activated = this.config.enable;
20928
- if (this.config.enableHeart && !this.disposeInterval) this.disposeInterval = this.ctx.setInterval(() => {
20929
+ if (this.config.enableHeart && !this.disposeInterval) this.disposeInterval = this.ctx.interval(() => {
20929
20930
  this.emitEvent(new OB11HeartbeatEvent(selfInfo.online, true, this.config.heartInterval));
20930
20931
  }, this.config.heartInterval);
20931
20932
  }
@@ -24236,17 +24237,17 @@ var DownloadFile = class extends BaseAction {
24236
24237
  const isRandomName = !payload.name;
24237
24238
  const name = payload.name ? path.basename(payload.name) : randomUUID();
24238
24239
  const filePath = path.join(TEMP_DIR, name);
24239
- if (payload.base64) await fsPromise$1.writeFile(filePath, payload.base64, "base64");
24240
+ if (payload.base64) await fsPromise.writeFile(filePath, payload.base64, "base64");
24240
24241
  else if (payload.url) {
24241
24242
  const headers = this.getHeaders(payload.headers);
24242
24243
  const res = await fetchFile(payload.url, headers);
24243
- await fsPromise$1.writeFile(filePath, res.data);
24244
+ await fsPromise.writeFile(filePath, res.data);
24244
24245
  } else throw new Error("不存在任何文件, 无法下载");
24245
- if (fs.existsSync(filePath)) {
24246
+ if (fs$1.existsSync(filePath)) {
24246
24247
  if (isRandomName) {
24247
24248
  const md5 = await getMd5HexFromFile(filePath);
24248
24249
  const newPath = path.join(TEMP_DIR, md5);
24249
- await fsPromise$1.rename(filePath, newPath);
24250
+ await fsPromise.rename(filePath, newPath);
24250
24251
  return { file: newPath };
24251
24252
  }
24252
24253
  return { file: filePath };
@@ -42900,7 +42901,7 @@ async function download(url, headers) {
42900
42901
  return Buffer.from(bytes);
42901
42902
  }
42902
42903
  async function resolveMilkyUri(uri) {
42903
- if (uri.startsWith("file://")) return await fsPromise.readFile(fileURLToPath(uri));
42904
+ if (uri.startsWith("file://")) return await fs.readFile(fileURLToPath(uri));
42904
42905
  if (uri.startsWith("http://") || uri.startsWith("https://")) return await download(uri);
42905
42906
  if (uri.startsWith("base64://")) return Buffer.from(uri.slice(9), "base64");
42906
42907
  throw new Error(`Unsupported URI scheme: ${uri}`);
@@ -51829,6 +51830,7 @@ var RkeyManager = class {
51829
51830
  private_rkey: "",
51830
51831
  expired_time: 0
51831
51832
  };
51833
+ pull;
51832
51834
  constructor(ctx, serverUrl) {
51833
51835
  this.ctx = ctx;
51834
51836
  this.serverUrl = serverUrl;
@@ -51845,6 +51847,9 @@ var RkeyManager = class {
51845
51847
  return (/* @__PURE__ */ new Date()).getTime() / 1e3 > this.rkeyData.expired_time;
51846
51848
  }
51847
51849
  async refreshRkey() {
51850
+ if (this.pull) return this.pull;
51851
+ const { promise, resolve } = Promise.withResolvers();
51852
+ this.pull = promise;
51848
51853
  try {
51849
51854
  const { privateRKey, groupRKey, expiredTime } = await this.ctx.pmhq.getRKey();
51850
51855
  this.rkeyData = {
@@ -51852,14 +51857,14 @@ var RkeyManager = class {
51852
51857
  group_rkey: groupRKey,
51853
51858
  expired_time: expiredTime
51854
51859
  };
51860
+ resolve();
51861
+ this.pull = void 0;
51855
51862
  this.ctx.logger.info(`发包获取rkey成功, private:${privateRKey}, group:${groupRKey}`);
51856
51863
  } catch (e) {
51857
51864
  this.ctx.logger.warn(`发包获取rkey失败 ${e},开始获取远程rkey`);
51858
- try {
51859
- this.rkeyData = await this.fetchServerRkey();
51860
- } catch (e) {
51861
- this.ctx.logger.error("获取远程rkey失败", e);
51862
- }
51865
+ this.rkeyData = await this.fetchServerRkey();
51866
+ resolve();
51867
+ this.pull = void 0;
51863
51868
  }
51864
51869
  }
51865
51870
  async fetchServerRkey() {
@@ -53712,7 +53717,7 @@ var NTQQWebApi = class extends Service {
53712
53717
  const iBatchID = Math.floor(Date.now() / 1e3);
53713
53718
  for (let i = 0; i < filePathList.length; i++) {
53714
53719
  const filePath = filePathList[i];
53715
- const fileBuffer = await fsPromise.readFile(filePath);
53720
+ const fileBuffer = await fs.readFile(filePath);
53716
53721
  const fileSize = fileBuffer.length;
53717
53722
  const checksum = await getMd5HexFromFile(filePath);
53718
53723
  const getSessionUrl = `https://${domain}/webapp/json/sliceUpload/FileBatchControl/${checksum}?g_tk=${gtk}`;
@@ -55185,7 +55190,7 @@ var Config = class extends Service {
55185
55190
  this.logger.info("配置文件位于", this.configPath);
55186
55191
  this.config = this.get();
55187
55192
  if (this.configPath) {
55188
- fs$1.watchFile(this.configPath, {
55193
+ fs$2.watchFile(this.configPath, {
55189
55194
  persistent: true,
55190
55195
  interval: 1e3
55191
55196
  }, () => {
@@ -55203,7 +55208,7 @@ var Config = class extends Service {
55203
55208
  }
55204
55209
  getDefaultConfig() {
55205
55210
  const _defaultConfig = { ...defaultConfig };
55206
- const defaultConfigFromFile = fs$1.readFileSync(this.defaultConfigPath, "utf-8");
55211
+ const defaultConfigFromFile = fs$2.readFileSync(this.defaultConfigPath, "utf-8");
55207
55212
  try {
55208
55213
  const parsedDefaultConfig = import_dist.default.parse(defaultConfigFromFile);
55209
55214
  Object.assign(_defaultConfig, parsedDefaultConfig);
@@ -55214,12 +55219,12 @@ var Config = class extends Service {
55214
55219
  }
55215
55220
  reloadConfig() {
55216
55221
  if (!this.configPath) return this.getDefaultConfig();
55217
- if (!fs$1.existsSync(this.configPath)) {
55222
+ if (!fs$2.existsSync(this.configPath)) {
55218
55223
  this.config = this.getDefaultConfig();
55219
55224
  this.set(this.config);
55220
55225
  return this.config;
55221
55226
  } else {
55222
- const data = fs$1.readFileSync(this.configPath, "utf-8");
55227
+ const data = fs$2.readFileSync(this.configPath, "utf-8");
55223
55228
  let jsonData = defaultConfig;
55224
55229
  try {
55225
55230
  jsonData = import_dist.default.parse(data);
@@ -55245,7 +55250,7 @@ var Config = class extends Service {
55245
55250
  writeConfig(config) {
55246
55251
  if (!this.configPath) return;
55247
55252
  this.watch = false;
55248
- fs$1.writeFileSync(this.configPath, JSON.stringify(config, null, 2), "utf-8");
55253
+ fs$2.writeFileSync(this.configPath, JSON.stringify(config, null, 2), "utf-8");
55249
55254
  setTimeout(() => {
55250
55255
  this.watch = true;
55251
55256
  }, 1500);
@@ -55351,13 +55356,13 @@ var WebUITokenUtil = class {
55351
55356
  }
55352
55357
  getToken() {
55353
55358
  if (!this.token) {
55354
- if (fs$1.existsSync(this.tokenPath)) this.token = fs$1.readFileSync(this.tokenPath, "utf-8").trim();
55359
+ if (fs$2.existsSync(this.tokenPath)) this.token = fs$2.readFileSync(this.tokenPath, "utf-8").trim();
55355
55360
  }
55356
55361
  return this.token;
55357
55362
  }
55358
55363
  setToken(token) {
55359
55364
  this.token = token.trim();
55360
- fs$1.writeFileSync(this.tokenPath, token, "utf-8");
55365
+ fs$2.writeFileSync(this.tokenPath, token, "utf-8");
55361
55366
  }
55362
55367
  };
55363
55368
  var webuiTokenUtil = new WebUITokenUtil(path.join(DATA_DIR, "webui_token.txt"));
@@ -57633,7 +57638,7 @@ var require_fetch = /* @__PURE__ */ __commonJSMin(((exports, module) => {
57633
57638
  var require_shared = /* @__PURE__ */ __commonJSMin(((exports, module) => {
57634
57639
  var urllib$2 = __require("url");
57635
57640
  var util$1 = __require("util");
57636
- var fs$4 = __require("fs");
57641
+ var fs$5 = __require("fs");
57637
57642
  var nmfetch = require_fetch();
57638
57643
  var dns$1 = __require("dns");
57639
57644
  var net$4 = __require("net");
@@ -57969,7 +57974,7 @@ var require_shared = /* @__PURE__ */ __commonJSMin(((exports, module) => {
57969
57974
  const parsedDataUri = module.exports.parseDataURI(content.path || content.href);
57970
57975
  if (!parsedDataUri || !parsedDataUri.data) return callback(null, Buffer.from(0));
57971
57976
  return callback(null, parsedDataUri.data);
57972
- } else if (content.path) return resolveStream(fs$4.createReadStream(content.path), callback);
57977
+ } else if (content.path) return resolveStream(fs$5.createReadStream(content.path), callback);
57973
57978
  }
57974
57979
  if (typeof data[key].content === "string" && ![
57975
57980
  "utf8",
@@ -61795,7 +61800,7 @@ var require_le_unix = /* @__PURE__ */ __commonJSMin(((exports, module) => {
61795
61800
  //#region node_modules/nodemailer/lib/mime-node/index.js
61796
61801
  var require_mime_node = /* @__PURE__ */ __commonJSMin(((exports, module) => {
61797
61802
  var crypto$9 = __require("crypto");
61798
- var fs$3 = __require("fs");
61803
+ var fs$4 = __require("fs");
61799
61804
  var punycode = require_punycode();
61800
61805
  var { PassThrough: PassThrough$2 } = __require("stream");
61801
61806
  var shared = require_shared();
@@ -62504,7 +62509,7 @@ var require_mime_node = /* @__PURE__ */ __commonJSMin(((exports, module) => {
62504
62509
  });
62505
62510
  return contentStream;
62506
62511
  }
62507
- return fs$3.createReadStream(content.path);
62512
+ return fs$4.createReadStream(content.path);
62508
62513
  }
62509
62514
  if (content && typeof content.href === "string") {
62510
62515
  if (this.disableUrlAccess) {
@@ -63342,7 +63347,7 @@ var require_dkim = /* @__PURE__ */ __commonJSMin(((exports, module) => {
63342
63347
  var RelaxedBody = require_relaxed_body();
63343
63348
  var sign = require_sign();
63344
63349
  var { PassThrough: PassThrough$1 } = __require("stream");
63345
- var fs$2 = __require("fs");
63350
+ var fs$3 = __require("fs");
63346
63351
  var path$2 = __require("path");
63347
63352
  var crypto$6 = __require("crypto");
63348
63353
  var DKIM_ALGO = "sha256";
@@ -63375,10 +63380,10 @@ var require_dkim = /* @__PURE__ */ __commonJSMin(((exports, module) => {
63375
63380
  }
63376
63381
  cleanup() {
63377
63382
  if (!this.cache || !this.cachePath) return;
63378
- fs$2.unlink(this.cachePath, () => false);
63383
+ fs$3.unlink(this.cachePath, () => false);
63379
63384
  }
63380
63385
  createReadCache() {
63381
- this.cache = fs$2.createReadStream(this.cachePath);
63386
+ this.cache = fs$3.createReadStream(this.cachePath);
63382
63387
  this.cache.once("error", (err) => {
63383
63388
  this.cleanup();
63384
63389
  this.output.emit("error", err);
@@ -63424,7 +63429,7 @@ var require_dkim = /* @__PURE__ */ __commonJSMin(((exports, module) => {
63424
63429
  }
63425
63430
  createWriteCache() {
63426
63431
  this.output.usingCache = true;
63427
- this.cache = fs$2.createWriteStream(this.cachePath);
63432
+ this.cache = fs$3.createWriteStream(this.cachePath);
63428
63433
  this.cache.once("error", (err) => {
63429
63434
  this.cleanup();
63430
63435
  this.relaxedBody.unpipe(this.cache);
@@ -69632,7 +69637,7 @@ async function onLoad() {
69632
69637
  if (!existsSync$1(LOG_DIR)) mkdirSync(LOG_DIR);
69633
69638
  if (!existsSync$1(TEMP_DIR)) mkdirSync(TEMP_DIR);
69634
69639
  const ctx = new Context$1();
69635
- ctx.plugin(index_default$3);
69640
+ ctx.plugin(index_default$3, { bufferSize: 0 });
69636
69641
  ctx.plugin(index_default);
69637
69642
  ctx.plugin(Config);
69638
69643
  ctx.plugin(PMHQ);