import { Context } from 'koishi'; import { BaseModule, ModuleMeta } from './base.module'; import { DataManager } from '../data'; import { Config, RecalledMessage } from '../../types'; /** * 防撤回模块 * - 缓存消息,撤回时记录 * - 发送撤回通知 * - 查询撤回记录 */ export declare class AntiRecallModule extends BaseModule { readonly meta: ModuleMeta; private messageCache; private readonly CACHE_EXPIRATION_MS; private cleanupInterval; constructor(ctx: Context, data: DataManager, config: Config); onInit(): Promise; /** * 内部日志方法 */ private logInfo; /** * 获取群组防撤回配置 */ getAntiRecallConfig(guildId: string): Config['antiRecall']; /** * 更新群组配置 */ updateGuildConfig(guildId: string, updates: Partial): void; /** * 检查群组是否启用 */ isEnabledForGuild(guildId: string): boolean; /** * 获取用户撤回记录 */ getUserRecallRecords(guildId: string, userId: string, limit?: number): RecalledMessage[]; /** * 获取防撤回状态统计 */ getStatus(guildId: string): { globalEnabled: boolean; groupSpecificEnabled: boolean; effectiveConfig: { enabled: boolean; retentionDays: number; maxRecordsPerUser: number; showOriginalTime: boolean; }; statistics: { totalRecords: number; totalUsers: number; totalGuilds: number; }; }; /** * 清理所有记录 */ clearAllRecords(): void; /** * 注册事件监听器 */ private registerEventListeners; /** * 处理消息撤回 */ private handleMessageRecall; /** * 保存撤回消息记录 */ private saveRecalledMessage; /** * 发送撤回通知 */ private sendRecallNotification; /** * 定时清理过期记录 */ private scheduleCleanup; /** * 清理过期记录 */ private cleanExpiredRecords; /** * 转换消息内容为纯文本显示 */ private sanitizeContentForDisplay; /** * 解析用户ID */ private parseUserId; /** * 注册命令 */ private registerCommands; /** * 模块销毁时清理资源 */ protected onDispose(): Promise; }