llonebot-dist 7.12.8 → 7.12.10

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,10 +1,10 @@
1
1
  import { createRequire } from "node:module";
2
2
  import * as path$4 from "node:path";
3
3
  import path, { dirname, join } from "node:path";
4
- import fs, { access, copyFile, mkdir, readFile, stat, unlink, writeFile } from "node:fs/promises";
5
- import fs$1, { existsSync } from "fs";
6
- import * as fs$6 from "node:fs";
7
- import fs$2, { appendFile, appendFileSync, createReadStream, existsSync as existsSync$1, mkdirSync, promises, stat as stat$1, statSync, watch } from "node:fs";
4
+ import fsp, { access, copyFile, mkdir, readFile, stat, unlink, writeFile } from "node:fs/promises";
5
+ import fs, { existsSync } from "fs";
6
+ import * as fs$5 from "node:fs";
7
+ import fs$1, { appendFile, appendFileSync, createReadStream, existsSync as existsSync$1, mkdirSync, promises, stat as stat$1, statSync, watch } from "node:fs";
8
8
  import os from "node:os";
9
9
  import { Binary, Time, camelize, clone, deduplicate, deepEqual, defineProperty, difference, filterKeys, hyphenate, is, isNonNullable, isNullable, isPlainObject, makeArray, mapValues, noop, omit, pick, remove, valueMap } from "cosmokit";
10
10
  import { Exporter, Factory } from "reggol";
@@ -3973,7 +3973,7 @@ var require_utils$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
3973
3973
  //#endregion
3974
3974
  //#region node_modules/qrcode/lib/renderer/png.js
3975
3975
  var require_png = /* @__PURE__ */ __commonJSMin(((exports) => {
3976
- var fs$11 = __require("fs");
3976
+ var fs$10 = __require("fs");
3977
3977
  var PNG = require_png$1().PNG;
3978
3978
  var Utils = require_utils$1();
3979
3979
  exports.render = function render(qrData, options) {
@@ -4025,7 +4025,7 @@ var require_png = /* @__PURE__ */ __commonJSMin(((exports) => {
4025
4025
  called = true;
4026
4026
  cb.apply(null, args);
4027
4027
  };
4028
- const stream = fs$11.createWriteStream(path);
4028
+ const stream = fs$10.createWriteStream(path);
4029
4029
  stream.on("error", done);
4030
4030
  stream.on("close", done);
4031
4031
  exports.renderToFileStream(stream, qrData, options);
@@ -6624,7 +6624,7 @@ async function logSummaryMessage(ctx, message) {
6624
6624
  var require_windows = /* @__PURE__ */ __commonJSMin(((exports, module) => {
6625
6625
  module.exports = isexe;
6626
6626
  isexe.sync = sync;
6627
- var fs$10 = __require("fs");
6627
+ var fs$9 = __require("fs");
6628
6628
  function checkPathExt(path, options) {
6629
6629
  var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT;
6630
6630
  if (!pathext) return true;
@@ -6641,12 +6641,12 @@ var require_windows = /* @__PURE__ */ __commonJSMin(((exports, module) => {
6641
6641
  return checkPathExt(path, options);
6642
6642
  }
6643
6643
  function isexe(path, options, cb) {
6644
- fs$10.stat(path, function(er, stat) {
6644
+ fs$9.stat(path, function(er, stat) {
6645
6645
  cb(er, er ? false : checkStat(stat, path, options));
6646
6646
  });
6647
6647
  }
6648
6648
  function sync(path, options) {
6649
- return checkStat(fs$10.statSync(path), path, options);
6649
+ return checkStat(fs$9.statSync(path), path, options);
6650
6650
  }
6651
6651
  }));
6652
6652
  //#endregion
@@ -6654,14 +6654,14 @@ var require_windows = /* @__PURE__ */ __commonJSMin(((exports, module) => {
6654
6654
  var require_mode = /* @__PURE__ */ __commonJSMin(((exports, module) => {
6655
6655
  module.exports = isexe;
6656
6656
  isexe.sync = sync;
6657
- var fs$9 = __require("fs");
6657
+ var fs$8 = __require("fs");
6658
6658
  function isexe(path, options, cb) {
6659
- fs$9.stat(path, function(er, stat) {
6659
+ fs$8.stat(path, function(er, stat) {
6660
6660
  cb(er, er ? false : checkStat(stat, options));
6661
6661
  });
6662
6662
  }
6663
6663
  function sync(path, options) {
6664
- return checkStat(fs$9.statSync(path), options);
6664
+ return checkStat(fs$8.statSync(path), options);
6665
6665
  }
6666
6666
  function checkStat(stat, options) {
6667
6667
  return stat.isFile() && checkMode(stat, options);
@@ -9153,7 +9153,7 @@ var require_processor = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9153
9153
  //#endregion
9154
9154
  //#region node_modules/fluent-ffmpeg/lib/capabilities.js
9155
9155
  var require_capabilities = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9156
- var fs$8 = __require("fs");
9156
+ var fs$7 = __require("fs");
9157
9157
  var path$7 = __require("path");
9158
9158
  var async = require_async();
9159
9159
  var utils = require_utils();
@@ -9229,7 +9229,7 @@ var require_capabilities = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9229
9229
  proto._getFfmpegPath = function(callback) {
9230
9230
  if ("ffmpegPath" in cache) return callback(null, cache.ffmpegPath);
9231
9231
  async.waterfall([function(cb) {
9232
- if (process.env.FFMPEG_PATH) fs$8.exists(process.env.FFMPEG_PATH, function(exists) {
9232
+ if (process.env.FFMPEG_PATH) fs$7.exists(process.env.FFMPEG_PATH, function(exists) {
9233
9233
  if (exists) cb(null, process.env.FFMPEG_PATH);
9234
9234
  else cb(null, "");
9235
9235
  });
@@ -9260,7 +9260,7 @@ var require_capabilities = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9260
9260
  if ("ffprobePath" in cache) return callback(null, cache.ffprobePath);
9261
9261
  async.waterfall([
9262
9262
  function(cb) {
9263
- if (process.env.FFPROBE_PATH) fs$8.exists(process.env.FFPROBE_PATH, function(exists) {
9263
+ if (process.env.FFPROBE_PATH) fs$7.exists(process.env.FFPROBE_PATH, function(exists) {
9264
9264
  cb(null, exists ? process.env.FFPROBE_PATH : "");
9265
9265
  });
9266
9266
  else cb(null, "");
@@ -9278,7 +9278,7 @@ var require_capabilities = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9278
9278
  else if (ffmpeg.length) {
9279
9279
  var name = utils.isWindows ? "ffprobe.exe" : "ffprobe";
9280
9280
  var ffprobe = path$7.join(path$7.dirname(ffmpeg), name);
9281
- fs$8.exists(ffprobe, function(exists) {
9281
+ fs$7.exists(ffprobe, function(exists) {
9282
9282
  cb(null, exists ? ffprobe : "");
9283
9283
  });
9284
9284
  } else cb(null, "");
@@ -9303,14 +9303,14 @@ var require_capabilities = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9303
9303
  if ("flvtoolPath" in cache) return callback(null, cache.flvtoolPath);
9304
9304
  async.waterfall([
9305
9305
  function(cb) {
9306
- if (process.env.FLVMETA_PATH) fs$8.exists(process.env.FLVMETA_PATH, function(exists) {
9306
+ if (process.env.FLVMETA_PATH) fs$7.exists(process.env.FLVMETA_PATH, function(exists) {
9307
9307
  cb(null, exists ? process.env.FLVMETA_PATH : "");
9308
9308
  });
9309
9309
  else cb(null, "");
9310
9310
  },
9311
9311
  function(flvtool, cb) {
9312
9312
  if (flvtool.length) return cb(null, flvtool);
9313
- if (process.env.FLVTOOL2_PATH) fs$8.exists(process.env.FLVTOOL2_PATH, function(exists) {
9313
+ if (process.env.FLVTOOL2_PATH) fs$7.exists(process.env.FLVTOOL2_PATH, function(exists) {
9314
9314
  cb(null, exists ? process.env.FLVTOOL2_PATH : "");
9315
9315
  });
9316
9316
  else cb(null, "");
@@ -9815,7 +9815,7 @@ var require_ffprobe = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9815
9815
  //#endregion
9816
9816
  //#region node_modules/fluent-ffmpeg/lib/recipes.js
9817
9817
  var require_recipes = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9818
- var fs$7 = __require("fs");
9818
+ var fs$6 = __require("fs");
9819
9819
  var path$6 = __require("path");
9820
9820
  var PassThrough$4 = __require("stream").PassThrough;
9821
9821
  var async = require_async();
@@ -10021,8 +10021,8 @@ var require_recipes = /* @__PURE__ */ __commonJSMin(((exports, module) => {
10021
10021
  next(null, filenames);
10022
10022
  },
10023
10023
  function createDirectory(filenames, next) {
10024
- fs$7.exists(config.folder, function(exists) {
10025
- if (!exists) fs$7.mkdir(config.folder, function(err) {
10024
+ fs$6.exists(config.folder, function(exists) {
10025
+ if (!exists) fs$6.mkdir(config.folder, function(err) {
10026
10026
  if (err) next(err);
10027
10027
  else next(null, filenames);
10028
10028
  });
@@ -10270,7 +10270,7 @@ function setFFMpegPath(ffmpegPath) {
10270
10270
  path.join(import.meta.dirname, "ffmpeg.exe"),
10271
10271
  process.env["FFMPEG_PATH"] || ""
10272
10272
  ];
10273
- for (const p of paths) if (fs$2.existsSync(p)) {
10273
+ for (const p of paths) if (fs$1.existsSync(p)) {
10274
10274
  import_fluent_ffmpeg.default.setFfmpegPath(p);
10275
10275
  console.log("set ffmpeg successfully", p);
10276
10276
  break;
@@ -11385,7 +11385,7 @@ var OB11HeartbeatEvent = class extends OB11BaseMetaEvent {
11385
11385
  };
11386
11386
  //#endregion
11387
11387
  //#region src/version.ts
11388
- var version$2 = "7.12.8";
11388
+ var version$2 = "7.12.10";
11389
11389
  //#endregion
11390
11390
  //#region node_modules/sift/es5m/index.js
11391
11391
  /******************************************************************************
@@ -17045,7 +17045,7 @@ var processQueue = async () => {
17045
17045
  const promises = queue.splice(0, concurrency).map(async ({ filePath, resolve, reject }) => {
17046
17046
  let handle;
17047
17047
  try {
17048
- handle = await fs$6.promises.open(path$4.resolve(filePath), "r");
17048
+ handle = await fs$5.promises.open(path$4.resolve(filePath), "r");
17049
17049
  } catch (err) {
17050
17050
  return reject(err);
17051
17051
  }
@@ -17092,7 +17092,7 @@ function checkUriType(uri) {
17092
17092
  if (uri.startsWith("data:")) return { type: FileUriType.DataURL };
17093
17093
  if (uri.startsWith("http://") || uri.startsWith("https://")) return { type: FileUriType.RemoteURL };
17094
17094
  if (uri.startsWith("file://")) return { type: FileUriType.FileURL };
17095
- if (fs$2.existsSync(uri)) return { type: FileUriType.Path };
17095
+ if (fs$1.existsSync(uri)) return { type: FileUriType.Path };
17096
17096
  return { type: FileUriType.Unknown };
17097
17097
  }
17098
17098
  async function fetchFile(url, headersInit) {
@@ -17122,7 +17122,7 @@ async function uri2local(ctx, uri, needExt) {
17122
17122
  const { type } = checkUriType(uri);
17123
17123
  if (type === FileUriType.FileURL) {
17124
17124
  const filePath = fileURLToPath(uri);
17125
- if (!fs$2.existsSync(filePath)) return {
17125
+ if (!fs$1.existsSync(filePath)) return {
17126
17126
  success: false,
17127
17127
  errMsg: "路径不存在",
17128
17128
  fileName: "",
@@ -17148,12 +17148,12 @@ async function uri2local(ctx, uri, needExt) {
17148
17148
  const res = await fetchFile(uri);
17149
17149
  let fileName = randomUUID();
17150
17150
  let filePath = path.join(TEMP_DIR, fileName);
17151
- await fs.writeFile(filePath, res.data);
17151
+ await fsp.writeFile(filePath, res.data);
17152
17152
  if (needExt) {
17153
17153
  const ext = (await ctx.ntFileApi.getFileType(filePath)).ext;
17154
17154
  fileName += `.${ext}`;
17155
17155
  const newPath = `${filePath}.${ext}`;
17156
- await fs.rename(filePath, newPath);
17156
+ await fsp.rename(filePath, newPath);
17157
17157
  filePath = newPath;
17158
17158
  }
17159
17159
  return {
@@ -17176,11 +17176,11 @@ async function uri2local(ctx, uri, needExt) {
17176
17176
  let filename = randomUUID();
17177
17177
  let filePath = path.join(TEMP_DIR, filename);
17178
17178
  const base64 = uri.replace(/^base64:\/\//, "");
17179
- await fs.writeFile(filePath, base64, "base64");
17179
+ await fsp.writeFile(filePath, base64, "base64");
17180
17180
  if (needExt) {
17181
17181
  const ext = (await ctx.ntFileApi.getFileType(filePath)).ext;
17182
17182
  filename += `.${ext}`;
17183
- await fs.rename(filePath, `${filePath}.${ext}`);
17183
+ await fsp.rename(filePath, `${filePath}.${ext}`);
17184
17184
  filePath = `${filePath}.${ext}`;
17185
17185
  }
17186
17186
  return {
@@ -17197,11 +17197,11 @@ async function uri2local(ctx, uri, needExt) {
17197
17197
  let filename = randomUUID();
17198
17198
  const [, _type, base64] = capture;
17199
17199
  let filePath = path.join(TEMP_DIR, filename);
17200
- await fs.writeFile(filePath, base64, "base64");
17200
+ await fsp.writeFile(filePath, base64, "base64");
17201
17201
  if (needExt) {
17202
17202
  const ext = (await ctx.ntFileApi.getFileType(filePath)).ext;
17203
17203
  filename += `.${ext}`;
17204
- await fs.rename(filePath, `${filePath}.${ext}`);
17204
+ await fsp.rename(filePath, `${filePath}.${ext}`);
17205
17205
  filePath = `${filePath}.${ext}`;
17206
17206
  }
17207
17207
  return {
@@ -17265,13 +17265,13 @@ function getSha1HexFromBuffer(buf) {
17265
17265
  }
17266
17266
  async function getMd5HexFromFile(filePath) {
17267
17267
  const hash = createHash("md5");
17268
- const stream = fs$2.createReadStream(filePath);
17268
+ const stream = fs$1.createReadStream(filePath);
17269
17269
  for await (const chunk of stream) hash.update(chunk);
17270
17270
  return hash.digest("hex");
17271
17271
  }
17272
17272
  async function getSha1HexFromFile(filePath) {
17273
17273
  const hash = createHash("sha1");
17274
- const stream = fs$2.createReadStream(filePath);
17274
+ const stream = fs$1.createReadStream(filePath);
17275
17275
  for await (const chunk of stream) hash.update(chunk);
17276
17276
  return hash.digest("hex");
17277
17277
  }
@@ -17280,13 +17280,13 @@ function getMd5BufferFromBuffer(buf) {
17280
17280
  }
17281
17281
  async function getMd5BufferFromFile(filePath) {
17282
17282
  const hash = createHash("md5");
17283
- const stream = fs$2.createReadStream(filePath);
17283
+ const stream = fs$1.createReadStream(filePath);
17284
17284
  for await (const chunk of stream) hash.update(chunk);
17285
17285
  return hash.digest();
17286
17286
  }
17287
17287
  async function getSha1BufferFromFile(filePath) {
17288
17288
  const hash = createHash("sha1");
17289
- const stream = fs$2.createReadStream(filePath);
17289
+ const stream = fs$1.createReadStream(filePath);
17290
17290
  for await (const chunk of stream) hash.update(chunk);
17291
17291
  return hash.digest();
17292
17292
  }
@@ -17522,7 +17522,7 @@ async function calculateSha1StreamBytes(filePath) {
17522
17522
  let bytesRead = 0;
17523
17523
  let nextBlockBoundary = blockSize;
17524
17524
  const byteArrayList = [];
17525
- const readable = fs$2.createReadStream(filePath);
17525
+ const readable = fs$1.createReadStream(filePath);
17526
17526
  for await (const chunk of readable) {
17527
17527
  let buf;
17528
17528
  if (tail.length > 0) {
@@ -17547,7 +17547,7 @@ async function calculateSha1StreamBytes(filePath) {
17547
17547
  }
17548
17548
  async function readAndHash10M(filePath) {
17549
17549
  const maxSize = 10002432;
17550
- const fd = await fs.open(filePath, "r");
17550
+ const fd = await fsp.open(filePath, "r");
17551
17551
  const buffer = Buffer.allocUnsafe(maxSize);
17552
17552
  const { bytesRead } = await fd.read(buffer, 0, maxSize, 0);
17553
17553
  await fd.close();
@@ -17589,13 +17589,13 @@ var TriSha1 = class {
17589
17589
  };
17590
17590
  async function calculateTriSha1(filePath, fileSize) {
17591
17591
  const hash = new TriSha1(fileSize);
17592
- const stream = fs$2.createReadStream(filePath);
17592
+ const stream = fs$1.createReadStream(filePath);
17593
17593
  for await (const chunk of stream) hash.update(chunk);
17594
17594
  return hash.finalize();
17595
17595
  }
17596
17596
  var defaultVideoThumb = Buffer.from("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", "base64");
17597
17597
  async function getVideoInfo(filePath) {
17598
- const size = fs$2.statSync(filePath).size;
17598
+ const size = fs$1.statSync(filePath).size;
17599
17599
  return new Promise((resolve, reject) => {
17600
17600
  (0, import_fluent_ffmpeg.default)(filePath).ffprobe((err, metadata) => {
17601
17601
  if (err) reject(err);
@@ -17672,7 +17672,7 @@ function convert(ctx, input, options, outputPath) {
17672
17672
  });
17673
17673
  }
17674
17674
  async function encodeSilk(ctx, filePath) {
17675
- const file = await fs.readFile(filePath);
17675
+ const file = await fsp.readFile(filePath);
17676
17676
  if (!isSilk(file)) {
17677
17677
  ctx.logger.info(`语音文件${filePath}需要转换成silk`);
17678
17678
  let result;
@@ -17691,7 +17691,7 @@ async function encodeSilk(ctx, filePath) {
17691
17691
  "-f s16le"
17692
17692
  ] }), 24e3);
17693
17693
  const pttPath = path.join(TEMP_DIR, randomUUID());
17694
- await fs.writeFile(pttPath, result.data);
17694
+ await fsp.writeFile(pttPath, result.data);
17695
17695
  ctx.logger.info(`语音文件${filePath}转换成功!`, pttPath, `时长:`, result.duration);
17696
17696
  return {
17697
17697
  converted: true,
@@ -17714,11 +17714,11 @@ async function encodeSilk(ctx, filePath) {
17714
17714
  }
17715
17715
  }
17716
17716
  async function decodeSilk(ctx, inputFilePath, outFormat) {
17717
- const { data } = await decode(await fs.readFile(inputFilePath), 24e3);
17717
+ const { data } = await decode(await fsp.readFile(inputFilePath), 24e3);
17718
17718
  const tmpPath = path.join(TEMP_DIR, path.basename(inputFilePath));
17719
17719
  const outFilePath = tmpPath + `.${outFormat}`;
17720
17720
  const pcmFilePath = tmpPath + ".pcm";
17721
- await fs.writeFile(pcmFilePath, data);
17721
+ await fsp.writeFile(pcmFilePath, data);
17722
17722
  return convert(ctx, pcmFilePath, { input: [
17723
17723
  "-f s16le",
17724
17724
  "-ar 24000",
@@ -18112,8 +18112,12 @@ async function createSendElements(ctx, messageData, peer, ignoreTypes = []) {
18112
18112
  if (isAdmin && remainAtAllCount > 0) sendElements.push(SendElement.at(atQQ, atQQ, AtType.All, "@全体成员"));
18113
18113
  } else if (peer.chatType === ChatType.Group) {
18114
18114
  const uid = await ctx.ntUserApi.getUidByUin(atQQ, peer.peerUid);
18115
- let display = "";
18115
+ let display;
18116
18116
  if (segment.data.name) display = `@${segment.data.name}`;
18117
+ else {
18118
+ const info = await ctx.ntGroupApi.getGroupMember(peer.peerUid, uid);
18119
+ display = `@${info.cardName || info.nick}`;
18120
+ }
18117
18121
  sendElements.push(SendElement.at(atQQ, uid, AtType.One, display));
18118
18122
  }
18119
18123
  }
@@ -21901,20 +21905,22 @@ var GetGroupMemberInfo$1 = class extends BaseAction {
21901
21905
  let info;
21902
21906
  try {
21903
21907
  info = await this.ctx.ntUserApi.getUserDetailInfoWithBizInfo(member.uid);
21904
- this.ctx.logger.info("getUserDetailInfoWithBizInfo");
21905
21908
  } catch (e) {
21906
21909
  try {
21907
21910
  info = (await this.ctx.ntUserApi.fetchUserDetailInfo(member.uid)).detail.get(member.uid);
21908
- this.ctx.logger.info("fetchUserDetailInfo");
21909
21911
  } catch (e) {}
21910
21912
  }
21911
- if (info) {
21912
- this.ctx.logger.info(info);
21913
+ if (info?.commonExt) {
21913
21914
  ret.sex = OB11Entities.sex(info.simpleInfo.baseInfo.sex);
21914
- ret.qq_level = info.commonExt?.qqLevel && calcQQLevel(info.commonExt.qqLevel) || 0;
21915
- ret.age = info.simpleInfo.baseInfo.age ?? 0;
21915
+ ret.qq_level = calcQQLevel(info.commonExt.qqLevel);
21916
+ ret.age = info.simpleInfo.baseInfo.age;
21917
+ if (ret.qq_level === 0) ret.qq_level = (await this.ctx.pmhq.fetchUserInfo(+payload.user_id)).level;
21918
+ } else {
21919
+ const info = await this.ctx.pmhq.fetchUserInfo(+payload.user_id);
21920
+ ret.sex = OB11Entities.sex(info.sex);
21921
+ ret.qq_level = info.level;
21922
+ ret.age = info.age;
21916
21923
  }
21917
- if (ret.qq_level === 0) ret.qq_level = (await this.ctx.pmhq.fetchUserInfo(+payload.user_id)).level;
21918
21924
  return ret;
21919
21925
  }
21920
21926
  };
@@ -23853,6 +23859,18 @@ var Msg;
23853
23859
  var Misc;
23854
23860
  (function(_Misc) {
23855
23861
  _Misc.UserInfoLabel = ProtoMessage.of({ labels: ProtoField(1, { content: ProtoField(4, "string") }, "repeated") });
23862
+ _Misc.UserInfoBusiness = ProtoMessage.of({ body: ProtoField(3, {
23863
+ msg: ProtoField(1, "string"),
23864
+ lists: ProtoField(3, {
23865
+ type: ProtoField(1, "uint32"),
23866
+ field2: ProtoField(2, "uint32"),
23867
+ isYear: ProtoField(3, "uint32"),
23868
+ level: ProtoField(4, "uint32"),
23869
+ isPro: ProtoField(5, "uint32"),
23870
+ icon1: ProtoField(6, "string"),
23871
+ icon2: ProtoField(7, "string")
23872
+ }, "repeated")
23873
+ }) });
23856
23874
  })(Misc || (Misc = {}));
23857
23875
  //#endregion
23858
23876
  //#region src/onebot11/helper/createMultiMessage.ts
@@ -24494,7 +24512,11 @@ var GetStrangerInfo = class extends BaseAction {
24494
24512
  birthday_year: info.birthdayYear,
24495
24513
  birthday_month: info.birthdayMonth,
24496
24514
  birthday_day: info.birthdayDay,
24497
- labels: info.labels
24515
+ labels: info.labels,
24516
+ is_vip: info.isVip,
24517
+ is_years_vip: info.isYearsVip,
24518
+ vip_level: info.vipLevel,
24519
+ remark: info.remark
24498
24520
  };
24499
24521
  }
24500
24522
  };
@@ -24889,7 +24911,7 @@ var DownloadFile = class extends BaseAction {
24889
24911
  const res = await fetchFile(payload.url, headers);
24890
24912
  await fsPromise.writeFile(filePath, res.data);
24891
24913
  } else throw new Error("不存在任何文件, 无法下载");
24892
- if (fs$1.existsSync(filePath)) {
24914
+ if (fs.existsSync(filePath)) {
24893
24915
  if (isRandomName) {
24894
24916
  const md5 = await getMd5HexFromFile(filePath);
24895
24917
  const newPath = path.join(TEMP_DIR, md5);
@@ -28522,7 +28544,12 @@ var MessageEncoder = class {
28522
28544
  if (attrs.type === "all") this.elements.push(SendElement.at("", "", AtType.All, "@全体成员"));
28523
28545
  else {
28524
28546
  const uid = await this.ctx.ntUserApi.getUidByUin(attrs.id, this.peer.peerUid);
28525
- const display = attrs.name ? "@" + attrs.name : "";
28547
+ let display;
28548
+ if (attrs.name) display = `@${attrs.name}`;
28549
+ else {
28550
+ const info = await this.ctx.ntGroupApi.getGroupMember(this.peer.peerUid, uid);
28551
+ display = `@${info.cardName || info.nick}`;
28552
+ }
28526
28553
  this.elements.push(SendElement.at(attrs.id, uid, AtType.One, display));
28527
28554
  }
28528
28555
  } else if (type === "a") {
@@ -43432,7 +43459,7 @@ async function download(url, headers) {
43432
43459
  return Buffer.from(bytes);
43433
43460
  }
43434
43461
  async function resolveMilkyUri(uri) {
43435
- if (uri.startsWith("file://")) return await fs.readFile(fileURLToPath(uri));
43462
+ if (uri.startsWith("file://")) return await fsp.readFile(fileURLToPath(uri));
43436
43463
  if (uri.startsWith("http://") || uri.startsWith("https://")) return await download(uri);
43437
43464
  if (uri.startsWith("base64://")) return Buffer.from(uri.slice(9), "base64");
43438
43465
  throw new Error(`Unsupported URI scheme: ${uri}`);
@@ -43461,22 +43488,19 @@ var SystemApi = [
43461
43488
  });
43462
43489
  }),
43463
43490
  defineApi("get_user_profile", GetUserProfileInput, GetUserProfileOutput, async (ctx, payload) => {
43464
- const userInfo = await ctx.ntUserApi.getUserDetailInfoByUin(payload.user_id.toString());
43465
- if (userInfo.result !== 0) return Failed(-500, userInfo.errMsg);
43466
- const profile = {
43467
- nickname: userInfo.detail.simpleInfo.coreInfo.nick,
43468
- qid: userInfo.detail.simpleInfo.baseInfo.qid,
43469
- age: userInfo.detail.simpleInfo.baseInfo.age,
43470
- sex: transformGender(userInfo.detail.simpleInfo.baseInfo.sex),
43471
- remark: userInfo.detail.simpleInfo.coreInfo.remark,
43472
- bio: userInfo.detail.simpleInfo.baseInfo.longNick,
43473
- level: userInfo.detail.commonExt?.qqLevel ? userInfo.detail.commonExt.qqLevel.penguinNum * 256 + userInfo.detail.commonExt.qqLevel.crownNum * 64 + userInfo.detail.commonExt.qqLevel.sunNum * 16 + userInfo.detail.commonExt.qqLevel.moonNum * 4 + userInfo.detail.commonExt.qqLevel.starNum : 0,
43474
- country: userInfo.detail.commonExt?.country || "",
43475
- city: userInfo.detail.commonExt?.city || "",
43476
- school: userInfo.detail.commonExt?.college || ""
43477
- };
43478
- if (profile.level === 0) profile.level = (await ctx.pmhq.fetchUserInfo(payload.user_id)).level;
43479
- return Ok(profile);
43491
+ const info = await ctx.pmhq.fetchUserInfo(payload.user_id);
43492
+ return Ok({
43493
+ nickname: info.nick,
43494
+ qid: info.qid,
43495
+ age: info.age,
43496
+ sex: transformGender(info.sex),
43497
+ remark: info.remark,
43498
+ bio: info.longNick,
43499
+ level: info.level,
43500
+ country: info.country,
43501
+ city: info.city,
43502
+ school: info.school
43503
+ });
43480
43504
  }),
43481
43505
  defineApi("get_friend_list", GetFriendListInput, GetFriendListOutput, async (ctx) => {
43482
43506
  const friends = await ctx.ntFriendApi.getBuddyList();
@@ -43672,7 +43696,8 @@ async function transformOutgoingMessage(ctx, segments, peerUid, isGroup = false)
43672
43696
  else if (segment.type === "mention" && isGroup) {
43673
43697
  const memberUin = segment.data.user_id.toString();
43674
43698
  const memberUid = await ctx.ntUserApi.getUidByUin(memberUin, peerUid);
43675
- elements.push(SendElement.at(memberUin, memberUid, AtType.One, ""));
43699
+ const info = await ctx.ntGroupApi.getGroupMember(peerUid, memberUid);
43700
+ elements.push(SendElement.at(memberUin, memberUid, AtType.One, `@${info.cardName || info.nick}`));
43676
43701
  } else if (segment.type === "mention_all" && isGroup) elements.push(SendElement.at("", "", AtType.All, "@全体成员"));
43677
43702
  else if (segment.type === "face") elements.push(SendElement.face(+segment.data.face_id, segment.data.is_large ? 3 : void 0));
43678
43703
  else if (segment.type === "reply") {
@@ -53745,7 +53770,7 @@ var NTQQMsgApi = class extends Service {
53745
53770
  chatInfo: peer,
53746
53771
  filterMsgType: [],
53747
53772
  filterSendersUid,
53748
- filterMsgToTime: filterMsgTime,
53773
+ filterMsgToTime: String(filterMsgTime + 1),
53749
53774
  filterMsgFromTime: filterMsgTime,
53750
53775
  isReverseOrder: true,
53751
53776
  isIncludeCurrent: true,
@@ -54025,7 +54050,7 @@ var NTQQUserApi = class extends Service {
54025
54050
  const funcs = [async () => {
54026
54051
  return (await this.ctx.pmhq.invoke("nodeIKernelUixConvertService/getUin", [[uid]])).uinInfo.get(uid);
54027
54052
  }, async () => {
54028
- return (await this.fetchUserDetailInfo(uid)).detail.get(uid)?.uin;
54053
+ return (await this.getUserSimpleInfo(uid)).uin;
54029
54054
  }];
54030
54055
  for (const f of funcs) try {
54031
54056
  const result = await f();
@@ -54035,6 +54060,7 @@ var NTQQUserApi = class extends Service {
54035
54060
  }
54036
54061
  return "";
54037
54062
  }
54063
+ /** 始终会从服务器拉取 */
54038
54064
  async fetchUserDetailInfo(uid) {
54039
54065
  return await this.ctx.pmhq.invoke("nodeIKernelProfileService/fetchUserDetailInfo", [
54040
54066
  "BuddyProfileStore",
@@ -54049,12 +54075,14 @@ var NTQQUserApi = class extends Service {
54049
54075
  resultCb: (payload) => payload.simpleInfo.uid === uid
54050
54076
  });
54051
54077
  }
54078
+ /** 无缓存时会从服务器拉取 */
54052
54079
  async getUserSimpleInfo(uid, force = true) {
54053
54080
  return (await this.ctx.pmhq.invoke("nodeIKernelProfileService/getUserSimpleInfo", [force, [uid]], {
54054
54081
  resultCmd: ReceiveCmdS.USER_INFO,
54055
54082
  resultCb: (payload) => payload.has(uid)
54056
54083
  })).get(uid);
54057
54084
  }
54085
+ /** 无缓存时会获取不到用户信息 */
54058
54086
  async getCoreAndBaseInfo(uids) {
54059
54087
  return await this.ctx.pmhq.invoke("nodeIKernelProfileService/getCoreAndBaseInfo", ["nodeStore", uids]);
54060
54088
  }
@@ -54298,7 +54326,7 @@ var NTQQWebApi = class extends Service {
54298
54326
  const iBatchID = Math.floor(Date.now() / 1e3);
54299
54327
  for (let i = 0; i < filePathList.length; i++) {
54300
54328
  const filePath = filePathList[i];
54301
- const fileBuffer = await fs.readFile(filePath);
54329
+ const fileBuffer = await fsp.readFile(filePath);
54302
54330
  const fileSize = fileBuffer.length;
54303
54331
  const fileType = await fileTypeFromBuffer(fileBuffer);
54304
54332
  const timestamp = Math.floor(Date.now() / 1e3);
@@ -54483,7 +54511,7 @@ var NTQQWebApi = class extends Service {
54483
54511
  }
54484
54512
  if (sVid) {
54485
54513
  const filePath = await createThumb(this.ctx, filePathList[i]);
54486
- const fileBuffer = await fs.readFile(filePath);
54514
+ const fileBuffer = await fsp.readFile(filePath);
54487
54515
  const fileSize = fileBuffer.length;
54488
54516
  const timestamp = Math.floor(Date.now() / 1e3);
54489
54517
  const checksum = getMd5HexFromBuffer(fileBuffer);
@@ -55975,7 +56003,7 @@ var Config = class extends Service {
55975
56003
  this.logger.info("配置文件位于", this.configPath);
55976
56004
  this.config = this.get();
55977
56005
  if (this.configPath) {
55978
- fs$2.watchFile(this.configPath, {
56006
+ fs$1.watchFile(this.configPath, {
55979
56007
  persistent: true,
55980
56008
  interval: 1e3
55981
56009
  }, () => {
@@ -55993,7 +56021,7 @@ var Config = class extends Service {
55993
56021
  }
55994
56022
  getDefaultConfig() {
55995
56023
  const _defaultConfig = { ...defaultConfig };
55996
- const defaultConfigFromFile = fs$2.readFileSync(this.defaultConfigPath, "utf-8");
56024
+ const defaultConfigFromFile = fs$1.readFileSync(this.defaultConfigPath, "utf-8");
55997
56025
  try {
55998
56026
  const parsedDefaultConfig = import_dist.default.parse(defaultConfigFromFile);
55999
56027
  Object.assign(_defaultConfig, parsedDefaultConfig);
@@ -56004,12 +56032,12 @@ var Config = class extends Service {
56004
56032
  }
56005
56033
  reloadConfig() {
56006
56034
  if (!this.configPath) return this.getDefaultConfig();
56007
- if (!fs$2.existsSync(this.configPath)) {
56035
+ if (!fs$1.existsSync(this.configPath)) {
56008
56036
  this.config = this.getDefaultConfig();
56009
56037
  this.set(this.config);
56010
56038
  return this.config;
56011
56039
  } else {
56012
- const data = fs$2.readFileSync(this.configPath, "utf-8");
56040
+ const data = fs$1.readFileSync(this.configPath, "utf-8");
56013
56041
  let jsonData = defaultConfig;
56014
56042
  try {
56015
56043
  jsonData = import_dist.default.parse(data);
@@ -56035,7 +56063,7 @@ var Config = class extends Service {
56035
56063
  writeConfig(config) {
56036
56064
  if (!this.configPath) return;
56037
56065
  this.watch = false;
56038
- fs$2.writeFileSync(this.configPath, JSON.stringify(config, null, 2), "utf-8");
56066
+ fs$1.writeFileSync(this.configPath, JSON.stringify(config, null, 2), "utf-8");
56039
56067
  setTimeout(() => {
56040
56068
  this.watch = true;
56041
56069
  }, 1500);
@@ -56141,13 +56169,13 @@ var WebUITokenUtil = class {
56141
56169
  }
56142
56170
  getToken() {
56143
56171
  if (!this.token) {
56144
- if (fs$2.existsSync(this.tokenPath)) this.token = fs$2.readFileSync(this.tokenPath, "utf-8").trim();
56172
+ if (fs$1.existsSync(this.tokenPath)) this.token = fs$1.readFileSync(this.tokenPath, "utf-8").trim();
56145
56173
  }
56146
56174
  return this.token;
56147
56175
  }
56148
56176
  setToken(token) {
56149
56177
  this.token = token.trim();
56150
- fs$2.writeFileSync(this.tokenPath, token, "utf-8");
56178
+ fs$1.writeFileSync(this.tokenPath, token, "utf-8");
56151
56179
  }
56152
56180
  };
56153
56181
  var webuiTokenUtil = new WebUITokenUtil(path.join(DATA_DIR, "webui_token.txt"));
@@ -58422,7 +58450,7 @@ var require_fetch = /* @__PURE__ */ __commonJSMin(((exports, module) => {
58422
58450
  var require_shared = /* @__PURE__ */ __commonJSMin(((exports, module) => {
58423
58451
  var urllib$2 = __require("url");
58424
58452
  var util$1 = __require("util");
58425
- var fs$5 = __require("fs");
58453
+ var fs$4 = __require("fs");
58426
58454
  var nmfetch = require_fetch();
58427
58455
  var dns$1 = __require("dns");
58428
58456
  var net$4 = __require("net");
@@ -58758,7 +58786,7 @@ var require_shared = /* @__PURE__ */ __commonJSMin(((exports, module) => {
58758
58786
  const parsedDataUri = module.exports.parseDataURI(content.path || content.href);
58759
58787
  if (!parsedDataUri || !parsedDataUri.data) return callback(null, Buffer.from(0));
58760
58788
  return callback(null, parsedDataUri.data);
58761
- } else if (content.path) return resolveStream(fs$5.createReadStream(content.path), callback);
58789
+ } else if (content.path) return resolveStream(fs$4.createReadStream(content.path), callback);
58762
58790
  }
58763
58791
  if (typeof data[key].content === "string" && ![
58764
58792
  "utf8",
@@ -62698,7 +62726,7 @@ var require_le_unix = /* @__PURE__ */ __commonJSMin(((exports, module) => {
62698
62726
  //#region node_modules/nodemailer/lib/mime-node/index.js
62699
62727
  var require_mime_node = /* @__PURE__ */ __commonJSMin(((exports, module) => {
62700
62728
  var crypto$8 = __require("crypto");
62701
- var fs$4 = __require("fs");
62729
+ var fs$3 = __require("fs");
62702
62730
  var punycode = require_punycode();
62703
62731
  var { PassThrough: PassThrough$2 } = __require("stream");
62704
62732
  var shared = require_shared();
@@ -63407,7 +63435,7 @@ var require_mime_node = /* @__PURE__ */ __commonJSMin(((exports, module) => {
63407
63435
  });
63408
63436
  return contentStream;
63409
63437
  }
63410
- return fs$4.createReadStream(content.path);
63438
+ return fs$3.createReadStream(content.path);
63411
63439
  }
63412
63440
  if (content && typeof content.href === "string") {
63413
63441
  if (this.disableUrlAccess) {
@@ -64246,7 +64274,7 @@ var require_dkim = /* @__PURE__ */ __commonJSMin(((exports, module) => {
64246
64274
  var RelaxedBody = require_relaxed_body();
64247
64275
  var sign = require_sign();
64248
64276
  var { PassThrough: PassThrough$1 } = __require("stream");
64249
- var fs$3 = __require("fs");
64277
+ var fs$2 = __require("fs");
64250
64278
  var path$2 = __require("path");
64251
64279
  var crypto$5 = __require("crypto");
64252
64280
  var DKIM_ALGO = "sha256";
@@ -64279,10 +64307,10 @@ var require_dkim = /* @__PURE__ */ __commonJSMin(((exports, module) => {
64279
64307
  }
64280
64308
  cleanup() {
64281
64309
  if (!this.cache || !this.cachePath) return;
64282
- fs$3.unlink(this.cachePath, () => false);
64310
+ fs$2.unlink(this.cachePath, () => false);
64283
64311
  }
64284
64312
  createReadCache() {
64285
- this.cache = fs$3.createReadStream(this.cachePath);
64313
+ this.cache = fs$2.createReadStream(this.cachePath);
64286
64314
  this.cache.once("error", (err) => {
64287
64315
  this.cleanup();
64288
64316
  this.output.emit("error", err);
@@ -64328,7 +64356,7 @@ var require_dkim = /* @__PURE__ */ __commonJSMin(((exports, module) => {
64328
64356
  }
64329
64357
  createWriteCache() {
64330
64358
  this.output.usingCache = true;
64331
- this.cache = fs$3.createWriteStream(this.cachePath);
64359
+ this.cache = fs$2.createWriteStream(this.cachePath);
64332
64360
  this.cache.once("error", (err) => {
64333
64361
  this.cleanup();
64334
64362
  this.relaxedBody.unpipe(this.cache);
@@ -70336,12 +70364,15 @@ function UserMixin(Base) {
70336
70364
  uin,
70337
70365
  keys: [
70338
70366
  { key: 102 },
70367
+ { key: 103 },
70339
70368
  { key: 104 },
70340
70369
  { key: 105 },
70370
+ { key: 107 },
70341
70371
  { key: 20002 },
70342
70372
  { key: 20003 },
70343
70373
  { key: 20009 },
70344
70374
  { key: 20020 },
70375
+ { key: 20021 },
70345
70376
  { key: 20026 },
70346
70377
  { key: 20031 },
70347
70378
  { key: 20037 },
@@ -70359,6 +70390,7 @@ function UserMixin(Base) {
70359
70390
  const info = Oidb.FetchUserInfoResp.decode(oidbRespBody);
70360
70391
  const numbers = Object.fromEntries(info.body.properties.numberProperties.map((p) => [p.key, p.value]));
70361
70392
  const bytes = Object.fromEntries(info.body.properties.bytesProperties.map((p) => [p.key, p.value]));
70393
+ const vipInfo = (bytes[107] ? Misc.UserInfoBusiness.decode(bytes[107]) : void 0)?.body.lists.find((e) => e.type === 1);
70362
70394
  return {
70363
70395
  uin: info.body.uin,
70364
70396
  nick: bytes[20002]?.toString() ?? "",
@@ -70373,7 +70405,12 @@ function UserMixin(Base) {
70373
70405
  birthdayYear: bytes[20031]?.[0] << 8 | bytes[20031]?.[1],
70374
70406
  birthdayMonth: bytes[20031]?.[2] ?? 0,
70375
70407
  birthdayDay: bytes[20031]?.[3] ?? 0,
70376
- labels: bytes[104] ? Misc.UserInfoLabel.decode(bytes[104]).labels.map((e) => e.content) : []
70408
+ labels: bytes[104] ? Misc.UserInfoLabel.decode(bytes[104]).labels.map((e) => e.content) : [],
70409
+ school: bytes[20021]?.toString() ?? "",
70410
+ remark: bytes[103]?.toString() ?? "",
70411
+ isVip: !!vipInfo,
70412
+ isYearsVip: !!vipInfo?.isYear,
70413
+ vipLevel: vipInfo?.level ?? 0
70377
70414
  };
70378
70415
  }
70379
70416
  async fetchUserLoginDays(uin) {