UNPKG

koishi-plugin-statistical-ranking

Version:

统计所有命令使用和成员发言记录,支持筛选展示列表,可以切换文本和图片两种展示形式

131 lines (130 loc) 4.6 kB
/** * 通用工具函数集合 * 提供字符串处理、时间格式化、文件操作等基础功能 */ export declare const Utils: { /** * 获取字符串显示宽度(中文字符计为2,其他字符计为1) * @param {string} str - 输入字符串 * @returns {number} 字符串显示宽度 */ getStringDisplayWidth(str: string): number; /** * 按显示宽度截断字符串 * @param {string} str - 输入字符串 * @param {number} maxWidth - 最大显示宽度 * @returns {string} 截断后的字符串 */ truncateByDisplayWidth(str: string, maxWidth: number): string; /** * 清理字符串,移除不可见字符和特殊字符,限制长度 * @param {string} input - 输入字符串 * @returns {string} 清理后的字符串 */ sanitizeString(input: string): string; /** * 格式化时间为"多久前"的形式 * @param {Date} date - 日期对象 * @returns {string} 格式化后的时间字符串 */ formatTimeAgo(date: Date): string; /** * 格式化日期时间为年月日和24小时制 * @param {Date} date - 日期对象 * @returns {string} 格式化后的日期时间字符串 */ formatDateTime(date: Date): string; /** * 获取数据目录 * @param {string} [subdir='statistical-ranking'] 子目录名称 * @returns {string} 数据目录的绝对路径 */ getDataDirectory(subdir?: string): string; /** * 获取平台用户ID,尝试从绑定数据中查找 * @param {any} session - 会话对象 * @returns {Promise<string>} 平台用户ID */ getPlatformId(session: any): Promise<string>; /** * 获取会话信息,包括平台、群组、用户等信息 * @param {any} session - 会话对象 * @returns {Promise<{platform: string, guildId: string, userId: string, userName: string, guildName: string} | null>} * 会话信息对象,获取失败时返回null */ getSessionInfo(session: any): Promise<{ platform: any; guildId: any; userId: any; userName: any; guildName: any; }>; /** * 检查目标是否匹配规则列表中的任何规则 * @param {string[]} list - 规则列表 * @param {{platform: string, guildId: string, userId: string, command?: string}} target - 目标对象 * @returns {boolean} 是否匹配 */ matchRuleList(list: string[], target: { platform: string; guildId: string; userId: string; command?: string; }): boolean; /** * 构建条件描述 * @param {Object} options - 包含可能的条件的对象 * @returns {string[]} 条件描述数组 */ buildConditions(options: { user?: string; guild?: string; platform?: string; command?: string; }): string[]; /** * 标准化统计记录 * @param {any} record 待处理的记录 * @param {Object} options 选项 * @returns {any} 标准化后的记录 */ normalizeRecord(record: any, options?: { sanitizeNames?: boolean; }): any; /** * 生成统计数据映射表 * @param {Array<any>} records 记录数组 * @param {string} keyField 用作键的字段名 * @param {function} [keyFormatter] 键格式化函数 * @returns {Map<string, {count: number, lastTime: Date, displayName?: string}>} */ generateStatsMap(records: any[], keyField: string, keyFormatter?: (key: string) => string): Map<string, any>; /** * 过滤统计记录 * @param {Array<any>} records 记录数组 * @param {Object} options 过滤选项 * @returns {Array<any>} 过滤后的记录 */ filterStatRecords(records: any[], options?: { keyField?: string; displayWhitelist?: string[]; displayBlacklist?: string[]; disableCommandMerge?: boolean; }): any[]; /** * 通用数据排序函数 * @param {Array<any>} data 数据数组 * @param {string} sortBy 排序字段: 'count' | 'key' | 'time' * @param {string} keyField 键字段名 * @returns {Array<any>} 排序后的数组 */ sortData(data: any[], sortBy?: string, keyField?: string): any[]; /** * 处理名称显示 * @param {string} name 原始名称 * @param {string} id ID标识 * @param {boolean} truncateId 是否截断ID * @returns {string} 格式化后的名称 */ formatDisplayName(name: string, id: string, truncateId?: boolean): string; };