koishi-plugin-echo-cave 1.18.5 → 1.18.6

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 (3) hide show
  1. package/README.md +4 -28
  2. package/lib/index.cjs +27 -25
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -11,19 +11,13 @@
11
11
  ## ✨ 功能特性
12
12
 
13
13
  - 📥 **消息存储**:支持存储普通消息和转发消息到数据库
14
- - 🖼️ **图片保存**:自动保存消息中的图片资源到本地
15
14
  - 🔍 **消息查询**:支持随机获取消息或通过 ID 精确查找
16
15
  - 🗑️ **消息管理**:支持删除特定 ID 的消息(消息存储者、原始发送者或管理员)
17
- - 📊 **数据持久化**:使用 Koishi 数据库系统,确保数据不会丢失
18
16
  - 👤 **个人追踪**:支持查看自己投稿的消息列表
19
17
  - 🔍 **发言回溯**:支持查看自己被他人投稿的消息列表
20
- - 🎨 **精美展示**:消息展示时自带多种风格的外部包裹信息,显示消息详情
21
- - 🔒 **管理员保护**:可配置管理员消息保护,确保管理员发布的消息安全
18
+ - 🎨 **模板化展示**:消息展示时自带多种风格的外部包裹信息
19
+ - 🔒 **管理员保护**:可配置管理员消息保护
22
20
  - 📏 **媒体限制**:支持配置媒体文件大小限制
23
- - 🌐 **多语言支持**:支持中文语言包
24
- - 🔄 **嵌套转发**:支持嵌套转发消息的递归处理
25
- - 📝 **模板化展示**:支持多种风格的消息展示模板
26
- - 🔁 **重复检测**:自动检测重复消息,避免存储重复内容
27
21
 
28
22
  ## 📋 命令列表
29
23
 
@@ -32,13 +26,13 @@
32
26
  | `cave` | 随机获取一条回声洞消息 | 所有人 |
33
27
  | `cave <id>` | 获取特定 ID 的回声洞消息 | 所有人 |
34
28
  | `cave.echo` | 将引用的消息存入回声洞 | 所有人 |
35
- | `cave.wipe <id>` | 删除特定 ID 的回声洞消息 | 消息存储者、原始发送者或管理员 |
29
+ | `cave.drop <id>` | 删除特定 ID 的回声洞消息 | 消息存储者、原始发送者或管理员 |
36
30
  | `cave.listen` | 获取自己投稿的回声洞列表 | 所有人 |
37
31
  | `cave.trace` | 获取自己发言被投稿的回声洞列表 | 所有人 |
38
32
 
39
33
  ## 🚀 使用指南
40
34
 
41
- ### 1. 安装插件
35
+ ### 安装插件
42
36
 
43
37
  ```bash
44
38
  npm install koishi-plugin-echo-cave
@@ -46,24 +40,6 @@ npm install koishi-plugin-echo-cave
46
40
 
47
41
  或在插件商城中搜索 `koishi-plugin-echo-cave` 进行安装。
48
42
 
49
- ### 2. 基本使用
50
-
51
- 1. **存储消息**:在群聊中引用一条消息,然后发送命令 `cave.echo`
52
- 2. **查看随机消息**:发送命令 `cave` 获取一条随机消息
53
- 3. **查看特定消息**:发送命令 `cave <id>` 查看指定 ID 的消息
54
- 4. **删除消息**:消息存储者、原始发送者或管理员发送命令 `cave.wipe <id>` 删除指定 ID 的消息
55
- 5. **查看自己的投稿**:发送命令 `cave.listen` 查看自己曾经存入的所有回声洞消息
56
- 6. **查看自己的发言**:发送命令 `cave.trace` 查看自己曾经被他人存入的回声洞消息
57
-
58
- ## 🔧 技术说明
59
-
60
- - 插件使用 Koishi 数据库系统存储消息记录
61
- - 支持嵌套转发消息的处理
62
- - 自动检测重复消息,避免存储重复内容
63
- - 支持媒体文件大小限制
64
- - 支持多语言配置(中文)
65
- - 支持嵌套转发消息的递归处理
66
-
67
43
  ## 🛠️ 配置选项
68
44
 
69
45
  | 配置项 | 类型 | 默认值 | 说明 |
package/lib/index.cjs CHANGED
@@ -155,16 +155,14 @@ var require_zh_CN2 = __commonJS({
155
155
  description: "\u83B7\u5F97\u7531\u81EA\u5DF1\u6295\u7A3F\u7684\u56DE\u58F0\u6D1E\u5217\u8868",
156
156
  messages: {
157
157
  noMsgContributed: '\u{1F680} \u60A8\u5728\u56DE\u58F0\u6D1E\u4E2D\u6682\u65E0\u6295\u7A3F\uFF0C\u5FEB\u4F7F\u7528 "cave.echo" \u547D\u4EE4\u6DFB\u52A0\u7B2C\u4E00\u6761\u6D88\u606F\u5427\uFF01',
158
- msgListHeader: "\u{1F4DC} \u60A8\u5728\u672C\u9891\u9053\u6295\u7A3F\u7684\u56DE\u58F0\u6D1E\u6D88\u606F\u5217\u8868\uFF1A",
159
- msgListItem: "ID: {0} | \u521B\u5EFA\u65F6\u95F4\uFF1A{1}"
158
+ msgListHeader: "\u{1F4DC} \u60A8\u5728\u672C\u9891\u9053\u6295\u7A3F\u7684\u56DE\u58F0\u6D1E\u6D88\u606F\u5217\u8868\uFF1A"
160
159
  }
161
160
  },
162
161
  "cave.trace": {
163
162
  description: "\u83B7\u5F97\u81EA\u5DF1\u53D1\u8A00\u7684\u56DE\u58F0\u6D1E\u5217\u8868",
164
163
  messages: {
165
164
  noMsgTraced: '\u{1F680} \u60A8\u5728\u56DE\u58F0\u6D1E\u4E2D\u6682\u65E0\u53D1\u8A00\u88AB\u6295\u7A3F\uFF0C\u5FEB\u4F7F\u7528 "cave.echo" \u547D\u4EE4\u6DFB\u52A0\u7B2C\u4E00\u6761\u6D88\u606F\u5427\uFF01',
166
- msgListHeader: "\u{1F4DC} \u60A8\u5728\u672C\u9891\u9053\u53D1\u8A00\u7684\u56DE\u58F0\u6D1E\u6D88\u606F\u5217\u8868\uFF1A",
167
- msgListItem: "ID: {0} | \u521B\u5EFA\u65F6\u95F4\uFF1A{1}"
165
+ msgListHeader: "\u{1F4DC} \u60A8\u5728\u672C\u9891\u9053\u53D1\u8A00\u7684\u56DE\u58F0\u6D1E\u6D88\u606F\u5217\u8868\uFF1A"
168
166
  }
169
167
  },
170
168
  "cave.bind": {
@@ -510,9 +508,11 @@ async function addCave(ctx, session, cfg, userIds) {
510
508
  return session.text("echo-cave.user.invalidAllMention");
511
509
  }
512
510
  parsedUserIds = result.parsedUserIds;
513
- const isAllUsersInGroup = await checkUsersInGroup(ctx, session, parsedUserIds);
514
- if (!isAllUsersInGroup) {
515
- return session.text(".userNotInGroup");
511
+ if (parsedUserIds.length > 0) {
512
+ const isAllUsersInGroup = await checkUsersInGroup(ctx, session, parsedUserIds);
513
+ if (!isAllUsersInGroup) {
514
+ return session.text("echo-cave.user.userNotInGroup");
515
+ }
516
516
  }
517
517
  }
518
518
  let content;
@@ -744,36 +744,38 @@ async function getCaveListByUser(ctx, session) {
744
744
  return session.text("echo-cave.general.privateChatReminder");
745
745
  }
746
746
  const { userId, channelId } = session;
747
- const caves = await ctx.database.get("echo_cave", {
748
- userId,
749
- channelId
750
- });
747
+ const caves = await ctx.database.get(
748
+ "echo_cave",
749
+ {
750
+ userId,
751
+ channelId
752
+ },
753
+ ["id"]
754
+ );
751
755
  if (caves.length === 0) {
752
756
  return session.text(".noMsgContributed");
753
757
  }
754
- let response = session.text(".msgListHeader") + "\n";
755
- for (const cave of caves) {
756
- response += session.text(".msgListItem", [cave.id, formatDate(cave.createTime)]) + "\n";
757
- }
758
- return response;
758
+ const ids = caves.map((cave) => cave.id).join(" | ");
759
+ return session.text(".msgListHeader") + "\n" + ids;
759
760
  }
760
761
  async function getCaveListByOriginUser(ctx, session) {
761
762
  if (!session.guildId) {
762
763
  return session.text("echo-cave.general.privateChatReminder");
763
764
  }
764
765
  const { userId, channelId } = session;
765
- const caves = await ctx.database.get("echo_cave", {
766
- originUserId: userId,
767
- channelId
768
- });
766
+ const caves = await ctx.database.get(
767
+ "echo_cave",
768
+ {
769
+ originUserId: userId,
770
+ channelId
771
+ },
772
+ ["id"]
773
+ );
769
774
  if (caves.length === 0) {
770
775
  return session.text(".noMsgTraced");
771
776
  }
772
- let response = session.text(".msgListHeader") + "\n";
773
- for (const cave of caves) {
774
- response += session.text(".msgListItem", [cave.id, formatDate(cave.createTime)]) + "\n";
775
- }
776
- return response;
777
+ const ids = caves.map((cave) => cave.id).join(" | ");
778
+ return session.text(".msgListHeader") + "\n" + ids;
777
779
  }
778
780
  async function getCave(ctx, session, cfg, id) {
779
781
  if (!session.guildId) {
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.18.5",
4
+ "version": "1.18.6",
5
5
  "main": "lib/index.cjs",
6
6
  "typings": "lib/index.d.ts",
7
7
  "type": "module",