update: 补充类型声明

This commit is contained in:
ningmengchongshui 2024-06-15 23:40:16 +08:00
parent 3aac394e4b
commit 610a84c6ea
3 changed files with 133 additions and 110 deletions

View File

@ -152,18 +152,11 @@ class PluginsLoader {
*/ */
#importPlugin = async (file, packageErr?: any) => { #importPlugin = async (file, packageErr?: any) => {
try { try {
// 应该去去印插件的路径。
// 才能确定是谁的插件
const app = await import(`file://${join(process.cwd(), file.path)}`) const app = await import(`file://${join(process.cwd(), file.path)}`)
const pluginArray = [] const pluginArray = []
for (const key in app.apps) { for (const key in app.apps) {
// console.log('key', key)
pluginArray.push(this.loadPlugin(file, app.apps[key], key)) pluginArray.push(this.loadPlugin(file, app.apps[key], key))
} }
for (const i of await Promise.allSettled(pluginArray)) for (const i of await Promise.allSettled(pluginArray))
if (i?.status && i.status != 'fulfilled') { if (i?.status && i.status != 'fulfilled') {
logger.error(`加载插件错误:${logger.red(file.name)}`) logger.error(`加载插件错误:${logger.red(file.name)}`)

View File

@ -1,7 +1,5 @@
import * as common from '../../utils/common.js' import lodash from 'lodash'
import cfg from '../../config/config.js' import fs from 'node:fs'
import Handler from './handler.js'
import { import {
gsCfg, gsCfg,
mysApi as MysApi, mysApi as MysApi,
@ -9,21 +7,14 @@ import {
NoteUser, NoteUser,
MysUser MysUser
} from '../../mys/index.js' } from '../../mys/index.js'
import puppeteer from '../../utils/puppeteer/puppeteer.js' import puppeteer from '../../utils/puppeteer/puppeteer.js'
import * as common from '../../utils/common.js'
import cfg from '../../config/config.js'
import lodash from 'lodash' import Handler from './handler.js'
import fs from 'node:fs'
import { Version } from '../../miao.js' import { Version } from '../../miao.js'
/** /**
* ******************** * @deprecated
* e进行重构的危险代码
* ********************
* tudo
*
*/ */
export default class Runtime { export default class Runtime {
e = null e = null
@ -121,7 +112,7 @@ export default class Runtime {
*/ */
static async init(e) { static async init(e) {
await MysInfo.initCache() await MysInfo.initCache()
let runtime = new Runtime(e) const runtime = new Runtime(e)
e.runtime = runtime e.runtime = runtime
await runtime.initUser() await runtime.initUser()
return runtime return runtime
@ -239,7 +230,7 @@ export default class Runtime {
/** /**
* @deprecated * @deprecated
* @param plugin plugin key * @param plugin_name plugin key
* @param path html文件路径plugin resources目录 * @param path html文件路径plugin resources目录
* @param data * @param data
* @param cfg * @param cfg
@ -250,7 +241,21 @@ export default class Runtime {
* @param cfg.beforeRender({data}) data数据 * @param cfg.beforeRender({data}) data数据
* @returns {Promise<boolean>} * @returns {Promise<boolean>}
*/ */
async render (plugin, path, data = {}, cfg = {}) { async render(
plugin_name: string,
path: string,
data: {
[key: string]: any
saveId?: any,
save_id?: any,
_htmlPath?: any,
} = {}, cfg: {
[key: string]: any
retType?: any,
recallMsg?: any
beforeRender?: any
} = {}
) {
// 处理传入的path // 处理传入的path
path = path.replace(/.html$/, '') path = path.replace(/.html$/, '')
let paths = lodash.filter(path.split('/'), (p) => !!p) let paths = lodash.filter(path.split('/'), (p) => !!p)
@ -266,9 +271,9 @@ export default class Runtime {
} }
return currDir return currDir
} }
mkdir(`html/${plugin}/${path}`) mkdir(`html/${plugin_name}/${path}`)
// 自动计算pluResPath // 自动计算pluResPath
let pluResPath = `../../../${lodash.repeat('../', paths.length)}plugins/${plugin}/resources/` let pluResPath = `../../../${lodash.repeat('../', paths.length)}plugins/${plugin_name}/resources/`
let miaoResPath = `../../../${lodash.repeat('../', paths.length)}plugins/miao-plugin/resources/` let miaoResPath = `../../../${lodash.repeat('../', paths.length)}plugins/miao-plugin/resources/`
const layoutPath = process.cwd() + '/plugins/miao-plugin/resources/common/layout/' const layoutPath = process.cwd() + '/plugins/miao-plugin/resources/common/layout/'
// 渲染data // 渲染data
@ -287,10 +292,10 @@ export default class Runtime {
...data, ...data,
/** 默认参数 **/ /** 默认参数 **/
_plugin: plugin, _plugin: plugin_name,
_htmlPath: path, _htmlPath: path,
pluResPath, pluResPath,
tplFile: `./plugins/${plugin}/resources/${path}.html`, tplFile: `./plugins/${plugin_name}/resources/${path}.html`,
saveId: data.saveId || data.save_id || paths[paths.length - 1], saveId: data.saveId || data.save_id || paths[paths.length - 1],
pageGotoParams: { pageGotoParams: {
waitUntil: 'networkidle2' waitUntil: 'networkidle2'
@ -304,12 +309,12 @@ export default class Runtime {
if (process.argv.includes('dev')) { if (process.argv.includes('dev')) {
// debug下保存当前页面的渲染数据方便模板编写与调试 // debug下保存当前页面的渲染数据方便模板编写与调试
// 由于只用于调试开发者只关注自己当时开发的文件即可暂不考虑app及plugin的命名冲突 // 由于只用于调试开发者只关注自己当时开发的文件即可暂不考虑app及plugin的命名冲突
let saveDir = mkdir(`ViewData/${plugin}`) let saveDir = mkdir(`ViewData/${plugin_name}`)
let file = `${saveDir}/${data._htmlPath.split('/').join('_')}.json` let file = `${saveDir}/${data._htmlPath.split('/').join('_')}.json`
fs.writeFileSync(file, JSON.stringify(data)) fs.writeFileSync(file, JSON.stringify(data))
} }
// 截图 // 截图
let base64 = await puppeteer.screenshot(`${plugin}/${path}`, data) let base64 = await puppeteer.screenshot(`${plugin_name}/${path}`, data)
if (cfg.retType === 'base64') { if (cfg.retType === 'base64') {
return base64 return base64
} }

View File

@ -1,28 +1,38 @@
import { type GroupMessage } from 'icqq' import { type GroupMessage } from 'icqq'
// import { Client } from 'icqq' import Runtime from './runtime'
// import { PrivateMessage } from 'oicq'
/**
*
*/
export interface EventType extends GroupMessage { export interface EventType extends GroupMessage {
/** /**
* *
*/ */
isMaster: boolean isMaster: boolean
/** /**
* *
*/ */
// isAdmin: boolean; // isAdmin: boolean;
/** /**
* *
*/ */
isGroup: boolean isGroup: boolean
/**
*
*/
// isGroupAdmin:boolean
/** /**
* *
*/ */
isPrivate?: any isPrivate: boolean
/** /**
* *
*/ */
isGuild?: any isGuild: boolean
/**
*
*/
user_id: number
/** /**
* *
*/ */
@ -30,7 +40,7 @@ export interface EventType extends GroupMessage {
/** /**
* *
*/ */
user_avatar: string | null user_avatar: string
/** /**
* *
*/ */
@ -52,9 +62,15 @@ export interface EventType extends GroupMessage {
/** /**
* *
*/ */
group_avatar: string | null group_avatar: string
/** /**
* * @deprecated
*/
runtime: typeof Runtime.prototype
/**
* @deprecated
*/ */
group: { group: {
is_owner: any; is_owner: any;
@ -62,28 +78,30 @@ export interface EventType extends GroupMessage {
getMemberMap: any; getMemberMap: any;
quit: any; quit: any;
mute_left: any mute_left: any
pickMember: any pickMember: any
sendMsg: any sendMsg: any
}; };
/** /**
* @deprecated
*/ */
file: any; file: any;
/** /**
* @deprecated
*/ */
bot: any; bot: any;
/** /**
* *
* @deprecated
*/ */
approve: any; approve: any;
/** /**
* *
* @deprecated
*/ */
member: any; member: any;
/** /**
* *
* @deprecated
*/ */
logText: any; logText: any;
/** /**
@ -96,34 +114,41 @@ export interface EventType extends GroupMessage {
isGs?: boolean isGs?: boolean
/** /**
* *
* @deprecated
*/ */
self_id?: any self_id?: any
/** /**
* *
* @deprecated
*/ */
game?: any game?: any
/** /**
* *
* @deprecated
*/ */
detail_type?: any detail_type?: any
/** /**
* *
* @deprecated
*/ */
at?: any at?: any
/** /**
* *
* @deprecated
*/ */
atBot: any; atBot: any;
/** /**
* *
* @deprecated
*/ */
hasAlias?: any hasAlias?: any
/** /**
* *
* @deprecated
*/ */
replyNew?: any replyNew?: any
/** /**
* * @deprecated
*/ */
friend?: any friend?: any
} }