koishi-plugin-echo-cave 1.19.3 → 1.20.1

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/README.md CHANGED
@@ -21,14 +21,17 @@
21
21
 
22
22
  ## 📋 命令列表
23
23
 
24
- | 命令 | 说明 | 权限要求 |
25
- |------------------|-----------------|-----------------|
26
- | `cave` | 随机获取一条回声洞消息 | 所有人 |
27
- | `cave <id>` | 获取特定 ID 的回声洞消息 | 所有人 |
28
- | `cave.echo` | 将引用的消息存入回声洞 | 所有人 |
29
- | `cave.drop <id>` | 删除特定 ID 的回声洞消息 | 消息存储者、原始发送者或管理员 |
30
- | `cave.listen` | 获取自己投稿的回声洞列表 | 所有人 |
31
- | `cave.trace` | 获取自己发言被投稿的回声洞列表 | 所有人 |
24
+ | 命令 | 说明 | 权限要求 |
25
+ |----------------------|-------------------------|-----------------|
26
+ | `cave` | 随机获取一条回声洞消息 | 所有人 |
27
+ | `cave <id>` | 获取特定 ID 的回声洞消息 | 所有人 |
28
+ | `cave.echo [...userIds]` | 将引用的消息存入回声洞 | 所有人 |
29
+ | `cave.drop <id>` | 删除特定 ID 的回声洞消息 | 消息存储者、原始发送者或管理员 |
30
+ | `cave.listen` | 获取自己投稿的回声洞列表 | 所有人 |
31
+ | `cave.trace` | 获取自己发言被投稿的回声洞列表 | 所有人 |
32
+ | `cave.purge <...ids>` | 批量删除多个 ID 的回声洞消息 | 消息存储者、原始发送者或管理员 |
33
+ | `cave.search <id>` | 搜索特定 ID 的回声洞消息 | 所有人 |
34
+ | `cave.bind <id> <...userIds>` | 将用户绑定到特定 ID 的回声洞 | 所有人 |
32
35
 
33
36
  ## 🚀 使用指南
34
37
 
@@ -47,23 +50,24 @@ npm install koishi-plugin-echo-cave
47
50
  | `adminMessageProtection` | boolean | `false` | 开启管理员消息保护,使管理员发布的消息只能由其他管理员删除 |
48
51
  | `allowContributorDelete` | boolean | `true` | 允许消息投稿者删除自己投稿的消息 |
49
52
  | `allowSenderDelete` | boolean | `true` | 允许原始消息发送者删除自己被投稿的消息 |
53
+ | `deleteMediaWhenDeletingMsg` | boolean | `true` | 删除消息时是否同时删除媒体文件 |
50
54
  | `enableSizeLimit` | boolean | `false` | 启用媒体文件大小限制 |
51
55
  | `maxImageSize` | number | `2048` | 最大图片大小(KB) |
52
- | `maxVideoSize` | number | `512` | 最大视频大小(MB) |
53
- | `maxFileSize` | number | `512` | 最大文件大小(MB) |
56
+ | `maxVideoSize` | number | `512` | 最大视频大小(KB) |
57
+ | `maxFileSize` | number | `512` | 最大文件大小(KB) |
58
+ | `maxRecordSize` | number | `512` | 最大录音大小(KB) |
59
+ | `useBase64ForMedia` | boolean | `false` | 是否使用 Base64 编码发送媒体文件 |
60
+ | `sendAllAsForwardMsg` | boolean | `false` | 是否将所有消息以转发消息形式发送 |
54
61
 
55
62
  ## 📝 注意事项
56
63
 
57
- - 插件只能在群聊中使用,私聊模式下无法正常工作
64
+ - 插件仅在群聊中可用,私聊模式下无法正常工作
58
65
  - 使用 `cave.echo` 命令前必须先引用一条消息
59
- - 删除消息权限可通过配置项灵活控制,包括管理员保护、投稿者删除权限和原始发送者删除权限
60
- - 存储的转发消息会保留原始发送者信息
61
- - 消息展示时会自动添加精美的外部包裹信息,包括消息 ID、创建时间、原始发送者和投递者信息
62
- - 外部包裹信息有多种随机风格,为每次消息展示带来不同的视觉体验
63
- - 支持媒体文件大小限制,可通过配置项调整不同类型文件的大小限制
64
- - 自动检测重复消息,避免存储重复内容
66
+ - 删除消息权限可通过配置项灵活控制
67
+ - 存储的消息会保留原始发送者信息
68
+ - 支持媒体文件大小限制,可通过配置项调整
69
+ - 自动检测并避免存储重复消息
65
70
  - 支持嵌套转发消息的递归处理
66
- - 支持多语言配置,目前已提供中文语言包
67
71
 
68
72
  ## 🤝 贡献指南
69
73
 
@@ -10,5 +10,6 @@ export interface Config {
10
10
  maxFileSize?: number;
11
11
  maxRecordSize?: number;
12
12
  useBase64ForMedia?: boolean;
13
+ sendAllAsForwardMsg?: boolean;
13
14
  }
14
15
  export declare const Config: Schema<Config>;
package/lib/index.cjs CHANGED
@@ -42,7 +42,8 @@ var require_zh_CN = __commonJS({
42
42
  maxVideoSize: "\u6700\u5927\u89C6\u9891\u5927\u5C0F (MB)",
43
43
  maxFileSize: "\u6700\u5927\u6587\u4EF6\u5927\u5C0F (MB)",
44
44
  maxRecordSize: "\u6700\u5927\u5F55\u97F3\u5927\u5C0F (MB)",
45
- useBase64ForMedia: "\u662F\u5426\u4F7F\u7528 Base64 \u7F16\u7801\u53D1\u9001\u5A92\u4F53\u6587\u4EF6\uFF0C\u5F00\u542F\u540E\u5C06\u8BFB\u53D6 base64 \u7F16\u7801\u53D1\u9001\u800C\u4E0D\u662F\u4F7F\u7528 file uri"
45
+ useBase64ForMedia: "\u662F\u5426\u4F7F\u7528 Base64 \u7F16\u7801\u53D1\u9001\u5A92\u4F53\u6587\u4EF6\uFF0C\u5F00\u542F\u540E\u5C06\u8BFB\u53D6 base64 \u7F16\u7801\u53D1\u9001\u800C\u4E0D\u662F\u4F7F\u7528 file uri",
46
+ sendAllAsForwardMsg: "\u662F\u5426\u5C06\u6240\u6709\u6D88\u606F\u4EE5\u8F6C\u53D1\u6D88\u606F\u5F62\u5F0F\u53D1\u9001\uFF0C\u5F00\u542F\u540E\u666E\u901A\u6D88\u606F\u4E5F\u4F1A\u8F6C\u6362\u4E3A\u8F6C\u53D1\u6D88\u606F\u683C\u5F0F"
46
47
  };
47
48
  }
48
49
  });
@@ -708,7 +709,9 @@ async function sendCaveMsg(ctx, session, caveMsg, cfg) {
708
709
  nl: "\n"
709
710
  };
710
711
  const TEMPLATE_COUNT = 5;
711
- if (caveMsg.type === "forward") {
712
+ const isActualForward = content.some((item) => item.type === "node");
713
+ const shouldSendAsForward = cfg.sendAllAsForwardMsg || caveMsg.type === "forward" && isActualForward;
714
+ if (shouldSendAsForward) {
712
715
  const availableTemplates2 = [];
713
716
  for (let i = 0; i < TEMPLATE_COUNT; i++) {
714
717
  const template = session.text(`echo-cave.templates.forward.${i}`, templateData);
@@ -722,7 +725,21 @@ async function sendCaveMsg(ctx, session, caveMsg, cfg) {
722
725
  }
723
726
  const chosenTemplate2 = availableTemplates2[Math.floor(Math.random() * availableTemplates2.length)];
724
727
  await session.onebot.sendGroupMsg(channelId, [createTextMsg(chosenTemplate2)]);
725
- await session.onebot.sendGroupForwardMsg(channelId, content);
728
+ if (!isActualForward) {
729
+ const forwardContent = [
730
+ {
731
+ type: "node",
732
+ data: {
733
+ user_id: caveMsg.originUserId,
734
+ nickname: originName,
735
+ content
736
+ }
737
+ }
738
+ ];
739
+ await session.onebot.sendGroupForwardMsg(channelId, forwardContent);
740
+ } else {
741
+ await session.onebot.sendGroupForwardMsg(channelId, content);
742
+ }
726
743
  return;
727
744
  }
728
745
  const availableTemplates = [];
@@ -899,7 +916,8 @@ var Config = import_koishi2.Schema.object({
899
916
  maxVideoSize: import_koishi2.Schema.number().default(512),
900
917
  maxFileSize: import_koishi2.Schema.number().default(512),
901
918
  maxRecordSize: import_koishi2.Schema.number().default(512),
902
- useBase64ForMedia: import_koishi2.Schema.boolean().default(false)
919
+ useBase64ForMedia: import_koishi2.Schema.boolean().default(false),
920
+ sendAllAsForwardMsg: import_koishi2.Schema.boolean().default(false)
903
921
  }).i18n({
904
922
  "zh-CN": require_zh_CN()
905
923
  });
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.19.3",
4
+ "version": "1.20.1",
5
5
  "main": "lib/index.cjs",
6
6
  "typings": "lib/index.d.ts",
7
7
  "type": "module",
@@ -43,7 +43,7 @@
43
43
  "@semantic-release/release-notes-generator": "^14.1.0",
44
44
  "@types/node": "^24.10.1",
45
45
  "conventional-changelog-conventionalcommits": "^9.1.0",
46
- "esbuild": "^0.27.0",
46
+ "esbuild": "^0.27.1",
47
47
  "esbuild-plugin-yaml": "^0.0.1",
48
48
  "oxfmt": "^0.16.0",
49
49
  "oxlint": "^1.31.0",