UNPKG

koishi-plugin-emojiluna

Version:

Smart emoji management plugin with AI categorization

72 lines (71 loc) 2.02 kB
import { Context } from 'koishi'; import { Config } from '../config'; import { ImageMetadata } from '../image'; export interface ImageInfo { buffer: Buffer; size: number; hash: string; metadata: ImageMetadata; } export interface FrameFeatures { hash: string; histogram: number[]; } export interface ImageFeatures { frames: FrameFeatures[]; aspectRatio: number; dimensions: { width: number; height: number; }; frameCount: number; } export interface FrequencyRecord { hash: string; timestamps: number[]; groupId: string; } export declare class AutoCollector { private ctx; private config; private imageFeatures; private frequencyTracker; private featuresReady; private static readonly MAX_HASHES; private static readonly FREQUENCY_WINDOW; private static readonly SIMILARITY_FRAME_SAMPLES; private static readonly HASH_WIDTH; private static readonly HASH_HEIGHT; private static readonly HISTOGRAM_WIDTH; private static readonly HISTOGRAM_HEIGHT; private static readonly HISTOGRAM_BINS; private groupAutoCollectLimit; constructor(ctx: Context, config: Config); private loadExistingFeatures; private checkHitLimit; private registerCommands; start(): void; private shouldProcessMessage; private trackImageFrequency; private cleanupFrequencyTracker; private processImage; private getImageInfo; private checkFileSize; private extractImageFeatures; private calculateDifferenceHash; private calculateHistogramFromPixels; private hammingDistance; private histogramSimilarity; private calculateSimilarityScore; private calculateFrameSetSimilarity; private calculateFrameSimilarity; private calculateDimensionSimilarity; private isSimilarToExisting; private saveEmoji; private getDuplicateReason; getStats(): { featureCount: number; frequencyRecords: number; isEnabled: boolean; }; }