fix: 增加插件函数类型判断
This commit is contained in:
parent
54aa32d0e4
commit
61163fbe30
|
@ -306,6 +306,24 @@ class PluginsLoader {
|
|||
*/
|
||||
await Runtime.init(e)
|
||||
|
||||
// 判断是否是星铁命令,若是星铁命令则标准化处理
|
||||
// e.isSr = true,且命令标准化为 #星铁 开头
|
||||
Object.defineProperty(e, 'isSr', {
|
||||
get: () => e.game === 'sr',
|
||||
set: v => (e.game = v ? 'sr' : 'gs')
|
||||
})
|
||||
Object.defineProperty(e, 'isGs', {
|
||||
get: () => e.game === 'gs',
|
||||
set: v => (e.game = v ? 'gs' : 'sr')
|
||||
})
|
||||
/**
|
||||
*
|
||||
*/
|
||||
if (this.srReg.test(e.msg)) {
|
||||
e.game = 'sr'
|
||||
e.msg = e.msg.replace(this.srReg, '#星铁')
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -315,8 +333,8 @@ class PluginsLoader {
|
|||
*
|
||||
*/
|
||||
for (const i of this.priority) {
|
||||
// tudo e 为参数将废弃
|
||||
const p = new i.class(e)
|
||||
// 现在给e,后续e将无法访问新增字段
|
||||
p.e = e
|
||||
/**
|
||||
* 判断是否启用功能,过滤事件
|
||||
|
@ -339,6 +357,11 @@ class PluginsLoader {
|
|||
if (!lodash.isEmpty(context)) {
|
||||
let ret
|
||||
for (const fnc in context) {
|
||||
// 不是函数,错误插件错误写法
|
||||
if (typeof plugin[fnc] !== 'function') {
|
||||
// logger.info(plugin, fnc, '不是函数')
|
||||
continue
|
||||
}
|
||||
ret ||= await plugin[fnc](context[fnc])
|
||||
}
|
||||
// 返回continue时,继续响应后续插件
|
||||
|
@ -352,26 +375,6 @@ class PluginsLoader {
|
|||
*/
|
||||
if (!this.onlyReplyAt(e)) return
|
||||
|
||||
// 判断是否是星铁命令,若是星铁命令则标准化处理
|
||||
// e.isSr = true,且命令标准化为 #星铁 开头
|
||||
Object.defineProperty(e, 'isSr', {
|
||||
get: () => e.game === 'sr',
|
||||
set: v => (e.game = v ? 'sr' : 'gs')
|
||||
})
|
||||
|
||||
Object.defineProperty(e, 'isGs', {
|
||||
get: () => e.game === 'gs',
|
||||
set: v => (e.game = v ? 'gs' : 'sr')
|
||||
})
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
if (this.srReg.test(e.msg)) {
|
||||
e.game = 'sr'
|
||||
e.msg = e.msg.replace(this.srReg, '#星铁')
|
||||
}
|
||||
|
||||
/**
|
||||
* 优先执行 accept
|
||||
*/
|
||||
|
@ -423,21 +426,17 @@ class PluginsLoader {
|
|||
*/
|
||||
try {
|
||||
const start = Date.now()
|
||||
/**
|
||||
*
|
||||
*/
|
||||
const res = plugin[v.fnc] && (await plugin[v.fnc](e))
|
||||
|
||||
/**
|
||||
* res 不是 false , 结束匹配
|
||||
* 即 return false 的时候。继续匹配。
|
||||
* tudo
|
||||
* 匹配一次之后就不要再匹配,减少循环。
|
||||
* 因此,修改为 仅有当 return true的时候
|
||||
* 才会继续匹配
|
||||
*
|
||||
*/
|
||||
if (res !== false) {
|
||||
// 不是函数。
|
||||
if (typeof plugin[v.fnv] !== 'function') {
|
||||
continue
|
||||
}
|
||||
|
||||
const res = await plugin[v.fnc](e)
|
||||
|
||||
// 非常规返回,不是true,直接结束。
|
||||
|
||||
if (typeof res != 'boolean' && res !== true) {
|
||||
/**
|
||||
* 设置冷却cd
|
||||
*/
|
||||
|
@ -449,6 +448,8 @@ class PluginsLoader {
|
|||
}
|
||||
break
|
||||
}
|
||||
|
||||
//
|
||||
} catch (error) {
|
||||
logger.error(`${e.logFnc}`)
|
||||
logger.error(error.stack)
|
||||
|
|
Loading…
Reference in New Issue