koishi-plugin-echo-cave 1.7.5 → 1.9.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.cjs CHANGED
@@ -4,6 +4,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
7
10
  var __export = (target, all) => {
8
11
  for (var name2 in all)
9
12
  __defProp(target, name2, { get: all[name2], enumerable: true });
@@ -26,6 +29,51 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
29
  ));
27
30
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
31
 
32
+ // src/locales/zh-CN.json
33
+ var require_zh_CN = __commonJS({
34
+ "src/locales/zh-CN.json"(exports2, module2) {
35
+ module2.exports = {
36
+ config: {
37
+ adminMessageProtection: "\u5F00\u542F\u7BA1\u7406\u5458\u6D88\u606F\u4FDD\u62A4\uFF0C\u5F00\u542F\u540E\u7BA1\u7406\u5458\u53D1\u5E03\u7684\u6D88\u606F\u53EA\u80FD\u7531\u7BA1\u7406\u5458\u5220\u9664",
38
+ allowContributorDelete: "\u5141\u8BB8\u6295\u7A3F\u8005\u5220\u9664\u81EA\u5DF1\u6295\u7A3F\u7684\u56DE\u58F0\u6D1E",
39
+ allowSenderDelete: "\u5141\u8BB8\u539F\u59CB\u53D1\u9001\u8005\u5220\u9664\u88AB\u6295\u7A3F\u7684\u56DE\u58F0\u6D1E"
40
+ },
41
+ general: {
42
+ privateChatReminder: "\u274C \u8BF7\u5728\u7FA4\u804A\u4E2D\u4F7F\u7528\u8BE5\u547D\u4EE4\uFF01",
43
+ noMsgWithId: "\u{1F50D} \u672A\u627E\u5230\u8BE5 ID \u7684\u56DE\u58F0\u6D1E\u6D88\u606F"
44
+ },
45
+ commands: {
46
+ cave: {
47
+ description: "\u968F\u673A\u83B7\u53D6 / \u83B7\u53D6\u7279\u5B9A id \u7684\u56DE\u58F0\u6D1E\u4FE1\u606F",
48
+ messages: {
49
+ noMsgInCave: '\u{1F680} \u56DE\u58F0\u6D1E\u4E2D\u6682\u65E0\u6D88\u606F\uFF0C\u5FEB\u4F7F\u7528 "cave.echo" \u547D\u4EE4\u6DFB\u52A0\u7B2C\u4E00\u6761\u6D88\u606F\u5427\uFF01'
50
+ }
51
+ },
52
+ "cave.echo": {
53
+ description: "\u5C06\u6D88\u606F\u5B58\u5165\u56DE\u58F0\u6D1E",
54
+ messages: {
55
+ noMsgQuoted: "\u{1F4A1} \u8BF7\u5F15\u7528\u4E00\u6761\u6D88\u606F\u540E\u518D\u4F7F\u7528\u6B64\u547D\u4EE4\uFF01",
56
+ existingMsg: "\u267B\uFE0F \u8BE5\u6D88\u606F\u5DF2\u5B58\u5728\u4E8E\u56DE\u58F0\u6D1E\u7A74\u4E2D\uFF01",
57
+ msgSaved: "\u2705 \u56DE\u58F0\u6D1E\u6D88\u606F\u5DF2\u6210\u529F\u5B58\u5165\uFF0C\u6D88\u606F ID\uFF1A{0}",
58
+ msgFailedToSave: "\u274C \u56DE\u58F0\u6D1E\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF01"
59
+ }
60
+ },
61
+ "cave.wipe": {
62
+ description: "\u62B9\u53BB\u7279\u5B9A id \u7684\u56DE\u58F0\u6D1E\u4FE1\u606F",
63
+ messages: {
64
+ noIdProvided: "\u274C \u8BF7\u63D0\u4F9B\u8981\u5220\u9664\u7684\u56DE\u58F0\u6D1E\u6D88\u606F ID\uFF01",
65
+ adminOnly: "\u26D4 \u8BE5\u6D88\u606F\u7531\u7BA1\u7406\u5458\u53D1\u5E03\uFF0C\u5DF2\u5F00\u542F\u7BA1\u7406\u5458\u6D88\u606F\u4FDD\u62A4\uFF0C\u53EA\u6709\u7BA1\u7406\u5458\u53EF\u4EE5\u5220\u9664\u3002",
66
+ permissionDenied: "\u26D4 \u60A8\u6CA1\u6709\u6743\u9650\u5220\u9664\u6B64\u6D88\u606F\uFF01\u53EA\u6709\u7BA1\u7406\u5458\u53EF\u4EE5\u5220\u9664\u3002",
67
+ contributorDeleteDenied: "\u26D4 \u60A8\u6CA1\u6709\u6743\u9650\u5220\u9664\u6B64\u6D88\u606F\uFF01\u5F53\u524D\u914D\u7F6E\u4E0D\u5141\u8BB8\u6295\u7A3F\u8005\u5220\u9664\u56DE\u58F0\u6D1E\u3002",
68
+ senderDeleteDenied: "\u26D4 \u60A8\u6CA1\u6709\u6743\u9650\u5220\u9664\u6B64\u6D88\u606F\uFF01\u5F53\u524D\u914D\u7F6E\u4E0D\u5141\u8BB8\u539F\u59CB\u53D1\u9001\u8005\u5220\u9664\u56DE\u58F0\u6D1E\u3002",
69
+ msgDeleted: "\u2705 \u5DF2\u6210\u529F\u62B9\u53BB\u56DE\u58F0\u6D1E\u6D88\u606F ID\uFF1A{0}"
70
+ }
71
+ }
72
+ }
73
+ };
74
+ }
75
+ });
76
+
29
77
  // src/index.ts
30
78
  var index_exports = {};
31
79
  __export(index_exports, {
@@ -276,9 +324,14 @@ var import_node_path2 = __toESM(require("node:path"), 1);
276
324
  var name = "echo-cave";
277
325
  var inject = ["database"];
278
326
  var Config = import_koishi.Schema.object({
279
- adminMessageProtection: import_koishi.Schema.boolean().description("\u5F00\u542F\u7BA1\u7406\u5458\u6D88\u606F\u4FDD\u62A4\uFF0C\u5F00\u542F\u540E\u7BA1\u7406\u5458\u53D1\u5E03\u7684\u6D88\u606F\u53EA\u80FD\u7531\u7BA1\u7406\u5458\u5220\u9664").default(false)
327
+ adminMessageProtection: import_koishi.Schema.boolean().default(false),
328
+ allowContributorDelete: import_koishi.Schema.boolean().default(true),
329
+ allowSenderDelete: import_koishi.Schema.boolean().default(true)
330
+ }).i18n({
331
+ "zh-CN": require_zh_CN().config
280
332
  });
281
333
  function apply(ctx, cfg) {
334
+ ctx.i18n.define("zh-CN", require_zh_CN());
282
335
  const imgPath = import_node_path2.default.join(ctx.baseDir, "data", "cave", "images");
283
336
  if (!import_fs.default.existsSync(imgPath)) {
284
337
  import_fs.default.mkdirSync(imgPath, { recursive: true });
@@ -300,13 +353,11 @@ function apply(ctx, cfg) {
300
353
  unique: ["content"]
301
354
  }
302
355
  );
303
- ctx.command("cave [id:number]", "\u968F\u673A\u83B7\u53D6 / \u83B7\u53D6\u7279\u5B9A id \u7684\u56DE\u58F0\u6D1E\u4FE1\u606F").action(
356
+ ctx.command("cave [id:number]").action(
304
357
  async ({ session }, id) => await getCave(ctx, session, id)
305
358
  );
306
- ctx.command("cave.echo", "\u5C06\u6D88\u606F\u5B58\u5165\u56DE\u58F0\u6D1E").action(
307
- async ({ session }) => await addCave(ctx, session)
308
- );
309
- ctx.command("cave.wipe <id:number>", "\u62B9\u53BB\u7279\u5B9A id \u7684\u56DE\u58F0\u6D1E\u4FE1\u606F").action(
359
+ ctx.command("cave.echo").action(async ({ session }) => await addCave(ctx, session));
360
+ ctx.command("cave.wipe <id:number>").action(
310
361
  async ({ session }, id) => await deleteCave(ctx, session, cfg, id)
311
362
  );
312
363
  ctx.command("cave.listen", "\u83B7\u5F97\u7531\u81EA\u5DF1\u6295\u7A3F\u7684\u56DE\u58F0\u6D1E\u5217\u8868").action(
@@ -318,7 +369,7 @@ function apply(ctx, cfg) {
318
369
  }
319
370
  async function getCaveListByUser(ctx, session) {
320
371
  if (!session.guildId) {
321
- return "\u274C \u8BF7\u5728\u7FA4\u804A\u4E2D\u4F7F\u7528\u8BE5\u547D\u4EE4\uFF01";
372
+ return session.text("general.privateChatReminder");
322
373
  }
323
374
  const { userId, channelId } = session;
324
375
  const caves = await ctx.database.get("echo_cave", {
@@ -338,7 +389,7 @@ async function getCaveListByUser(ctx, session) {
338
389
  }
339
390
  async function getCaveListByOriginUser(ctx, session) {
340
391
  if (!session.guildId) {
341
- return "\u274C \u8BF7\u5728\u7FA4\u804A\u4E2D\u4F7F\u7528\u8BE5\u547D\u4EE4\uFF01";
392
+ return session.text("general.privateChatReminder");
342
393
  }
343
394
  const { userId, channelId } = session;
344
395
  const caves = await ctx.database.get("echo_cave", {
@@ -358,7 +409,7 @@ async function getCaveListByOriginUser(ctx, session) {
358
409
  }
359
410
  async function getCave(ctx, session, id) {
360
411
  if (!session.guildId) {
361
- return "\u274C \u8BF7\u5728\u7FA4\u804A\u4E2D\u4F7F\u7528\u8BE5\u547D\u4EE4\uFF01";
412
+ return session.text("general.privateChatReminder");
362
413
  }
363
414
  let caveMsg;
364
415
  const { channelId } = session;
@@ -367,7 +418,7 @@ async function getCave(ctx, session, id) {
367
418
  channelId
368
419
  });
369
420
  if (caves.length === 0) {
370
- return '\u{1F680} \u56DE\u58F0\u6D1E\u4E2D\u6682\u65E0\u6D88\u606F\uFF0C\u5FEB\u4F7F\u7528 "cave.echo" \u547D\u4EE4\u6DFB\u52A0\u7B2C\u4E00\u6761\u6D88\u606F\u5427\uFF01';
421
+ return session.text(".noMsgInCave");
371
422
  }
372
423
  caveMsg = caves[Math.floor(Math.random() * caves.length)];
373
424
  } else {
@@ -376,7 +427,7 @@ async function getCave(ctx, session, id) {
376
427
  channelId
377
428
  });
378
429
  if (caves.length === 0) {
379
- return "\u{1F50D} \u672A\u627E\u5230\u8BE5 ID \u7684\u56DE\u58F0\u6D1E\u6D88\u606F";
430
+ return session.text("general.noMsgWithId");
380
431
  }
381
432
  caveMsg = caves[0];
382
433
  }
@@ -384,14 +435,14 @@ async function getCave(ctx, session, id) {
384
435
  }
385
436
  async function deleteCave(ctx, session, cfg, id) {
386
437
  if (!session.guildId) {
387
- return "\u274C \u8BF7\u5728\u7FA4\u804A\u4E2D\u4F7F\u7528\u8BE5\u547D\u4EE4\uFF01";
438
+ return session.text("general.privateChatReminder");
388
439
  }
389
440
  if (!id) {
390
- return "\u274C \u8BF7\u63D0\u4F9B\u8981\u5220\u9664\u7684\u56DE\u58F0\u6D1E\u6D88\u606F ID\uFF01";
441
+ return session.text(".noIdProvided");
391
442
  }
392
443
  const caves = await ctx.database.get("echo_cave", id);
393
444
  if (caves.length === 0) {
394
- return "\u{1F50D} \u672A\u627E\u5230\u8BE5 ID \u7684\u56DE\u58F0\u6D1E\u6D88\u606F";
445
+ return session.text("general.noMsgWithId");
395
446
  }
396
447
  const caveMsg = caves[0];
397
448
  const currentUserId = session.userId;
@@ -402,21 +453,31 @@ async function deleteCave(ctx, session, cfg, id) {
402
453
  const caveUser = await ctx.database.getUser(session.platform, caveMsg.userId);
403
454
  const isCaveUserAdmin = caveUser.authority >= 4;
404
455
  if (isCaveUserAdmin && !isCurrentUserAdmin) {
405
- return "\u26D4 \u8BE5\u6D88\u606F\u7531\u7BA1\u7406\u5458\u53D1\u5E03\uFF0C\u5DF2\u5F00\u542F\u7BA1\u7406\u5458\u6D88\u606F\u4FDD\u62A4\uFF0C\u53EA\u6709\u7BA1\u7406\u5458\u53EF\u4EE5\u5220\u9664\u3002";
456
+ return session.text(".adminOnly");
406
457
  }
407
458
  }
408
- if (currentUserId !== caveMsg.userId && currentUserId !== caveMsg.originUserId && !isCurrentUserAdmin) {
409
- return "\u26D4 \u60A8\u6CA1\u6709\u6743\u9650\u5220\u9664\u6B64\u6D88\u606F\uFF01\u53EA\u6709\u6D88\u606F\u7684\u5B58\u50A8\u8005\u3001\u539F\u59CB\u53D1\u9001\u8005\u6216\u7BA1\u7406\u5458\u53EF\u4EE5\u5220\u9664\u3002";
459
+ if (!isCurrentUserAdmin) {
460
+ if (currentUserId === caveMsg.userId) {
461
+ if (!cfg.allowContributorDelete) {
462
+ return session.text(".contributorDeleteDenied");
463
+ }
464
+ } else if (currentUserId === caveMsg.originUserId) {
465
+ if (!cfg.allowSenderDelete) {
466
+ return session.text(".senderDeleteDenied");
467
+ }
468
+ } else {
469
+ return session.text(".permissionDenied");
470
+ }
410
471
  }
411
472
  await ctx.database.remove("echo_cave", id);
412
- return `\u2705 \u5DF2\u6210\u529F\u62B9\u53BB\u56DE\u58F0\u6D1E\u6D88\u606F ID\uFF1A${id}`;
473
+ return session.text(".msgDeleted", [id]);
413
474
  }
414
475
  async function addCave(ctx, session) {
415
476
  if (!session.guildId) {
416
- return "\u274C \u8BF7\u5728\u7FA4\u804A\u4E2D\u4F7F\u7528\u8BE5\u547D\u4EE4\uFF01";
477
+ return session.text("general.privateChatReminder");
417
478
  }
418
479
  if (!session.quote) {
419
- return "\u{1F4A1} \u8BF7\u5F15\u7528\u4E00\u6761\u6D88\u606F\u540E\u518D\u4F7F\u7528\u6B64\u547D\u4EE4\uFF01";
480
+ return session.text(".noMsgQuoted");
420
481
  }
421
482
  const { userId, channelId, quote } = session;
422
483
  const messageId = quote.id;
@@ -442,7 +503,7 @@ async function addCave(ctx, session) {
442
503
  }
443
504
  await ctx.database.get("echo_cave", { content }).then((existing) => {
444
505
  if (existing) {
445
- return "\u267B\uFE0F \u8BE5\u6D88\u606F\u5DF2\u5B58\u5728\u4E8E\u56DE\u58F0\u6D1E\u7A74\u4E2D\uFF01";
506
+ return session.text(".existingMsg");
446
507
  }
447
508
  });
448
509
  try {
@@ -454,9 +515,9 @@ async function addCave(ctx, session) {
454
515
  type,
455
516
  content
456
517
  });
457
- return `\u2705 \u56DE\u58F0\u6D1E\u6D88\u606F\u5DF2\u6210\u529F\u5B58\u5165\uFF0C\u6D88\u606F ID\uFF1A${result.id}`;
518
+ return session.text(".msgSaved", [result.id]);
458
519
  } catch (error) {
459
- return "\u274C \u56DE\u58F0\u6D1E\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF01";
520
+ return session.text(".msgFailedToSave");
460
521
  }
461
522
  }
462
523
  // Annotate the CommonJS export names for ESM import in node:
package/lib/index.d.ts CHANGED
@@ -4,6 +4,8 @@ export declare const name = "echo-cave";
4
4
  export declare const inject: string[];
5
5
  export interface Config {
6
6
  adminMessageProtection?: boolean;
7
+ allowContributorDelete?: boolean;
8
+ allowSenderDelete?: boolean;
7
9
  }
8
10
  export declare const Config: Schema<Config>;
9
11
  export interface EchoCave {
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.7.5",
4
+ "version": "1.9.0",
5
5
  "main": "lib/index.cjs",
6
6
  "typings": "lib/index.d.ts",
7
7
  "type": "module",
@@ -23,6 +23,11 @@
23
23
  "plugin",
24
24
  "cave"
25
25
  ],
26
+ "koishi": {
27
+ "locales": [
28
+ "zh"
29
+ ]
30
+ },
26
31
  "peerDependencies": {
27
32
  "koishi": "^4.18.9"
28
33
  },