koishi-plugin-best-cave 2.0.6 → 2.0.8
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/DataManager.d.ts +13 -15
- package/lib/FileManager.d.ts +19 -35
- package/lib/ProfileManager.d.ts +13 -15
- package/lib/ReviewManager.d.ts +16 -27
- package/lib/Utils.d.ts +26 -50
- package/lib/index.d.ts +4 -25
- package/lib/index.js +197 -322
- package/package.json +1 -1
package/lib/DataManager.d.ts
CHANGED
|
@@ -2,9 +2,8 @@ import { Context, Logger } from 'koishi';
|
|
|
2
2
|
import { FileManager } from './FileManager';
|
|
3
3
|
import { Config } from './index';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
* @description
|
|
7
|
-
* 负责处理回声洞数据的导入和导出功能。
|
|
5
|
+
* @class DataManager
|
|
6
|
+
* @description 负责处理回声洞数据的导入和导出功能。
|
|
8
7
|
*/
|
|
9
8
|
export declare class DataManager {
|
|
10
9
|
private ctx;
|
|
@@ -12,27 +11,26 @@ export declare class DataManager {
|
|
|
12
11
|
private fileManager;
|
|
13
12
|
private logger;
|
|
14
13
|
/**
|
|
15
|
-
*
|
|
16
|
-
* @param ctx
|
|
17
|
-
* @param config
|
|
18
|
-
* @param fileManager
|
|
19
|
-
* @param logger
|
|
14
|
+
* @constructor
|
|
15
|
+
* @param ctx Koishi 上下文,用于数据库操作。
|
|
16
|
+
* @param config 插件配置。
|
|
17
|
+
* @param fileManager 文件管理器实例。
|
|
18
|
+
* @param logger 日志记录器实例。
|
|
20
19
|
*/
|
|
21
20
|
constructor(ctx: Context, config: Config, fileManager: FileManager, logger: Logger);
|
|
22
21
|
/**
|
|
23
|
-
*
|
|
24
|
-
* @param cave - 主 `cave`
|
|
22
|
+
* @description 注册 `.export` 和 `.import` 子命令。
|
|
23
|
+
* @param cave - 主 `cave` 命令实例。
|
|
25
24
|
*/
|
|
26
25
|
registerCommands(cave: any): void;
|
|
27
26
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* @returns 一个描述导出结果的字符串消息。
|
|
27
|
+
* @description 导出所有 'active' 状态的回声洞数据到 `cave_export.json`。
|
|
28
|
+
* @returns 描述导出结果的消息字符串。
|
|
31
29
|
*/
|
|
32
30
|
exportData(): Promise<string>;
|
|
33
31
|
/**
|
|
34
|
-
* 从 `cave_import.json` 文件导入回声洞数据。
|
|
35
|
-
* @returns
|
|
32
|
+
* @description 从 `cave_import.json` 文件导入回声洞数据。
|
|
33
|
+
* @returns 描述导入结果的消息字符串。
|
|
36
34
|
*/
|
|
37
35
|
importData(): Promise<string>;
|
|
38
36
|
}
|
package/lib/FileManager.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { Logger } from 'koishi';
|
|
2
2
|
import { Config } from './index';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* @description
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* 内置了基于 Promise 的文件锁,以防止对本地文件的并发写入冲突。
|
|
4
|
+
* @class FileManager
|
|
5
|
+
* @description 封装了对文件的存储、读取和删除操作。
|
|
6
|
+
* 能根据配置自动选择使用本地文件系统或 AWS S3 作为存储后端。
|
|
7
|
+
* 内置 Promise 文件锁,防止本地文件的并发写入冲突。
|
|
9
8
|
*/
|
|
10
9
|
export declare class FileManager {
|
|
11
10
|
private logger;
|
|
@@ -14,51 +13,36 @@ export declare class FileManager {
|
|
|
14
13
|
private s3Client?;
|
|
15
14
|
private s3Bucket?;
|
|
16
15
|
/**
|
|
17
|
-
*
|
|
18
|
-
* @param baseDir
|
|
19
|
-
* @param config
|
|
20
|
-
* @param logger
|
|
16
|
+
* @constructor
|
|
17
|
+
* @param baseDir Koishi 应用的基础数据目录 (ctx.baseDir)。
|
|
18
|
+
* @param config 插件的配置对象。
|
|
19
|
+
* @param logger 日志记录器实例。
|
|
21
20
|
*/
|
|
22
21
|
constructor(baseDir: string, config: Config, logger: Logger);
|
|
23
22
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* @
|
|
27
|
-
|
|
28
|
-
private ensureDirectory;
|
|
29
|
-
/**
|
|
30
|
-
* 获取给定文件名的完整本地路径。
|
|
31
|
-
* @param fileName - 文件名。
|
|
32
|
-
* @returns 文件的绝对路径。
|
|
33
|
-
* @private
|
|
34
|
-
*/
|
|
35
|
-
private getFullPath;
|
|
36
|
-
/**
|
|
37
|
-
* 使用文件锁来安全地执行一个异步文件操作。
|
|
38
|
-
* 这可以防止对同一文件的并发读写造成数据损坏。
|
|
39
|
-
* @template T - 异步操作的返回类型。
|
|
40
|
-
* @param fileName - 需要加锁的文件名。
|
|
41
|
-
* @param operation - 要执行的异步函数。
|
|
23
|
+
* @description 使用文件锁安全地执行异步文件操作,防止并发读写冲突。
|
|
24
|
+
* @template T 异步操作的返回类型。
|
|
25
|
+
* @param fullPath 需要加锁的文件的完整路径。
|
|
26
|
+
* @param operation 要执行的异步函数。
|
|
42
27
|
* @returns 返回异步操作的结果。
|
|
43
|
-
* @private
|
|
44
28
|
*/
|
|
45
29
|
private withLock;
|
|
46
30
|
/**
|
|
47
|
-
* 保存文件,自动选择 S3 或本地存储。
|
|
48
|
-
* @param fileName
|
|
49
|
-
* @param data
|
|
31
|
+
* @description 保存文件,自动选择 S3 或本地存储。
|
|
32
|
+
* @param fileName 用作 S3 Key 或本地文件名。
|
|
33
|
+
* @param data 要写入的 Buffer 数据。
|
|
50
34
|
* @returns 返回保存时使用的文件名/标识符。
|
|
51
35
|
*/
|
|
52
36
|
saveFile(fileName: string, data: Buffer): Promise<string>;
|
|
53
37
|
/**
|
|
54
|
-
* 读取文件,自动从 S3 或本地存储读取。
|
|
55
|
-
* @param fileName
|
|
38
|
+
* @description 读取文件,自动从 S3 或本地存储读取。
|
|
39
|
+
* @param fileName 要读取的文件名/标识符。
|
|
56
40
|
* @returns 文件的 Buffer 数据。
|
|
57
41
|
*/
|
|
58
42
|
readFile(fileName: string): Promise<Buffer>;
|
|
59
43
|
/**
|
|
60
|
-
* 删除文件,自动从 S3 或本地删除。
|
|
61
|
-
* @param fileIdentifier
|
|
44
|
+
* @description 删除文件,自动从 S3 或本地删除。
|
|
45
|
+
* @param fileIdentifier 要删除的文件名/标识符。
|
|
62
46
|
*/
|
|
63
47
|
deleteFile(fileIdentifier: string): Promise<void>;
|
|
64
48
|
}
|
package/lib/ProfileManager.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Context } from 'koishi';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* @property userId
|
|
5
|
-
* @property nickname
|
|
3
|
+
* @description 数据库 `cave_user` 表的结构定义。
|
|
4
|
+
* @property userId 用户唯一ID,作为主键。
|
|
5
|
+
* @property nickname 用户自定义的昵称。
|
|
6
6
|
*/
|
|
7
7
|
export interface UserProfile {
|
|
8
8
|
userId: string;
|
|
@@ -14,38 +14,36 @@ declare module 'koishi' {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
* @description
|
|
19
|
-
*
|
|
20
|
-
* 提供设置、获取和清除昵称的数据库操作和相关命令。
|
|
21
|
-
* 此类仅在插件配置中启用了 `enableProfile` 时才会被实例化。
|
|
17
|
+
* @class ProfileManager
|
|
18
|
+
* @description 负责管理用户在回声洞中的自定义昵称。
|
|
19
|
+
* 当插件配置 `enableProfile` 为 true 时实例化。
|
|
22
20
|
*/
|
|
23
21
|
export declare class ProfileManager {
|
|
24
22
|
private ctx;
|
|
25
23
|
/**
|
|
26
|
-
*
|
|
24
|
+
* @constructor
|
|
27
25
|
* @param ctx - Koishi 上下文,用于初始化数据库模型。
|
|
28
26
|
*/
|
|
29
27
|
constructor(ctx: Context);
|
|
30
28
|
/**
|
|
31
|
-
*
|
|
32
|
-
* @param cave - 主 `cave`
|
|
29
|
+
* @description 注册 `.profile` 子命令,用于管理用户昵称。
|
|
30
|
+
* @param cave - 主 `cave` 命令实例。
|
|
33
31
|
*/
|
|
34
32
|
registerCommands(cave: any): void;
|
|
35
33
|
/**
|
|
36
|
-
* 设置或更新指定用户的昵称。
|
|
34
|
+
* @description 设置或更新指定用户的昵称。
|
|
37
35
|
* @param userId - 目标用户的 ID。
|
|
38
36
|
* @param nickname - 要设置的新昵称。
|
|
39
37
|
*/
|
|
40
38
|
setNickname(userId: string, nickname: string): Promise<void>;
|
|
41
39
|
/**
|
|
42
|
-
* 获取指定用户的昵称。
|
|
40
|
+
* @description 获取指定用户的昵称。
|
|
43
41
|
* @param userId - 目标用户的 ID。
|
|
44
|
-
* @returns
|
|
42
|
+
* @returns 返回用户的昵称字符串,如果未设置则返回 null。
|
|
45
43
|
*/
|
|
46
44
|
getNickname(userId: string): Promise<string | null>;
|
|
47
45
|
/**
|
|
48
|
-
* 清除指定用户的昵称设置。
|
|
46
|
+
* @description 清除指定用户的昵称设置。
|
|
49
47
|
* @param userId - 目标用户的 ID。
|
|
50
48
|
*/
|
|
51
49
|
clearNickname(userId: string): Promise<void>;
|
package/lib/ReviewManager.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { Context,
|
|
1
|
+
import { Context, Logger } from 'koishi';
|
|
2
2
|
import { CaveObject, Config } from './index';
|
|
3
3
|
import { FileManager } from './FileManager';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
* @description
|
|
7
|
-
* 负责处理回声洞的审核流程。当 `enableReview` 配置项开启时,
|
|
8
|
-
* 此管理器将被激活,用于处理新回声洞的提交、向管理员发送审核通知
|
|
9
|
-
* 以及处理管理员的审核操作(通过/拒绝)。
|
|
5
|
+
* @class ReviewManager
|
|
6
|
+
* @description 负责处理回声洞的审核流程,处理新洞的提交、审核通知和审核操作。
|
|
10
7
|
*/
|
|
11
8
|
export declare class ReviewManager {
|
|
12
9
|
private ctx;
|
|
@@ -14,36 +11,28 @@ export declare class ReviewManager {
|
|
|
14
11
|
private fileManager;
|
|
15
12
|
private logger;
|
|
16
13
|
/**
|
|
17
|
-
*
|
|
18
|
-
* @param ctx
|
|
19
|
-
* @param config
|
|
20
|
-
* @param fileManager
|
|
21
|
-
* @param logger
|
|
14
|
+
* @constructor
|
|
15
|
+
* @param ctx Koishi 上下文。
|
|
16
|
+
* @param config 插件配置。
|
|
17
|
+
* @param fileManager 文件管理器实例。
|
|
18
|
+
* @param logger 日志记录器实例。
|
|
22
19
|
*/
|
|
23
20
|
constructor(ctx: Context, config: Config, fileManager: FileManager, logger: Logger);
|
|
24
21
|
/**
|
|
25
|
-
* 注册与审核相关的 `.review` 子命令。
|
|
26
|
-
* @param cave - 主 `cave`
|
|
22
|
+
* @description 注册与审核相关的 `.review` 子命令。
|
|
23
|
+
* @param cave - 主 `cave` 命令实例。
|
|
27
24
|
*/
|
|
28
25
|
registerCommands(cave: any): void;
|
|
29
26
|
/**
|
|
30
|
-
*
|
|
31
|
-
* @param cave
|
|
27
|
+
* @description 将新回声洞提交到管理群组以供审核。
|
|
28
|
+
* @param cave 新创建的、状态为 'pending' 的回声洞对象。
|
|
32
29
|
*/
|
|
33
30
|
sendForReview(cave: CaveObject): Promise<void>;
|
|
34
31
|
/**
|
|
35
|
-
*
|
|
36
|
-
* @param
|
|
37
|
-
* @
|
|
38
|
-
* @private
|
|
39
|
-
*/
|
|
40
|
-
private buildReviewMessage;
|
|
41
|
-
/**
|
|
42
|
-
* 处理管理员的审核决定(通过或拒绝)。
|
|
43
|
-
* @param action - 'approve' (通过) 或 'reject' (拒绝)。
|
|
44
|
-
* @param caveId - 被审核的回声洞 ID。
|
|
45
|
-
* @param adminUserName - 执行操作的管理员的昵称。
|
|
32
|
+
* @description 处理管理员的审核决定(通过或拒绝)。
|
|
33
|
+
* @param action 'approve' (通过) 或 'reject' (拒绝)。
|
|
34
|
+
* @param caveId 被审核的回声洞 ID。
|
|
46
35
|
* @returns 返回给操作者的确认消息。
|
|
47
36
|
*/
|
|
48
|
-
processReview(action: 'approve' | 'reject', caveId: number
|
|
37
|
+
processReview(action: 'approve' | 'reject', caveId: number): Promise<string>;
|
|
49
38
|
}
|
package/lib/Utils.d.ts
CHANGED
|
@@ -2,78 +2,54 @@ import { Context, h, Logger, Session } from 'koishi';
|
|
|
2
2
|
import { CaveObject, Config, StoredElement } from './index';
|
|
3
3
|
import { FileManager } from './FileManager';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
* @param elements
|
|
7
|
-
* @returns 转换后的 h()
|
|
5
|
+
* @description 将数据库存储的 StoredElement[] 转换为 Koishi 的 h() 元素数组。
|
|
6
|
+
* @param elements 从数据库读取的元素数组。
|
|
7
|
+
* @returns 转换后的 h() 元素数组。
|
|
8
8
|
*/
|
|
9
9
|
export declare function storedFormatToHElements(elements: StoredElement[]): h[];
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
12
|
-
* @param element - 包含本地文件路径的 h() 媒体元素。
|
|
13
|
-
* @param fileManager - FileManager 实例,用于读取文件。
|
|
14
|
-
* @param logger - Logger 实例,用于记录错误。
|
|
15
|
-
* @returns 转换后的 h() 元素,其 src 属性为 Base64 数据 URI。
|
|
16
|
-
*/
|
|
17
|
-
export declare function mediaElementToBase64(element: h, fileManager: FileManager, logger: Logger): Promise<h>;
|
|
18
|
-
/**
|
|
19
|
-
* 构建一条包含回声洞内容的完整消息,准备发送。
|
|
11
|
+
* @description 构建一条用于发送的完整回声洞消息。
|
|
20
12
|
* 此函数会处理 S3 URL、文件映射路径或本地文件到 Base64 的转换。
|
|
21
|
-
* @param cave
|
|
22
|
-
* @param config
|
|
23
|
-
* @param fileManager
|
|
24
|
-
* @param logger
|
|
25
|
-
* @returns
|
|
13
|
+
* @param cave 要展示的回声洞对象。
|
|
14
|
+
* @param config 插件配置。
|
|
15
|
+
* @param fileManager FileManager 实例。
|
|
16
|
+
* @param logger Logger 实例。
|
|
17
|
+
* @returns 包含 h() 元素和字符串的消息数组。
|
|
26
18
|
*/
|
|
27
19
|
export declare function buildCaveMessage(cave: CaveObject, config: Config, fileManager: FileManager, logger: Logger): Promise<(string | h)[]>;
|
|
28
20
|
/**
|
|
29
|
-
* 清理数据库中所有被标记为 'delete'
|
|
30
|
-
* @param ctx
|
|
31
|
-
* @param fileManager
|
|
32
|
-
* @param logger
|
|
21
|
+
* @description 清理数据库中所有被标记为 'delete' 状态的回声洞及其关联文件。
|
|
22
|
+
* @param ctx Koishi 上下文。
|
|
23
|
+
* @param fileManager FileManager 实例。
|
|
24
|
+
* @param logger Logger 实例。
|
|
33
25
|
*/
|
|
34
26
|
export declare function cleanupPendingDeletions(ctx: Context, fileManager: FileManager, logger: Logger): Promise<void>;
|
|
35
27
|
/**
|
|
36
|
-
*
|
|
37
|
-
* @param session
|
|
38
|
-
* @param config
|
|
39
|
-
* @returns
|
|
28
|
+
* @description 根据配置(是否分群)和当前会话,生成数据库查询的范围条件。
|
|
29
|
+
* @param session 当前会话对象。
|
|
30
|
+
* @param config 插件配置。
|
|
31
|
+
* @returns 用于数据库查询的条件对象。
|
|
40
32
|
*/
|
|
41
33
|
export declare function getScopeQuery(session: Session, config: Config): object;
|
|
42
34
|
/**
|
|
43
|
-
* 获取下一个可用的回声洞 ID
|
|
44
|
-
*
|
|
45
|
-
* @param
|
|
46
|
-
* @
|
|
47
|
-
* @
|
|
48
|
-
* @performance 对于非常大的数据集,此函数可能会有性能瓶颈,因为它需要获取所有现有 ID。
|
|
35
|
+
* @description 获取下一个可用的回声洞 ID(最小的未使用正整数)。
|
|
36
|
+
* @param ctx Koishi 上下文。
|
|
37
|
+
* @param query 查询范围条件,用于分群模式。
|
|
38
|
+
* @returns 可用的新 ID。
|
|
39
|
+
* @performance 在大数据集下,此函数可能存在性能瓶颈,因为它需要获取所有现有ID。
|
|
49
40
|
*/
|
|
50
41
|
export declare function getNextCaveId(ctx: Context, query?: object): Promise<number>;
|
|
51
42
|
/**
|
|
52
|
-
*
|
|
53
|
-
* @param ctx - Koishi 上下文。
|
|
54
|
-
* @param fileManager - FileManager 实例。
|
|
55
|
-
* @param url - 媒体资源的 URL。
|
|
56
|
-
* @param originalName - 原始文件名,用于获取扩展名。
|
|
57
|
-
* @param type - 媒体类型 ('image', 'video', 'audio', 'file')。
|
|
58
|
-
* @param caveId - 新建回声洞的 ID。
|
|
59
|
-
* @param index - 媒体在消息中的索引。
|
|
60
|
-
* @param channelId - 频道 ID。
|
|
61
|
-
* @param userId - 用户 ID。
|
|
43
|
+
* @description 下载网络媒体资源并保存到文件存储中。
|
|
62
44
|
* @returns 保存后的文件名/标识符。
|
|
63
45
|
*/
|
|
64
46
|
export declare function downloadMedia(ctx: Context, fileManager: FileManager, url: string, originalName: string, type: string, caveId: number, index: number, channelId: string, userId: string): Promise<string>;
|
|
65
47
|
/**
|
|
66
|
-
*
|
|
67
|
-
* @
|
|
68
|
-
* @param config - 插件配置。
|
|
69
|
-
* @param lastUsed - 存储各频道最后使用时间的 Map。
|
|
70
|
-
* @returns 如果处于冷却中,返回提示信息字符串;否则返回 null。
|
|
48
|
+
* @description 检查用户是否处于指令冷却中。
|
|
49
|
+
* @returns 若在冷却中则返回提示字符串,否则返回 null。
|
|
71
50
|
*/
|
|
72
51
|
export declare function checkCooldown(session: Session, config: Config, lastUsed: Map<string, number>): string | null;
|
|
73
52
|
/**
|
|
74
|
-
* 更新指定频道的指令使用时间戳。
|
|
75
|
-
* @param session - 当前会话对象。
|
|
76
|
-
* @param config - 插件配置。
|
|
77
|
-
* @param lastUsed - 存储各频道最后使用时间的 Map。
|
|
53
|
+
* @description 更新指定频道的指令使用时间戳。
|
|
78
54
|
*/
|
|
79
55
|
export declare function updateCooldownTimestamp(session: Session, config: Config, lastUsed: Map<string, number>): void;
|
package/lib/index.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { Context, Schema } from 'koishi';
|
|
2
2
|
export declare const name = "best-cave";
|
|
3
3
|
export declare const inject: string[];
|
|
4
|
-
export declare const usage = "\n<div style=\"border-radius: 10px; border: 1px solid #ddd; padding: 16px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);\">\n <h2 style=\"margin-top: 0; color: #4a6ee0;\">\uD83D\uDCCC \u63D2\u4EF6\u8BF4\u660E</h2>\n <p>\uD83D\uDCD6 <strong>\u4F7F\u7528\u6587\u6863</strong>\uFF1A\u8BF7\u70B9\u51FB\u5DE6\u4E0A\u89D2\u7684 <strong>\u63D2\u4EF6\u4E3B\u9875</strong> \u67E5\u770B\u63D2\u4EF6\u4F7F\u7528\u6587\u6863</p>\n <p>\uD83D\uDD0D <strong>\u66F4\u591A\u63D2\u4EF6</strong>\uFF1A\u53EF\u8BBF\u95EE <a href=\"https://github.com/YisRime\" style=\"color:#4a6ee0;text-decoration:none;\">\u82E1\u6DDE\u7684 GitHub</a> \u67E5\u770B\u672C\u4EBA\u7684\u6240\u6709\u63D2\u4EF6</p>\n</div>\n
|
|
4
|
+
export declare const usage = "\n<div style=\"border-radius: 10px; border: 1px solid #ddd; padding: 16px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);\">\n <h2 style=\"margin-top: 0; color: #4a6ee0;\">\uD83D\uDCCC \u63D2\u4EF6\u8BF4\u660E</h2>\n <p>\uD83D\uDCD6 <strong>\u4F7F\u7528\u6587\u6863</strong>\uFF1A\u8BF7\u70B9\u51FB\u5DE6\u4E0A\u89D2\u7684 <strong>\u63D2\u4EF6\u4E3B\u9875</strong> \u67E5\u770B\u63D2\u4EF6\u4F7F\u7528\u6587\u6863</p>\n <p>\uD83D\uDD0D <strong>\u66F4\u591A\u63D2\u4EF6</strong>\uFF1A\u53EF\u8BBF\u95EE <a href=\"https://github.com/YisRime\" style=\"color:#4a6ee0;text-decoration:none;\">\u82E1\u6DDE\u7684 GitHub</a> \u67E5\u770B\u672C\u4EBA\u7684\u6240\u6709\u63D2\u4EF6</p>\n</div>\n<div style=\"border-radius: 10px; border: 1px solid #ddd; padding: 16px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);\">\n <h2 style=\"margin-top: 0; color: #e0574a;\">\u2764\uFE0F \u652F\u6301\u4E0E\u53CD\u9988</h2>\n <p>\uD83C\uDF1F \u559C\u6B22\u8FD9\u4E2A\u63D2\u4EF6\uFF1F\u8BF7\u5728 <a href=\"https://github.com/YisRime\" style=\"color:#e0574a;text-decoration:none;\">GitHub</a> \u4E0A\u7ED9\u6211\u4E00\u4E2A Star\uFF01</p>\n <p>\uD83D\uDC1B \u9047\u5230\u95EE\u9898\uFF1F\u8BF7\u901A\u8FC7 <strong>Issues</strong> \u63D0\u4EA4\u53CD\u9988\uFF0C\u6216\u52A0\u5165 QQ \u7FA4 <a href=\"https://qm.qq.com/q/PdLMx9Jowq\" style=\"color:#e0574a;text-decoration:none;\"><strong>855571375</strong></a> \u8FDB\u884C\u4EA4\u6D41</p>\n</div>\n";
|
|
5
5
|
/**
|
|
6
|
-
* 存储在数据库中的单个消息元素。
|
|
7
|
-
* @property type - 元素类型。
|
|
8
|
-
* @property content - 文本内容,仅用于 'text' 类型。
|
|
9
|
-
* @property file - 文件标识符(本地文件名或 S3 Key),用于媒体类型。
|
|
6
|
+
* @description 存储在数据库中的单个消息元素。
|
|
10
7
|
*/
|
|
11
8
|
export interface StoredElement {
|
|
12
9
|
type: 'text' | 'image' | 'video' | 'audio' | 'file';
|
|
@@ -14,14 +11,7 @@ export interface StoredElement {
|
|
|
14
11
|
file?: string;
|
|
15
12
|
}
|
|
16
13
|
/**
|
|
17
|
-
*
|
|
18
|
-
* @property id - 回声洞的唯一数字 ID。
|
|
19
|
-
* @property elements - 构成回声洞内容的元素数组。
|
|
20
|
-
* @property channelId - 提交回声洞的频道 ID,若为私聊则为 null。
|
|
21
|
-
* @property userId - 提交用户的 ID。
|
|
22
|
-
* @property userName - 提交用户的昵称。
|
|
23
|
-
* @property status - 回声洞状态: 'active' (活跃), 'delete' (待删除), 'pending' (待审核)。
|
|
24
|
-
* @property time - 提交时间。
|
|
14
|
+
* @description 数据库 `cave` 表的完整对象模型。
|
|
25
15
|
*/
|
|
26
16
|
export interface CaveObject {
|
|
27
17
|
id: number;
|
|
@@ -37,13 +27,10 @@ declare module 'koishi' {
|
|
|
37
27
|
cave: CaveObject;
|
|
38
28
|
}
|
|
39
29
|
}
|
|
40
|
-
/**
|
|
41
|
-
* 插件的配置接口。
|
|
42
|
-
*/
|
|
43
30
|
export interface Config {
|
|
44
31
|
coolDown: number;
|
|
45
32
|
perChannel: boolean;
|
|
46
|
-
|
|
33
|
+
adminChannel: string;
|
|
47
34
|
enableProfile: boolean;
|
|
48
35
|
enableIO: boolean;
|
|
49
36
|
enableReview: boolean;
|
|
@@ -57,13 +44,5 @@ export interface Config {
|
|
|
57
44
|
bucket?: string;
|
|
58
45
|
publicUrl?: string;
|
|
59
46
|
}
|
|
60
|
-
/**
|
|
61
|
-
* 使用 Koishi Schema 定义插件的配置项,用于生成配置界面。
|
|
62
|
-
*/
|
|
63
47
|
export declare const Config: Schema<Config>;
|
|
64
|
-
/**
|
|
65
|
-
* 插件的入口函数。
|
|
66
|
-
* @param ctx - Koishi 上下文。
|
|
67
|
-
* @param config - 用户提供的插件配置。
|
|
68
|
-
*/
|
|
69
48
|
export declare function apply(ctx: Context, config: Config): void;
|