Miao-Yunzai/lib/listener/loader.js

58 lines
1.7 KiB
JavaScript
Raw Normal View History

2023-05-11 16:03:18 +08:00
import fs from 'node:fs'
import lodash from 'lodash'
/**
* 加载监听事件
*/
class ListenerLoader {
/**
* 监听事件加载
*/
async load () {
logger.info("-----------")
logger.info("加载监听事件中...")
let eventCount = 0
for (const file of fs.readdirSync('./lib/events').filter(file => file.endsWith('.js'))) {
try {
let listener = await import(`../events/${file}`)
if (!listener.default) continue
listener = new listener.default()
const on = listener.once ? 'once' : 'on'
if (lodash.isArray(listener.event)) {
listener.event.forEach((type) => {
const e = listener[type] ? type : 'execute'
Bot[on](listener.prefix + type, event => listener[e](event))
})
} else {
const e = listener[listener.event] ? listener.event : 'execute'
Bot[on](listener.prefix + listener.event, event => listener[e](event))
}
eventCount++
} catch (e) {
logger.mark(`监听事件错误:${file}`)
logger.error(e)
}
}
logger.info(`加载监听事件[${eventCount}个]`)
logger.info("-----------")
logger.info("加载适配器中...")
let adapterCount = 0
for (const file of fs.readdirSync('./lib/adapter').filter(file => file.endsWith('.js'))) {
try {
let adapter = await import(`../adapter/${file}`)
if (!adapter.default) continue
adapter = new adapter.default()
await adapter.load()
adapterCount++
} catch (e) {
logger.mark(`加载适配器错误:${file}`)
logger.error(e)
}
}
logger.info(`加载适配器[${adapterCount}个]`)
}
}
export default new ListenerLoader()