koishi-plugin-emojiluna
Version:
Smart emoji management plugin with AI categorization
68 lines (67 loc) • 1.76 kB
TypeScript
import { Context } from 'koishi';
import { Config } from './config';
export interface AutoCollectOptions {
minSize: number;
maxSize: number;
similarityThreshold: number;
whitelistGroups: string[];
groupAutoCollectLimit: Record<string, {
hourLimit: number;
dayLimit: number;
}>;
}
export interface ImageInfo {
buffer: Buffer;
size: number;
hash: string;
format: string;
}
export interface ImageFeatures {
phash: string;
histogram: number[];
aspectRatio: number;
dimensions: {
width: number;
height: number;
};
}
export declare class AutoCollector {
private ctx;
private config;
private options;
private emojiHashes;
private imageFeatures;
private static readonly MAX_HASHES;
private groupAutoCollectLimit;
constructor(ctx: Context, config: Config);
private loadExistingHashes;
private checkHitLimit;
private registerCommands;
start(): void;
private shouldProcessMessage;
private processImage;
private getImageInfo;
private checkFileSize;
private calculateImageHash;
private detectImageFormat;
private extractImageFeatures;
private getImageDimensions;
private calculatePerceptualHash;
private convertToGrayscale;
private resizeImage;
private applyDCT;
private calculateMedian;
private calculateHistogram;
private hammingDistance;
private histogramSimilarity;
private calculateSimilarityScore;
private calculateDimensionSimilarity;
private isSimilarToExisting;
private saveEmoji;
updateConfig(config: Config): void;
getStats(): {
totalHashes: number;
isEnabled: boolean;
options: AutoCollectOptions;
};
}