import { Data, Version } from '../index.js' import Cfg from '../Cfg.js' import fs from 'fs' import { puppeteer } from '../../adapter/index.js' const plugin = 'miao-plugin' const _path = process.cwd() // 尝试性接入,待稳定后替换 let runtimeRender = async function (e, path, params, cfg) { return e.runtime.render('miao-plugin', path, params, { retType: cfg.retMsgId ? 'msgId' : 'default', beforeRender ({ data }) { let resPath = data.pluResPath const layoutPath = process.cwd() + '/plugins/miao-plugin/resources/common/layout/' return { ...data, _res_path: resPath, _layout_path: layoutPath, _tpl_path: process.cwd() + '/plugins/miao-plugin/resources/common/tpl/', defaultLayout: layoutPath + 'default.html', elemLayout: layoutPath + 'elem.html', sys: { scale: Cfg.scale(cfg.scale || 1), copyright: `Created By Yunzai-Bot${Version.yunzai} & Miao-Plugin${Version.version}` } } } }) } export default async function (path, params, cfg) { let { e } = cfg if (e.runtime) { return runtimeRender(e, path, params, cfg) } let [app, tpl] = path.split('/') let layoutPath = process.cwd() + '/plugins/miao-plugin/resources/common/layout/' let resPath = `../../../../../plugins/${plugin}/resources/` Data.createDir(`data/html/${plugin}/${app}/${tpl}`, 'root') let data = { ...params, _plugin: plugin, saveId: params.saveId || params.save_id || tpl, tplFile: `./plugins/${plugin}/resources/${app}/${tpl}.html`, pluResPath: resPath, _res_path: resPath, _layout_path: layoutPath, _tpl_path: process.cwd() + '/plugins/miao-plugin/resources/common/tpl/', defaultLayout: layoutPath + 'default.html', elemLayout: layoutPath + 'elem.html', pageGotoParams: { waitUntil: 'networkidle0' }, sys: { scale: Cfg.scale(cfg.scale || 1), copyright: `Created By Yunzai-Bot${Version.yunzai} & Miao-Plugin${Version.version}` } } if (process.argv.includes('web-debug')) { // debug下保存当前页面的渲染数据,方便模板编写与调试 // 由于只用于调试,开发者只关注自己当时开发的文件即可,暂不考虑app及plugin的命名冲突 let saveDir = _path + '/data/ViewData/' if (!fs.existsSync(saveDir)) { fs.mkdirSync(saveDir) } let file = saveDir + tpl + '.json' data._app = app fs.writeFileSync(file, JSON.stringify(data)) } let base64 = await puppeteer.screenshot(`miao-plugin/${app}/${tpl}`, data) let ret = true if (base64) { ret = await e.reply(base64) } return cfg.retMsgId ? ret : true }