koishi-plugin-best-cave
Version:
功能强大、高度可定制的回声洞。支持丰富的媒体类型、内容查重、人工审核、用户昵称、数据迁移以及本地/S3 双重文件存储后端。
89 lines (88 loc) • 3.44 kB
TypeScript
import { Context, Logger } from 'koishi';
import { Config, CaveObject } from './index';
import { FileManager } from './FileManager';
/**
* @description 数据库 `cave_hash` 表的完整对象模型。
*/
export interface CaveHashObject {
cave: number;
hash: string;
type: 'simhash' | 'phash';
}
/**
* @class HashManager
* @description 负责生成、存储和比较文本与图片的哈希值。
* 实现了基于 Simhash 的文本查重和基于 DCT 感知哈希 (pHash) 的图片查重方案。
*/
export declare class HashManager {
private ctx;
private config;
private logger;
private fileManager;
/**
* @constructor
* @param ctx - Koishi 上下文,用于数据库操作。
* @param config - 插件配置,用于获取相似度阈值等。
* @param logger - 日志记录器实例。
* @param fileManager - 文件管理器实例,用于读取图片文件。
*/
constructor(ctx: Context, config: Config, logger: Logger, fileManager: FileManager);
/**
* @description 注册与哈希功能相关的 `.hash` 和 `.check` 子命令。
* @param cave - 主 `cave` 命令实例。
*/
registerCommands(cave: any): void;
/**
* @description 检查数据库中所有回声洞,为没有哈希记录的历史数据生成哈希。
* @returns 一个包含操作结果的报告字符串。
*/
generateHashesForHistoricalCaves(): Promise<string>;
/**
* @description 为单个回声洞对象生成所有类型的哈希(文本+图片)。
* @param cave - 回声洞对象。
* @returns 生成的哈希对象数组。
*/
generateAllHashesForCave(cave: Pick<CaveObject, 'id' | 'elements'>): Promise<CaveHashObject[]>;
/**
* @description 对数据库中所有哈希进行两两比较,找出相似度过高的内容。
* @param options 包含临时阈值的可选对象。
* @returns 一个包含检查结果的报告字符串。
*/
checkForSimilarCaves(options?: {
textThreshold?: number;
imageThreshold?: number;
}): Promise<string>;
/**
* @description 执行二维离散余弦变换 (DCT-II)。
* @param matrix - 输入的 N x N 像素亮度矩阵。
* @returns DCT变换后的 N x N 系数矩阵。
*/
private _dct2D;
/**
* @description pHash 算法核心实现。
* @param imageBuffer - 图片的Buffer。
* @param size - 期望的哈希位数 (必须是完全平方数, 如 64 或 256)。
* @returns 十六进制pHash字符串。
*/
generatePHash(imageBuffer: Buffer, size: number): Promise<string>;
/**
* @description 计算两个十六进制哈希字符串之间的汉明距离 (不同位的数量)。
* @param hex1 - 第一个哈希。
* @param hex2 - 第二个哈希。
* @returns 汉明距离。
*/
calculateHammingDistance(hex1: string, hex2: string): number;
/**
* @description 根据汉明距离计算相似度百分比。
* @param hex1 - 第一个哈希。
* @param hex2 - 第二个哈希。
* @returns 相似度 (0-100)。
*/
calculateSimilarity(hex1: string, hex2: string): number;
/**
* @description 为文本生成 64 位 Simhash 字符串。
* @param text - 需要处理的文本。
* @returns 16位十六进制 Simhash 字符串。
*/
generateTextSimhash(text: string): string;
}