UNPKG

koishi-plugin-emojihub-bili

Version:

[<ruby>Emojihub-bili<rp>(</rp><rt>点我查看食用方法</rt><rp>)</rp></ruby>](https://www.npmjs.com/package/koishi-plugin-emojihub-bili)🐱支持QQ官方json按钮!20群即可发按钮!😍可自定义添加或删除任意表情包!基本每个指令都有上千张!支持定时/定量消息触发![点我查看食用方法](https://www.npmjs.com/package/koishi-plugin-emojihub-bi

92 lines (77 loc) 2.65 kB
import { Logger, h } from "koishi"; import fs from 'node:fs'; import path from "node:path"; import { Config } from "./config"; const logger = new Logger('emojihub-bili'); export function logInfoformat(config: Config, USER, command, message) { if (config.consoleinfo) { if (USER) { logger.info(`\n${USER} 频道触发表情包\n使用指令: ${command}\n${message}`); } else { logger.info(message); } } } export function logError(message) { logger.error(message); } export function logInfo(config: Config, ...args: unknown[]) { if (config.consoleinfo) { if (args.length > 0 && args[0].toString().length < 500) { logger.info(args[0], ...args.slice(1)); } } } export function replacePlaceholders(content, context, isRawMode = false) { // 如果 content 是字符串,直接替换占位符 if (typeof content === 'string') { if (!/\{\{\.([^}]+)\}\}|\$\{([^}]+)\}/.test(content)) { return isRawMode ? content : [content]; } const value = content.replace(/\{\{\.([^}]+)\}\}|\$\{([^}]+)\}/g, (match, p1, p2) => { const key = p1 || p2; // 从 context 中查找占位符对应的值 const replacement = key.split('.').reduce((obj, k) => { if (typeof obj === 'object' && obj !== null && k in obj) { return (obj as Record<string, unknown>)[k]; } return undefined; }, context as unknown) || match; return replacement; }); return isRawMode ? value : [value]; } // 如果 content 是对象或数组,递归处理 if (typeof content === 'object' && content !== null) { if (Array.isArray(content)) { return content.map(item => replacePlaceholders(item, context, isRawMode)); } else { const result: Record<string, unknown> = {}; for (const key in content) { result[key] = replacePlaceholders(content[key], context, isRawMode); } return result; } } // 其他情况直接返回 return content; } export function getAllFiles(dir: string, fileList: string[] = []) { const files = fs.readdirSync(dir); files.forEach(file => { const filePath = path.join(dir, file); if (fs.statSync(filePath).isDirectory()) { fileList = getAllFiles(filePath, fileList); } else { fileList.push(filePath); } }); return fileList; } export function getVirtualFilename(filePath: string, rootFolderPath: string) { const relativePath = path.relative(rootFolderPath, filePath); const parts = relativePath.split(path.sep); const filename = parts.join(''); // 使用点号连接路径部分 return filename; } export { logger };