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'))) {
|
2023-06-26 23:32:52 +08:00
|
|
|
logger.debug(`加载监听事件:${file}`)
|
2023-05-11 16:03:18 +08:00
|
|
|
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
|
2023-06-26 23:32:52 +08:00
|
|
|
for (const adapter of Bot.adapter) {
|
2023-05-11 16:03:18 +08:00
|
|
|
try {
|
2023-06-26 23:32:52 +08:00
|
|
|
logger.debug(`加载适配器:${adapter.name}(${adapter.id})`)
|
2023-05-11 16:03:18 +08:00
|
|
|
await adapter.load()
|
|
|
|
adapterCount++
|
|
|
|
} catch (e) {
|
2023-06-26 23:32:52 +08:00
|
|
|
logger.mark(`加载适配器错误:${adapter.name}(${adapter.id})`)
|
2023-05-11 16:03:18 +08:00
|
|
|
logger.error(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
logger.info(`加载适配器[${adapterCount}个]`)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default new ListenerLoader()
|