@karinjs/adapter-qqbot 2.2.1 → 3.0.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.
@@ -1,5 +1,9 @@
1
1
  //#region src/apps/cleanup.d.ts
2
- /** 每 10 分钟清理一次过期的 getMsg/getHistoryMsg 本地缓存。 */
3
- declare const clearMessageCache: import("node-karin").Task | undefined;
2
+ /**
3
+ * 每 10 分钟清理一次过期的 getMsg/getHistoryMsg 本地缓存与 file_info 上传缓存。
4
+ *
5
+ * file_info 上传缓存不依赖 messageCache 开关,因此任务始终注册。
6
+ */
7
+ declare const clearMessageCache: import("node-karin").Task;
4
8
  //#endregion
5
9
  export { clearMessageCache };
@@ -1,22 +1,17 @@
1
- import { n as config } from "../config-B_Gc9JKZ.js";
2
- import { t as getMessageStore } from "../message-Dt4QkDYn.js";
1
+ import { t as getMessageStore } from "../message-BTGL3TSn.js";
3
2
  import karin from "node-karin";
4
3
 
5
4
  //#region src/apps/cleanup.ts
6
5
  /**
7
- * 判断是否有任意 QQBot 配置开启消息缓存。
6
+ * 每 10 分钟清理一次过期的 getMsg/getHistoryMsg 本地缓存与 file_info 上传缓存。
8
7
  *
9
- * @returns true 表示需要注册消息缓存清理任务。
8
+ * file_info 上传缓存不依赖 messageCache 开关,因此任务始终注册。
10
9
  */
11
- const enabledMessageCache = () => {
12
- return config().some((item) => item.messageCache.enable);
13
- };
14
- /** 每 10 分钟清理一次过期的 getMsg/getHistoryMsg 本地缓存。 */
15
- const clearMessageCache = enabledMessageCache() ? karin.task("qqbot 适配器消息缓存清理", "*/10 * * * *", async () => await getMessageStore().cleanupExpired(), {
10
+ const clearMessageCache = karin.task("qqbot 适配器消息缓存清理", "*/10 * * * *", async () => await getMessageStore().cleanupExpired(), {
16
11
  name: "qqbot 适配器消息缓存清理任务",
17
12
  log: false,
18
13
  type: "skip"
19
- }) : void 0;
14
+ });
20
15
 
21
16
  //#endregion
22
17
  export { clearMessageCache };
@@ -1,5 +1,5 @@
1
- import { m as log } from "../config-B_Gc9JKZ.js";
2
- import { n as runQrOnboard } from "../onboard-BXQ1cG8h.js";
1
+ import { m as log } from "../config-BUuU6FnQ.js";
2
+ import { n as runQrOnboard } from "../onboard-vIEoe9dB.js";
3
3
  import karin, { segment } from "node-karin";
4
4
 
5
5
  //#region src/apps/login.ts
@@ -128,7 +128,8 @@ const config = () => {
128
128
  fs.writeFileSync(configPath, JSON.stringify([], null, 2));
129
129
  }
130
130
  if (cache) return cache;
131
- const result = formatConfig(requireFileSync(configPath));
131
+ const user = requireFileSync(configPath);
132
+ const result = formatConfig(user);
132
133
  syncCache(result);
133
134
  return result;
134
135
  };
@@ -179,10 +180,7 @@ const formatConfig = (user) => {
179
180
  ...def.markdown,
180
181
  ...markdown
181
182
  },
182
- messageCache: {
183
- ...def.messageCache,
184
- ...messageCache
185
- },
183
+ messageCache: normalizeMessageCache(def.messageCache, messageCache),
186
184
  event: {
187
185
  ...def.event,
188
186
  ...event
@@ -190,6 +188,45 @@ const formatConfig = (user) => {
190
188
  };
191
189
  });
192
190
  };
191
+ const MESSAGE_CACHE_LEVELS = [
192
+ "minimal",
193
+ "standard",
194
+ "full"
195
+ ];
196
+ /**
197
+ * 规范化消息缓存配置,非法枚举与越界数值回落默认值。
198
+ *
199
+ * @param def 默认消息缓存配置。
200
+ * @param user 用户消息缓存配置。
201
+ * @returns 补齐并夹取后的消息缓存配置。
202
+ */
203
+ const normalizeMessageCache = (def, user) => {
204
+ const merged = {
205
+ ...def,
206
+ ...user
207
+ };
208
+ return {
209
+ enable: !!merged.enable,
210
+ self: !!merged.self,
211
+ level: MESSAGE_CACHE_LEVELS.includes(merged.level) ? merged.level : def.level,
212
+ ttlHours: clampNumber(merged.ttlHours, 1, 720, def.ttlHours),
213
+ maxRows: clampNumber(merged.maxRows, 1e3, 5e6, def.maxRows)
214
+ };
215
+ };
216
+ /**
217
+ * 将数值夹取到闭区间;非法值返回 fallback。
218
+ *
219
+ * @param value 用户输入值。
220
+ * @param min 最小值。
221
+ * @param max 最大值。
222
+ * @param fallback 非法时使用的默认值。
223
+ * @returns 合法数值。
224
+ */
225
+ const clampNumber = (value, min, max, fallback) => {
226
+ const num = Number(value);
227
+ if (!Number.isFinite(num)) return fallback;
228
+ return Math.min(Math.max(Math.trunc(num), min), max);
229
+ };
193
230
  /**
194
231
  * 默认配置
195
232
  */
@@ -216,7 +253,10 @@ const getDefaultConfig = () => [{
216
253
  markdown: { enable: true },
217
254
  messageCache: {
218
255
  enable: false,
219
- self: false
256
+ self: false,
257
+ level: "standard",
258
+ ttlHours: 24,
259
+ maxRows: 2e5
220
260
  },
221
261
  event: { type: 2 }
222
262
  }];