feat: 增加必要类型提示
This commit is contained in:
parent
9e9ad5b55d
commit
bca3842ae6
|
@ -110,7 +110,7 @@ class ConfigController {
|
|||
* @param groupId
|
||||
* @returns
|
||||
*/
|
||||
getGroup(groupId = '') {
|
||||
getGroup(groupId: number | string = '') {
|
||||
const config = this.getConfig('group')
|
||||
const defCfg = this.getdefSet('group')
|
||||
if (config[groupId]) {
|
||||
|
@ -162,7 +162,7 @@ class ConfigController {
|
|||
* @param type 默认跑配置-defSet,用户配置-config
|
||||
* @param name 名称
|
||||
*/
|
||||
getYaml(type, name) {
|
||||
getYaml(type: string, name: string) {
|
||||
const file = `config/${type}/${name}.yaml`
|
||||
const key = `${type}.${name}`
|
||||
if (this.config[key]) return this.config[key]
|
||||
|
|
|
@ -39,54 +39,26 @@ export class Client extends IcqqClient {
|
|||
*/
|
||||
static async run() {
|
||||
const bot = new Client(cfg.bot)
|
||||
|
||||
/**
|
||||
* 加载监听事件
|
||||
*/
|
||||
await ListenerLoader.load(bot)
|
||||
|
||||
/**
|
||||
* 跳过登录
|
||||
*/
|
||||
if (cfg.bot.skip_login) {
|
||||
return await this.skip_login(bot)
|
||||
}
|
||||
|
||||
/**
|
||||
* 正常的登录
|
||||
*/
|
||||
await bot.login(cfg.qq, cfg.pwd)
|
||||
|
||||
bot[bot.uin] = bot
|
||||
|
||||
/**
|
||||
* 全局变量 bot
|
||||
*/
|
||||
global.Bot = bot
|
||||
|
||||
return bot
|
||||
}
|
||||
|
||||
/**
|
||||
* 跳过登录ICQQ
|
||||
* @param bot
|
||||
* @returns
|
||||
*/
|
||||
static async skip_login(bot) {
|
||||
//
|
||||
bot.uin = 88888
|
||||
//
|
||||
bot[bot.uin] = bot
|
||||
/**
|
||||
* 全局变量 bot
|
||||
*/
|
||||
global.Bot = bot
|
||||
/**
|
||||
*
|
||||
*/
|
||||
return bot
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载插件
|
||||
* @param bot
|
||||
|
@ -95,8 +67,6 @@ export class Client extends IcqqClient {
|
|||
static async PluginsLoader() {
|
||||
await PluginsLoader.load()
|
||||
}
|
||||
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,9 +1,3 @@
|
|||
/**
|
||||
* ************
|
||||
* 关于bot处理,属于core
|
||||
* ************
|
||||
*/
|
||||
|
||||
/**
|
||||
* 发送私聊消息,仅给好友发送
|
||||
* @param userId qq号
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { MessageCallBackType } from './types.js'
|
||||
import { plugin } from './index.js'
|
||||
import { Plugin } from './index.js'
|
||||
import { EventMap } from 'icqq'
|
||||
|
||||
/**
|
||||
|
@ -60,7 +60,7 @@ export class Messages {
|
|||
*/
|
||||
get ok() {
|
||||
const App = this
|
||||
class Children extends plugin {
|
||||
class Children extends Plugin {
|
||||
constructor() {
|
||||
super({
|
||||
...App.#init,
|
||||
|
@ -91,14 +91,14 @@ export class Events {
|
|||
*
|
||||
*/
|
||||
#data: {
|
||||
[key: string]: typeof plugin
|
||||
[key: string]: typeof Plugin
|
||||
} = {}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param val
|
||||
*/
|
||||
use(val: typeof plugin) {
|
||||
use(val: typeof Plugin) {
|
||||
this.#count++
|
||||
this.#data[this.#count] = val
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import lodash from 'lodash'
|
||||
import fs from 'node:fs'
|
||||
import { existsSync, mkdirSync, writeFileSync } from 'node:fs'
|
||||
import {
|
||||
gsCfg,
|
||||
mysApi as MysApi,
|
||||
|
@ -265,16 +265,16 @@ export default class Runtime {
|
|||
let currDir = `${process.cwd()}/temp`
|
||||
for (let p of check.split('/')) {
|
||||
currDir = `${currDir}/${p}`
|
||||
if (!fs.existsSync(currDir)) {
|
||||
fs.mkdirSync(currDir)
|
||||
if (!existsSync(currDir)) {
|
||||
mkdirSync(currDir)
|
||||
}
|
||||
}
|
||||
return currDir
|
||||
}
|
||||
mkdir(`html/${plugin_name}/${path}`)
|
||||
// 自动计算pluResPath
|
||||
let pluResPath = `../../../${lodash.repeat('../', paths.length)}plugins/${plugin_name}/resources/`
|
||||
let miaoResPath = `../../../${lodash.repeat('../', paths.length)}plugins/miao-plugin/resources/`
|
||||
const pluResPath = `../../../${lodash.repeat('../', paths.length)}plugins/${plugin_name}/resources/`
|
||||
const miaoResPath = `../../../${lodash.repeat('../', paths.length)}plugins/miao-plugin/resources/`
|
||||
const layoutPath = process.cwd() + '/plugins/miao-plugin/resources/common/layout/'
|
||||
// 渲染data
|
||||
data = {
|
||||
|
@ -309,12 +309,12 @@ export default class Runtime {
|
|||
if (process.argv.includes('dev')) {
|
||||
// debug下保存当前页面的渲染数据,方便模板编写与调试
|
||||
// 由于只用于调试,开发者只关注自己当时开发的文件即可,暂不考虑app及plugin的命名冲突
|
||||
let saveDir = mkdir(`ViewData/${plugin_name}`)
|
||||
let file = `${saveDir}/${data._htmlPath.split('/').join('_')}.json`
|
||||
fs.writeFileSync(file, JSON.stringify(data))
|
||||
const saveDir = mkdir(`ViewData/${plugin_name}`)
|
||||
const file = `${saveDir}/${data._htmlPath.split('/').join('_')}.json`
|
||||
writeFileSync(file, JSON.stringify(data))
|
||||
}
|
||||
// 截图
|
||||
let base64 = await puppeteer.screenshot(`${plugin_name}/${path}`, data)
|
||||
const base64 = await puppeteer.screenshot(`${plugin_name}/${path}`, data)
|
||||
if (cfg.retType === 'base64') {
|
||||
return base64
|
||||
}
|
||||
|
|
|
@ -44,8 +44,6 @@ async function redisInit() {
|
|||
})
|
||||
/** 全局变量 redis */
|
||||
global.redis = client as any
|
||||
|
||||
//
|
||||
logger.info('Redis 连接成功')
|
||||
return client
|
||||
}
|
||||
|
|
|
@ -3,65 +3,62 @@ import { createRequire } from 'module'
|
|||
import { existsSync } from 'fs'
|
||||
import pm2 from 'pm2'
|
||||
const require = createRequire(import.meta.url)
|
||||
|
||||
/**
|
||||
* 校验运行
|
||||
* 询问运行情况
|
||||
* @returns
|
||||
*/
|
||||
export function checkRun() {
|
||||
function inquiryProcess() {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (process.argv[1].includes('pm2')) {
|
||||
resolve(true)
|
||||
// 开始询问是否有正在运行的同实例进程
|
||||
const dir = join(process.cwd(), 'pm2.config.cjs')
|
||||
if (!existsSync(dir)) {
|
||||
// 不存在配置,错误
|
||||
reject(false)
|
||||
}
|
||||
if (process.argv[1].includes('test')) {
|
||||
resolve(true)
|
||||
}
|
||||
// 不是生产运行
|
||||
if (process.env.NODE_ENV != 'production') {
|
||||
const dir = join(process.cwd(), 'pm2.config.cjs')
|
||||
if (!existsSync(dir)) {
|
||||
reject(false)
|
||||
const cfg = require(dir)
|
||||
pm2.connect(err => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
return
|
||||
}
|
||||
const cfg = require('../../pm2.config.cjs')
|
||||
pm2.connect(err => {
|
||||
pm2.list((err, processList) => {
|
||||
if (err) {
|
||||
pm2.disconnect()
|
||||
reject(err)
|
||||
return
|
||||
}
|
||||
//
|
||||
pm2.list((err, processList) => {
|
||||
if (err) {
|
||||
pm2.disconnect()
|
||||
reject(err)
|
||||
return
|
||||
}
|
||||
const app = processList.find(p => p.name === cfg.apps[0].name)
|
||||
if (app && app.pm2_env.status === 'online') {
|
||||
console.log('检测到后台正在运行')
|
||||
// 关闭
|
||||
pm2.stop(cfg.apps[0].name, err => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
} else {
|
||||
console.log('已停止后台进程,防止重复运行')
|
||||
}
|
||||
pm2.disconnect()
|
||||
resolve(true)
|
||||
})
|
||||
} else {
|
||||
// 断开连接
|
||||
const app = processList.find(p => p.name === cfg.apps[0].name)
|
||||
if (app && app.pm2_env.status === 'online') {
|
||||
console.log('检测到后台正在运行')
|
||||
// 关闭
|
||||
pm2.stop(cfg.apps[0].name, err => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
} else {
|
||||
console.log('已停止后台进程,防止重复运行')
|
||||
}
|
||||
pm2.disconnect()
|
||||
resolve(true)
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
// 断开连接
|
||||
pm2.disconnect()
|
||||
resolve(true)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
resolve(true)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 询问
|
||||
*/
|
||||
if (process.env.NODE_ENV != 'production') {
|
||||
await inquiryProcess().catch(err => {
|
||||
// 打印错误
|
||||
console.error(err)
|
||||
// 关闭进程
|
||||
process.exit(2)
|
||||
})
|
||||
}
|
||||
await checkRun().catch(err => {
|
||||
// 打印错误
|
||||
console.error(err)
|
||||
// 关闭进程
|
||||
process.exit(2)
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue