koishi-plugin-hhs-huatu
Version:
Generate images by diffusion models
96 lines (95 loc) • 2.95 kB
TypeScript
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;
}