UNPKG

koishi

Version:

Cross-Platform Chatbot Framework Made with Love

57 lines (45 loc) 1.47 kB
import { Context, Dict, Logger, Schema, Time } from '@koishijs/core' import Loader from '@koishijs/loader' import * as daemon from './daemon' import * as logger from './logger' export * from 'koishi' declare module '@koishijs/core' { namespace Context { interface Config { plugins?: Dict timezoneOffset?: number stackTraceLimit?: number logger?: logger.Config daemon?: daemon.Config } } } Object.assign(Context.Config.Advanced.dict, { timezoneOffset: Schema.number().description('时区偏移量 (分钟)。').default(new Date().getTimezoneOffset()), stackTraceLimit: Schema.natural().description('报错的调用堆栈深度。').default(10), plugins: Schema.any().hidden(), }) function handleException(error: any) { new Logger('app').error(error) process.exit(1) } process.on('uncaughtException', handleException) process.on('unhandledRejection', (error) => { new Logger('app').warn(error) }) async function start() { const loader = new Loader() await loader.init(process.env.KOISHI_CONFIG_FILE) const config = await loader.readConfig(true) logger.prepare(config.logger) if (config.timezoneOffset !== undefined) { Time.setTimezoneOffset(config.timezoneOffset) } if (config.stackTraceLimit !== undefined) { Error.stackTraceLimit = config.stackTraceLimit } const app = await loader.createApp() app.plugin(daemon, config.daemon) await app.start() } start().catch(handleException)