koishi-plugin-echo-cave 1.29.11 → 1.29.12

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.
Files changed (2) hide show
  1. package/lib/index.cjs +84 -42
  2. package/package.json +3 -3
package/lib/index.cjs CHANGED
@@ -34239,7 +34239,13 @@ async function mutateMessageContent(ctx, content, handler) {
34239
34239
  }
34240
34240
  async function processStoredMessageMedia(ctx, content, cfg, channelId, progressOptions) {
34241
34241
  const rewritten = await mutateMessageContent(ctx, content, async (element) => {
34242
- return await processMediaElement(ctx, element, cfg, channelId, progressOptions);
34242
+ return await processMediaElement(
34243
+ ctx,
34244
+ element,
34245
+ cfg,
34246
+ channelId,
34247
+ progressOptions
34248
+ );
34243
34249
  });
34244
34250
  return rewritten.content;
34245
34251
  }
@@ -34298,7 +34304,9 @@ async function deleteCavesForOversizedMedia(ctx, caves, cfg) {
34298
34304
  await removeCaveByEntryId(ctx, cave.entryId);
34299
34305
  ctx.logger.info(`Deleted cave #${cave.id} because its media exceeded the size limit.`);
34300
34306
  } catch (error2) {
34301
- ctx.logger.warn(`Failed to delete cave #${cave.id} during oversized media cleanup: ${error2}`);
34307
+ ctx.logger.warn(
34308
+ `Failed to delete cave #${cave.id} during oversized media cleanup: ${error2}`
34309
+ );
34302
34310
  }
34303
34311
  }
34304
34312
  }
@@ -35534,7 +35542,9 @@ async function restoreReindexBackup(ctx, session, cfg, backupPathInput) {
35534
35542
  }
35535
35543
  async function runScheduledReindex(ctx, cfg) {
35536
35544
  if (caveMaintenanceLock) {
35537
- ctx.logger.warn("Skipped scheduled cave reindex because another maintenance task is running.");
35545
+ ctx.logger.warn(
35546
+ "Skipped scheduled cave reindex because another maintenance task is running."
35547
+ );
35538
35548
  return;
35539
35549
  }
35540
35550
  const caves = (await getAllCaves(ctx)).sort((a5, b5) => a5.id - b5.id);
@@ -35594,7 +35604,13 @@ function registerAutoReindexScheduler(ctx, cfg) {
35594
35604
  async function reconstructForwardMsg(ctx, session, message, cfg, processMedia = true) {
35595
35605
  return Promise.all(
35596
35606
  message.map(async (msg) => {
35597
- const content = await processForwardMessageContent(ctx, session, msg, cfg, processMedia);
35607
+ const content = await processForwardMessageContent(
35608
+ ctx,
35609
+ session,
35610
+ msg,
35611
+ cfg,
35612
+ processMedia
35613
+ );
35598
35614
  const senderNickname = msg.sender.nickname;
35599
35615
  let senderUserId = msg.sender.user_id;
35600
35616
  senderUserId = senderUserId === 1094950020 ? await getUserIdFromNickname(session, senderNickname, senderUserId) : senderUserId;
@@ -35677,13 +35693,7 @@ async function addCave(ctx, session, cfg, userIds) {
35677
35693
  if (quote.elements[0].type === "forward") {
35678
35694
  type = "forward";
35679
35695
  rawForwardMessage = await session.onebot.getForwardMsg(messageId);
35680
- const message = await reconstructForwardMsg(
35681
- ctx,
35682
- session,
35683
- rawForwardMessage,
35684
- cfg,
35685
- false
35686
- );
35696
+ const message = await reconstructForwardMsg(ctx, session, rawForwardMessage, cfg, false);
35687
35697
  hasMedia = await messageContainsMedia(message);
35688
35698
  needsDeferredMediaProcessing = true;
35689
35699
  content = JSON.stringify(message);
@@ -35744,7 +35754,13 @@ async function addCave(ctx, session, cfg, userIds) {
35744
35754
  session,
35745
35755
  cfg,
35746
35756
  hasMedia,
35747
- async (progressOptions) => await processStoredMessageMedia(ctx, content, cfg, channelId, progressOptions)
35757
+ async (progressOptions) => await processStoredMessageMedia(
35758
+ ctx,
35759
+ content,
35760
+ cfg,
35761
+ channelId,
35762
+ progressOptions
35763
+ )
35748
35764
  );
35749
35765
  }
35750
35766
  const finalParsedUserIds = selectedUsersWithNames.length !== 0 ? selectedUsersWithNames.map((user) => user.userId) : parsedUserIds;
@@ -35791,7 +35807,9 @@ async function formatRelatedUsers(ctx, session, selectedUsersWithNames, relatedU
35791
35807
  }
35792
35808
  if (relatedUserIds.length !== 0) {
35793
35809
  const relatedUserNames = await Promise.all(
35794
- relatedUserIds.map(async (relatedUserId) => await getUserName(ctx, session, relatedUserId))
35810
+ relatedUserIds.map(
35811
+ async (relatedUserId) => await getUserName(ctx, session, relatedUserId)
35812
+ )
35795
35813
  );
35796
35814
  return relatedUserNames.join(", ");
35797
35815
  }
@@ -35823,7 +35841,11 @@ async function markForwardSelectionGuideCompleted(ctx, userId) {
35823
35841
  });
35824
35842
  return;
35825
35843
  }
35826
- await ctx.database.set("echo_cave_user_state", { userId }, { hasCompletedForwardSelection: true });
35844
+ await ctx.database.set(
35845
+ "echo_cave_user_state",
35846
+ { userId },
35847
+ { hasCompletedForwardSelection: true }
35848
+ );
35827
35849
  }
35828
35850
  async function selectRelatedUsers(ctx, session, cfg, forwardUsers) {
35829
35851
  const hasCompletedGuide = await getForwardSelectionGuideCompleted(ctx, session.userId);
@@ -35859,7 +35881,9 @@ ${promptFooter}`;
35859
35881
  selectedUsers = validIndices.map((index) => forwardUsers[index]);
35860
35882
  } else {
35861
35883
  sentMessageIds.push(
35862
- ...normalizeMessageIds(await session.send(session.text(".invalidSelection")))
35884
+ ...normalizeMessageIds(
35885
+ await session.send(session.text(".invalidSelection"))
35886
+ )
35863
35887
  );
35864
35888
  return true;
35865
35889
  }
@@ -35913,7 +35937,9 @@ async function confirmSpecialForwardStorage(ctx, session, previewMessage) {
35913
35937
  return false;
35914
35938
  }
35915
35939
  sentMessageIds.push(
35916
- ...normalizeMessageIds(await session.send(session.text(".specialForwardUserConfirmRetry")))
35940
+ ...normalizeMessageIds(
35941
+ await session.send(session.text(".specialForwardUserConfirmRetry"))
35942
+ )
35917
35943
  );
35918
35944
  return true;
35919
35945
  },
@@ -36003,7 +36029,9 @@ async function deleteCaves(ctx, session, cfg, ids) {
36003
36029
  }
36004
36030
  const failedIds = [];
36005
36031
  const actor = await getDeleteActor(ctx, session);
36006
- const caves = (await getCavesByPublicIds(ctx, ids)).filter((cave) => cave.channelId === session.channelId);
36032
+ const caves = (await getCavesByPublicIds(ctx, ids)).filter(
36033
+ (cave) => cave.channelId === session.channelId
36034
+ );
36007
36035
  for (const cave of caves) {
36008
36036
  const permissionFailure = await getDeletePermissionFailure(ctx, session, cfg, cave, actor);
36009
36037
  if (permissionFailure) {
@@ -36080,7 +36108,9 @@ async function handleDailyReportOnFailure(ctx, session, caveMsg, cfg, errorMessa
36080
36108
  });
36081
36109
  } catch (recordError) {
36082
36110
  const recordErrorMessage = normalizeErrorMessage(ctx, recordError);
36083
- ctx.logger.error(`Failed to record cave send failure for #${caveMsg.id}: ${recordErrorMessage}`);
36111
+ ctx.logger.error(
36112
+ `Failed to record cave send failure for #${caveMsg.id}: ${recordErrorMessage}`
36113
+ );
36084
36114
  return session.text("commands.cave.messages.sendFailedReportRecordFailed", {
36085
36115
  id: caveMsg.id
36086
36116
  });
@@ -36109,7 +36139,9 @@ function scheduleNextSendFailureSummary(ctx, cfg) {
36109
36139
  try {
36110
36140
  await flushSendFailureSummary(ctx, cfg);
36111
36141
  } catch (error2) {
36112
- ctx.logger.error(`Failed to flush cave send failure summary: ${normalizeErrorMessage(ctx, error2)}`);
36142
+ ctx.logger.error(
36143
+ `Failed to flush cave send failure summary: ${normalizeErrorMessage(ctx, error2)}`
36144
+ );
36113
36145
  }
36114
36146
  scheduleNextSendFailureSummary(ctx, cfg);
36115
36147
  }, delay);
@@ -36117,7 +36149,9 @@ function scheduleNextSendFailureSummary(ctx, cfg) {
36117
36149
  async function flushSendFailureSummary(ctx, cfg) {
36118
36150
  const adminId = cfg.sendFailureSummaryAdminId?.trim();
36119
36151
  if (!adminId) {
36120
- ctx.logger.warn("Skipped cave send failure summary because sendFailureSummaryAdminId is empty.");
36152
+ ctx.logger.warn(
36153
+ "Skipped cave send failure summary because sendFailureSummaryAdminId is empty."
36154
+ );
36121
36155
  return;
36122
36156
  }
36123
36157
  const failures = await ctx.database.get("echo_cave_send_failure", {});
@@ -36129,7 +36163,9 @@ async function flushSendFailureSummary(ctx, cfg) {
36129
36163
  const [platform, selfId] = botKey.split(":");
36130
36164
  const bot = ctx.bots.find((item) => item.platform === platform && item.selfId === selfId);
36131
36165
  if (!bot) {
36132
- ctx.logger.warn(`Skipped cave send failure summary because bot ${botKey} is unavailable.`);
36166
+ ctx.logger.warn(
36167
+ `Skipped cave send failure summary because bot ${botKey} is unavailable.`
36168
+ );
36133
36169
  continue;
36134
36170
  }
36135
36171
  const messages = buildSummaryMessages(ctx, entries);
@@ -36528,7 +36564,11 @@ async function getCave(ctx, session, cfg, target) {
36528
36564
  if (parseResult.parsedUserIds.length === 0) {
36529
36565
  return session.text("echo-cave.general.noMsgWithId");
36530
36566
  }
36531
- const targetedResult = await getTargetedUserCave(ctx, session, parseResult.parsedUserIds[0]);
36567
+ const targetedResult = await getTargetedUserCave(
36568
+ ctx,
36569
+ session,
36570
+ parseResult.parsedUserIds[0]
36571
+ );
36532
36572
  if (!targetedResult) {
36533
36573
  return session.text(".noMatchingUserCave");
36534
36574
  }
@@ -36579,9 +36619,13 @@ async function bindUsersToCave(ctx, session, id, userIds) {
36579
36619
  if (!isAllUsersInGroup) {
36580
36620
  return session.text("echo-cave.user.userNotInGroup");
36581
36621
  }
36582
- await ctx.database.set(ACTIVE_CAVE_TABLE, { entryId: cave.entryId }, {
36583
- relatedUsers: parsedUserIds
36584
- });
36622
+ await ctx.database.set(
36623
+ ACTIVE_CAVE_TABLE,
36624
+ { entryId: cave.entryId },
36625
+ {
36626
+ relatedUsers: parsedUserIds
36627
+ }
36628
+ );
36585
36629
  return session.text(".userBoundSuccess", [id]);
36586
36630
  }
36587
36631
 
@@ -37094,7 +37138,9 @@ var Config = import_koishi2.Schema.intersect([
37094
37138
  enableForwardUserSelection: import_koishi2.Schema.boolean().default(true),
37095
37139
  forwardSelectTimeout: import_koishi2.Schema.number().default(20),
37096
37140
  autoBindSingleForwardUser: import_koishi2.Schema.boolean().default(false),
37097
- forwardSpecialUserHandlingMode: import_koishi2.Schema.union(["ignore", "reject", "confirm"]).default("ignore")
37141
+ forwardSpecialUserHandlingMode: import_koishi2.Schema.union(["ignore", "reject", "confirm"]).default(
37142
+ "ignore"
37143
+ )
37098
37144
  }).description("\u6D88\u606F\u884C\u4E3A"),
37099
37145
  import_koishi2.Schema.object({
37100
37146
  deleteMediaWhenDeletingMsg: import_koishi2.Schema.boolean().default(true),
@@ -37118,7 +37164,9 @@ var Config = import_koishi2.Schema.intersect([
37118
37164
  s3PresignExpiresIn: import_koishi2.Schema.number().default(3600).min(60).max(604800)
37119
37165
  }).description("\u5A92\u4F53\u5B58\u50A8"),
37120
37166
  import_koishi2.Schema.object({
37121
- sendFailureHandlingMode: import_koishi2.Schema.union(["auto-delete", "daily-report", "ignore"]).default("ignore"),
37167
+ sendFailureHandlingMode: import_koishi2.Schema.union(["auto-delete", "daily-report", "ignore"]).default(
37168
+ "ignore"
37169
+ ),
37122
37170
  sendFailureSummaryAdminId: import_koishi2.Schema.string().default(""),
37123
37171
  sendFailureSummaryTime: import_koishi2.Schema.string().default("09:00")
37124
37172
  }).description("\u53D1\u9001\u5931\u8D25\u5904\u7406"),
@@ -37241,22 +37289,16 @@ function apply(ctx, cfg) {
37241
37289
  await database.upsert("echo_cave_v2", data2);
37242
37290
  }
37243
37291
  );
37244
- ctx.model.migrate(
37245
- "echo_cave_v2",
37246
- {
37247
- entryId: "unsigned"
37248
- },
37249
- async (database) => {
37250
- const existing = await database.get(ACTIVE_CAVE_TABLE, {});
37251
- if (existing.length > 0) {
37252
- return;
37253
- }
37254
- const data2 = (await database.get("echo_cave_v2", {})).sort((a5, b5) => a5.id - b5.id);
37255
- for (const record of data2) {
37256
- await database.create(ACTIVE_CAVE_TABLE, toV3Record(record));
37257
- }
37292
+ ctx.model.migrate("echo_cave_v2", {}, async (database) => {
37293
+ const existing = await database.get(ACTIVE_CAVE_TABLE, {});
37294
+ if (existing.length > 0) {
37295
+ return;
37258
37296
  }
37259
- );
37297
+ const data2 = (await database.get("echo_cave_v2", {})).sort((a5, b5) => a5.id - b5.id);
37298
+ for (const record of data2) {
37299
+ await database.create(ACTIVE_CAVE_TABLE, toV3Record(record));
37300
+ }
37301
+ });
37260
37302
  ctx.command("cave [target:text]").action(
37261
37303
  async ({ session }, target) => await getCave(ctx, session, cfg, target)
37262
37304
  );
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-echo-cave",
3
3
  "description": "Group echo cave",
4
- "version": "1.29.11",
4
+ "version": "1.29.12",
5
5
  "main": "lib/index.cjs",
6
6
  "typings": "lib/index.d.ts",
7
7
  "type": "module",
@@ -51,8 +51,8 @@
51
51
  "@types/node": "^24.12.2",
52
52
  "conventional-changelog-conventionalcommits": "^9.3.1",
53
53
  "esbuild": "^0.28.0",
54
- "oxfmt": "^0.44.0",
55
- "oxlint": "^1.59.0",
54
+ "oxfmt": "^0.45.0",
55
+ "oxlint": "^1.60.0",
56
56
  "semantic-release": "^25.0.3",
57
57
  "typescript": "^6.0.2"
58
58
  }