koishi-plugin-best-cave 1.7.2 → 2.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.
- package/LICENSE +70 -83
- package/lib/index.js +664 -1666
- package/package.json +4 -5
- package/readme.md +55 -78
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "koishi-plugin-best-cave",
|
|
3
|
-
"description": "
|
|
4
|
-
"version": "
|
|
3
|
+
"description": "最强大的回声洞现已重构完成啦!注意数据格式需要使用脚本转换哦~",
|
|
4
|
+
"version": "2.0.0",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"Yis_Rime <yis_rime@outlook.com>"
|
|
7
7
|
],
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"lib",
|
|
17
17
|
"dist"
|
|
18
18
|
],
|
|
19
|
-
"license": "
|
|
19
|
+
"license": "AGPL-3.0-only",
|
|
20
20
|
"keywords": [
|
|
21
21
|
"chatbot",
|
|
22
22
|
"koishi",
|
|
@@ -24,11 +24,10 @@
|
|
|
24
24
|
"cave",
|
|
25
25
|
"回声洞"
|
|
26
26
|
],
|
|
27
|
-
"devDependencies": {},
|
|
28
27
|
"peerDependencies": {
|
|
29
28
|
"koishi": "^4.18.3"
|
|
30
29
|
},
|
|
31
30
|
"dependencies": {
|
|
32
|
-
"
|
|
31
|
+
"@aws-sdk/client-s3": "^3.300.0"
|
|
33
32
|
}
|
|
34
33
|
}
|
package/readme.md
CHANGED
|
@@ -2,101 +2,78 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/koishi-plugin-best-cave)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
一款功能强大且灵活的回声洞插件,支持丰富的媒体类型、可插拔的功能模块和双重存储后端(本地或 S3)。
|
|
6
6
|
|
|
7
|
-
## 功能亮点
|
|
7
|
+
## ✨ 功能亮点
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
9
|
+
- **丰富的媒体支持**:不止于文本,轻松发布包含图片、视频、音频甚至文件的混合内容。插件会自动处理消息引用,解析并保存其内容。
|
|
10
|
+
- **双重存储后端**:可根据需求选择将媒体文件存储在 **本地服务器** (`data/cave` 目录) 或 **AWS S3** 兼容的云端对象存储中,便于扩展和管理。
|
|
11
|
+
- **可选的审核机制**:可开启审核模式 (`enableReview`)。开启后,所有新提交的内容都需要管理员审核通过才会进入公共池,确保内容质量。
|
|
12
|
+
- **作用域隔离**:通过 `perChannel` 配置,可设定回声洞是在所有群聊中共享(全局模式),还是在每个群聊中独立(分群模式)。
|
|
13
|
+
- **用户身份定制**:当 `enableProfile` 开启时,用户可以为自己在回声洞中的发言设置一个专属昵称。
|
|
14
|
+
- **便捷的数据管理**:管理员可以通过指令轻松地将所有回声洞数据导出为 `JSON` 文件备份,或从文件中恢复数据,迁移无忧 (`enableDataIO`)。
|
|
15
|
+
- **完善的权限控制**:通过 `adminUsers` 列表指定管理员,只有管理员才能执行审核、数据迁移和删除任意投稿等高级操作。
|
|
13
16
|
|
|
14
|
-
##
|
|
17
|
+
## 📖 指令说明
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
- 文字与图片混合保存,自动保持布局顺序
|
|
18
|
-
- 视频内容单独发送,支持多种格式
|
|
19
|
-
- 自动文本格式化与排版
|
|
20
|
-
- 引用消息自动解析和保存
|
|
19
|
+
### 核心指令
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
| 指令 | 别名/选项 | 说明 |
|
|
22
|
+
| :--- | :--- | :--- |
|
|
23
|
+
| `cave` | | 随机查看一条回声洞。 |
|
|
24
|
+
| `cave.add <内容>` | `cave -a <内容>` | 添加一条新的回声洞。可以直接在指令后跟内容,也可以回复或引用一条消息来添加。 |
|
|
25
|
+
| `cave.view <序号>` | `cave -g <序号>` | 查看指定序号的回声洞。 |
|
|
26
|
+
| `cave.del <序号>` | `cave -r <序号>` | 删除指定序号的回声洞。仅投稿人或管理员可操作。 |
|
|
27
|
+
| `cave.list` | `cave -l` | 查询并列出自己投稿过的所有回声洞序号。 |
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
- 完整的黑白名单系统
|
|
29
|
-
- 白名单用户自动跳过审核
|
|
30
|
-
- 拒绝审核时自动清理媒体文件
|
|
29
|
+
### 模块化指令
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
- 智能处理多种类型媒体链接
|
|
34
|
-
- 支持本地图片上传和URL引用
|
|
35
|
-
- 自动文件大小检查与限制
|
|
31
|
+
这些指令只有在配置中启用了相应功能后才可用。
|
|
36
32
|
|
|
37
|
-
|
|
33
|
+
| 指令 | 所需配置 | 说明 |
|
|
34
|
+
| :--- | :--- | :--- |
|
|
35
|
+
| `cave.profile [昵称]` | `enableProfile: true` | 设置你在回声洞中显示的昵称。若不提供昵称,则清除设置。 |
|
|
36
|
+
| `cave.review` | `enableReview: true` | **(仅管理员)** 列出所有待审核的回声洞。 |
|
|
37
|
+
| `cave.review <序号>` | `enableReview: true` | **(仅管理员)** 查看指定待审核内容的详情。 |
|
|
38
|
+
| `cave.review <序号> <Y/N>` | `enableReview: true` | **(仅管理员)** 审核指定内容。`Y` (或 `yes`, `pass`) 表示通过,`N` (或 `no`, `reject`) 表示拒绝。 |
|
|
39
|
+
| `cave.export` | `enableDataIO: true` | **(仅管理员)** 将所有回声洞数据导出到 `cave_export.json` 文件中。 |
|
|
40
|
+
| `cave.import` | `enableDataIO: true` | **(仅管理员)** 从 `cave_import.json` 文件中导入数据。 |
|
|
38
41
|
|
|
39
|
-
|
|
42
|
+
## ⚙️ 配置说明
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
|------|------|------|
|
|
43
|
-
| `cave` | `cave` | 随机抽取一条回声洞 |
|
|
44
|
-
| `cave -a` | `cave -a 内容` | 添加新回声洞 |
|
|
45
|
-
| `cave -g` | `cave -g 123` | 查看指定编号回声洞 |
|
|
46
|
-
| `cave -r` | `cave -r 123` | 删除指定回声洞 |
|
|
47
|
-
| `cave -l` | `cave -l 2` 或 `cave -l 114514` | 查看统计或指定用户投稿 |
|
|
48
|
-
|
|
49
|
-
### 审核指令 (仅管理员)
|
|
50
|
-
|
|
51
|
-
| 指令 | 示例 | 说明 |
|
|
52
|
-
|------|------|------|
|
|
53
|
-
| `cave.pass` | `cave.pass 123` 或 `cave.pass all` | 通过指定/所有待审核内容 |
|
|
54
|
-
| `cave.reject` | `cave.reject 123` 或 `cave.reject all` | 拒绝指定/所有待审核内容 |
|
|
55
|
-
|
|
56
|
-
## 配置说明
|
|
44
|
+
插件配置分为三个部分:基础配置、审核配置和存储配置。
|
|
57
45
|
|
|
58
46
|
### 基础配置
|
|
59
47
|
|
|
60
48
|
| 配置项 | 类型 | 默认值 | 说明 |
|
|
61
|
-
|
|
62
|
-
|
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
67
|
-
### 权限管理
|
|
68
|
-
|
|
69
|
-
| 配置项 | 类型 | 默认值 | 说明 |
|
|
70
|
-
|--------|------|--------|------|
|
|
71
|
-
| enableAudit | boolean | false | 启用审核机制 |
|
|
72
|
-
| blacklist | string[] | [] | 黑名单(用户) |
|
|
73
|
-
| whitelist | string[] | [] | 白名单(用户/群组/频道) |
|
|
49
|
+
| :--- | :--- | :--- | :--- |
|
|
50
|
+
| `cooldown` | `number` | `10` | 指令冷却时间(秒)。管理员不受此限制。 |
|
|
51
|
+
| `perChannel` | `boolean` | `false` | 是否启用分群模式。`true` 表示每个群的回声洞独立,`false` 表示所有群共享一个回声洞池。 |
|
|
52
|
+
| `adminUsers` | `string[]` | `[]` | 管理员的用户 ID 列表。 |
|
|
53
|
+
| `enableProfile` | `boolean` | `false` | 是否启用自定义昵称功能 (`cave.profile` 指令)。 |
|
|
54
|
+
| `enableDataIO` | `boolean` | `false` | 是否启用数据导入/导出功能 (`cave.export` / `.import` 指令)。 |
|
|
74
55
|
|
|
75
|
-
###
|
|
56
|
+
### 审核配置
|
|
76
57
|
|
|
77
58
|
| 配置项 | 类型 | 默认值 | 说明 |
|
|
78
|
-
|
|
79
|
-
|
|
|
80
|
-
| textDuplicateThreshold | number | 0.9 | 文本相似度阈值 |
|
|
81
|
-
| enableImageDuplicate | boolean | true | 启用图片查重 |
|
|
82
|
-
| imageDuplicateThreshold | number | 0.8 | 图片相似度阈值 |
|
|
59
|
+
| :--- | :--- | :--- | :--- |
|
|
60
|
+
| `enableReview` | `boolean` | `false` | 是否启用审核机制。启用后,新投稿将进入待审核状态,并由管理员使用 `cave.review` 指令处理。 |
|
|
83
61
|
|
|
84
|
-
###
|
|
62
|
+
### 存储配置
|
|
85
63
|
|
|
86
64
|
| 配置项 | 类型 | 默认值 | 说明 |
|
|
87
|
-
|
|
88
|
-
|
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
7. 支持自动清理被拒绝或删除的媒体文件
|
|
65
|
+
| :--- | :--- | :--- | :--- |
|
|
66
|
+
| `enableS3` | `boolean` | `false` | 是否启用 S3 存储。若为 `false`,所有媒体文件将保存在本地 `data/cave` 目录下。 |
|
|
67
|
+
| `endpoint` | `string` | | **(S3 必填)** S3 兼容存储的 Endpoint URL。 |
|
|
68
|
+
| `bucket` | `string` | | **(S3 必填)** S3 存储桶 (Bucket) 名称。 |
|
|
69
|
+
| `region` | `string` | `'auto'` | **(S3 可选)** S3 区域 (Region)。 |
|
|
70
|
+
| `publicUrl` | `string` | | **(S3 可选)** S3 存储桶的公共访问 URL。如果提供,插件将直接用此 URL 拼接文件名来访问资源,否则将尝试使用 Base64 格式发送媒体。 |
|
|
71
|
+
| `accessKeyId` | `string` | | **(S3 必填)** S3 访问密钥 ID。 |
|
|
72
|
+
| `secretAccessKey` | `string` | | **(S3 必填)** S3 秘密访问密钥。 |
|
|
73
|
+
|
|
74
|
+
## ⚠️ 注意事项
|
|
75
|
+
|
|
76
|
+
1. **文件存储**:所有媒体文件(图片、视频等)会根据配置保存在本地 `data/cave` 目录或 S3 存储桶中。请确保 Koishi 拥有对本地目录的读写权限,或 S3 配置正确无误。
|
|
77
|
+
2. **S3 公共访问**:如果启用了 S3 并配置了 `publicUrl`,请确保该 URL 指向的存储桶策略允许公共读取,否则媒体文件将无法正常显示。
|
|
78
|
+
3. **删除机制**:删除操作(`cave.del` 或审核拒绝)并非立即从数据库和文件系统中移除。内容会被标记为 `delete` 状态,并在后台任务中被异步清理,以避免阻塞当前指令的响应。
|
|
79
|
+
4. **数据导入/导出**:导入功能会读取插件工作目录下的 `cave_import.json` 文件。请在执行导入指令前,将数据文件放置在正确位置。导出会生成 `cave_export.json`。
|