UNPKG

koishi-plugin-hhs-huatu

Version:
96 lines (95 loc) 2.95 kB
import { Context, Dict, Session } from 'koishi'; import { Config } from './config'; import { UserData } from './types'; export declare class MembershipSystem { private ctx; private config; userData: Dict<UserData>; private cleanupTimerDispose; private reminderTimerDispose; private pointsRefreshTimerDispose; private lastPointsRefreshTime; constructor(ctx: Context, config: Config); private ensureImportDir; private registerDatabase; loadUserDataFromDB(): Promise<void>; saveLastPointsRefreshTime(): Promise<void>; syncUserToDB(userId: string): Promise<void>; saveUserData(): Promise<void>; /** * 计算预估消耗点数(基于 Opus 套餐) * 社区逆向工程的 NAI Anlas 估算公式 */ calculatePointsCost(params: { width: number; height: number; steps: number; smea?: boolean; smeaDyn?: boolean; strength?: number; isImg2Img?: boolean; preciseRefCount?: number; }): number; /** * 导演工具点数计算 * 1024×1024 及以下(像素数 ≤ 1,048,576):0 点数 * 大于 1,048,576 像素时:点数 = 像素数 ÷ 50,000 - 1.8(结果向上) */ calculateDirectorPointsCost(width: number, height: number, toolType?: string): number; /** * 预扣点数 * @returns 实际扣除的点数,不足返回 -1 */ deductPoints(userId: string, amount: number): Promise<number>; /** * 退还点数 */ refundPoints(userId: string, amount: number): Promise<void>; /** * 获取用户当前点数 */ getPoints(userId: string): number; /** * 批量给所有用户加减点数 */ addPointsToAll(amount: number, membersOnly?: boolean): Promise<{ count: number; message: string; }>; /** * 刷新点数(定期任务) */ refreshPoints(): Promise<{ count: number; message: string; }>; /** * 获取距离下次点数刷新的天数 */ getDaysUntilNextRefresh(): number; /** * 从 JSON 文件导入数据到数据库 */ importFromJson(filePath?: string): Promise<{ success: number; failed: number; message: string; }>; private parseTimeToToday; private getDelayUntilTime; cleanupExpiredMembers(): Promise<void>; checkAndRemindExpiringMembers(): Promise<void>; private setupCleanupTask; private setupReminderTask; private setupPointsRefreshTask; addDaysToAllMembers(days: number): Promise<{ success: boolean; count: number; message: string; }>; private ensureUserData; checkAndResetDailyUsage(userId: string): void; canUseDrawing(userId: string, session: Session): boolean | string; incrementUsage(userId: string, drawCount?: number): void; updateLastDrawTime(userId: string, time?: number): void; }