@@ -6,13 +6,12 @@ import { NapCat } from 'napcat-sdk'
66import { version } from '../package.json'
77import * as utils from './utils'
88import * as actions from './actions'
9- import { getMiokiLogger } from './logger'
10- import { BUILTIN_PLUGINS } from './builtins'
9+ import { logger } from './logger'
1110import { colors } from 'consola/utils'
11+ import { BUILTIN_PLUGINS } from './builtins'
1212import { enablePlugin , ensurePluginDir , getAbsPluginDir , runtimePlugins } from './plugin'
1313
1414import type { MiokiPlugin } from './plugin'
15-
1615export interface StartOptions {
1716 cwd ?: string
1817}
@@ -26,46 +25,61 @@ export async function start(options: StartOptions = {}): Promise<void> {
2625
2726 process . title = `mioki v${ version } `
2827
29- const logger = getMiokiLogger ( cfg . botConfig . log_level || 'info' )
3028 const plugin_dir = getAbsPluginDir ( )
3129
32- logger . info ( `>>> -> ${ colors . bold ( colors . cyan ( 'mioki' ) ) } ${ colors . bold ( colors . green ( `v${ version } ` ) ) } <-` )
33- logger . info ( `>>> ${ colors . yellow ( colors . underline ( `基于 NapCat 的 TypeScript 🤖️ 机器人框架。` ) ) } ` )
34- logger . info ( `>>> ${ colors . italic ( `作者: Viki <hi@viki.moe> (https://github.com/vikiboss)` ) } ` )
35- logger . info ( `>>> ${ colors . italic ( `协议: Licensed under MIT License.` ) } ` )
36- logger . info ( `>>> ${ colors . cyan ( `GitHub: https://github.com/vikiboss/mioki` ) } ` )
37- logger . info ( '>>> ----------------------------------------' )
38- logger . info ( `>>> 工作目录: ${ colors . bold ( colors . blue ( cfg . BOT_CWD . value ) ) } ` )
39- logger . info ( `>>> 插件目录: ${ colors . bold ( colors . blue ( plugin_dir ) ) } ` )
30+ logger . info ( colors . dim ( '=' . repeat ( 40 ) ) )
31+ logger . info ( `欢迎使用 ${ colors . bold ( colors . cyan ( 'mioki' ) ) } ${ colors . bold ( colors . green ( `v${ version } ` ) ) } ` )
32+ logger . info ( colors . yellow ( colors . underline ( `一个基于 NapCat 和 TypeScript 的QQ 机器人框架` ) ) )
33+ logger . info ( colors . cyan ( `轻量 * 跨平台 * 体验 * 热重载 * 继承 KiviBot` ) )
34+ logger . info ( colors . dim ( '=' . repeat ( 40 ) ) )
35+ logger . info ( colors . dim ( colors . italic ( `作者: Viki <hi@viki.moe> (https://github.com/vikiboss)` ) ) )
36+ logger . info ( colors . dim ( colors . italic ( `仓库: https://github.com/vikiboss/mioki` ) ) )
37+ logger . info ( colors . dim ( colors . italic ( `文档: https://mioki.viki.moe/docs` ) ) )
38+ logger . info ( colors . dim ( '=' . repeat ( 40 ) ) )
39+ logger . info ( `${ colors . dim ( '工作目录: ' ) } ${ colors . blue ( cfg . BOT_CWD . value ) } ` )
40+ logger . info ( `${ colors . dim ( '插件目录: ' ) } ${ colors . blue ( plugin_dir ) } ` )
41+ logger . info ( `${ colors . dim ( '配置文件: ' ) } ${ colors . blue ( `${ cfg . BOT_CWD . value } /package.json` ) } ` )
42+ logger . info ( colors . dim ( '=' . repeat ( 40 ) ) )
43+
44+ const { protocol = 'ws' , port = 6700 , host = 'localhost' , token } = cfg . botConfig . napcat || { }
45+
46+ logger . info ( `开始连接 NapCat 实例: ${ colors . green ( `${ protocol } ://${ host } :${ port } ` ) } ` )
4047
4148 const napcat = new NapCat ( {
42- ...cfg . botConfig . napcat ,
49+ token,
50+ protocol,
51+ host,
52+ port,
4353 logger,
4454 } )
4555
46- napcat . on ( 'napcat.connected' , async ( { user_id, nickname } ) => {
47- logger . info ( `>>> 已连接到 NapCat: ${ colors . bold ( colors . green ( nickname ) ) } (${ colors . bold ( colors . green ( user_id ) ) } )` )
56+ napcat . on ( 'ws.close' , ( ) => {
57+ logger . error ( '连接已关闭,请确保 NapCat 实例正常运行及 token 配置正确' )
58+ } )
59+
60+ napcat . on ( 'napcat.connected' , async ( { user_id, nickname, app_name, app_version } ) => {
61+ logger . info ( `已连接到 NapCat 实例: ${ colors . green ( `${ app_name } -v${ app_version } -${ nickname } (${ user_id } )` ) } ` )
4862
4963 let lastNoticeTime = 0
5064
5165 process . on ( 'uncaughtException' , async ( err : any ) => {
5266 const msg = utils . stringifyError ( err )
53- napcat . logger . error ( `>>> uncaughtException, 出错了: ${ msg } ` )
67+ napcat . logger . error ( `uncaughtException, 出错了: ${ msg } ` )
5468 if ( Date . now ( ) - lastNoticeTime < 1_000 ) return
5569 lastNoticeTime = Date . now ( )
5670 await actions . noticeMainOwner ( napcat , `mioki 发生未捕获异常:\n\n${ msg } ` ) . catch ( ( ) => {
57- napcat . logger . error ( '>>> 发送未捕获异常通知失败' )
71+ napcat . logger . error ( '发送未捕获异常通知失败' )
5872 } )
5973 } )
6074
6175 process . on ( 'unhandledRejection' , async ( err : any ) => {
6276 const msg = utils . stringifyError ( err )
63- napcat . logger . error ( `>>> unhandledRejection, 出错了: ${ msg } ` )
77+ napcat . logger . error ( `unhandledRejection, 出错了: ${ msg } ` )
6478 if ( Date . now ( ) - lastNoticeTime < 1_000 ) return
6579 lastNoticeTime = Date . now ( )
6680 const date = new Date ( ) . toLocaleString ( )
6781 await actions . noticeMainOwner ( napcat , `【${ date } 】\n\nmioki 发生未处理异常:\n\n${ msg } ` ) . catch ( ( ) => {
68- napcat . logger . error ( '>>> 发送未处理异常通知失败' )
82+ napcat . logger . error ( '发送未处理异常通知失败' )
6983 } )
7084 } )
7185
@@ -75,7 +89,7 @@ export async function start(options: StartOptions = {}): Promise<void> {
7589 . map ( ( p ) => ( { dirName : p , absPath : path . resolve ( plugin_dir , p ) } ) )
7690 . filter ( ( p ) => {
7791 if ( ! fs . existsSync ( p . absPath ) ) {
78- napcat . logger . warn ( `>>> 插件 ${ colors . bold ( colors . red ( p . dirName ) ) } 不存在,已忽略` )
92+ napcat . logger . warn ( `插件 ${ colors . red ( p . dirName ) } 不存在,已忽略` )
7993 return false
8094 }
8195
@@ -89,7 +103,7 @@ export async function start(options: StartOptions = {}): Promise<void> {
89103 const plugin = ( await utils . jiti . import ( absPath , { default : true } ) ) as MiokiPlugin
90104
91105 if ( plugin . name !== dirName ) {
92- const tip = `>>> 插件目录名 [${ colors . bold ( colors . yellow ( dirName ) ) } ] 和插件声明的 name [${ colors . bold ( colors . yellow ( plugin . name ) ) } ] 不一致,可能导致重载异常,请修改一致后重启。`
106+ const tip = `插件目录名 [${ colors . yellow ( dirName ) } ] 和插件声明的 name [${ colors . yellow ( plugin . name ) } ] 不一致,可能导致重载异常,请修改一致后重启。`
93107 napcat . logger . warn ( tip )
94108 actions . noticeMainOwner ( napcat , tip )
95109 }
@@ -106,7 +120,7 @@ export async function start(options: StartOptions = {}): Promise<void> {
106120 const sortedUserPlugins = userPlugins . toSorted ( ( prev , next ) => ( prev . priority ?? 100 ) - ( next . priority ?? 100 ) )
107121
108122 if ( failedImportPlugins . length ) {
109- const tip = `>>> ${ colors . bold ( colors . red ( failedImportPlugins . length ) ) } 个插件加载失败: \n\n${ failedImportPlugins . map ( ( [ dirName , err ] ) => `${ dirName } : ${ err } ` ) . join ( '\n\n' ) } `
123+ const tip = `${ colors . red ( failedImportPlugins . length ) } 个插件加载失败: \n\n${ failedImportPlugins . map ( ( [ dirName , err ] ) => `${ dirName } : ${ err } ` ) . join ( '\n\n' ) } `
110124 napcat . logger . warn ( tip )
111125 actions . noticeMainOwner ( napcat , tip )
112126 }
@@ -128,7 +142,7 @@ export async function start(options: StartOptions = {}): Promise<void> {
128142
129143 try {
130144 // 加载内置插件
131- napcat . logger . info ( `>>> 加载内置插件: ${ BUILTIN_PLUGINS . map ( ( p ) => colors . bold ( colors . cyan ( p . name ) ) ) . join ( ', ' ) } ` )
145+ napcat . logger . info ( `加载内置插件: ${ BUILTIN_PLUGINS . map ( ( p ) => colors . cyan ( p . name ) ) . join ( ', ' ) } ` )
132146 await Promise . all ( BUILTIN_PLUGINS . map ( ( p ) => enablePlugin ( napcat , p , 'builtin' ) ) )
133147
134148 // 按优先级分组并行加载用户插件,相同优先级的插件可以并行加载
@@ -146,7 +160,7 @@ export async function start(options: StartOptions = {}): Promise<void> {
146160 } catch ( e : any ) {
147161 napcat . logger . error ( e ?. message )
148162 await actions . noticeMainOwner ( napcat , e ?. message ) . catch ( ( ) => {
149- napcat . logger . error ( '>>> 发送插件启用失败通知失败' )
163+ napcat . logger . error ( '发送插件启用失败通知失败' )
150164 } )
151165 }
152166
@@ -156,18 +170,18 @@ export async function start(options: StartOptions = {}): Promise<void> {
156170
157171 const failedInfo =
158172 failedCount > 0
159- ? `${ colors . bold ( colors . red ( failedCount ) ) } 个失败 (导入 ${ colors . bold ( colors . red ( failedImportPlugins . length ) ) } ,启用 ${ colors . bold ( colors . red ( failedEnablePlugins . length ) ) } )。 `
173+ ? `${ colors . red ( failedCount ) } 个失败 (导入 ${ colors . red ( failedImportPlugins . length ) } ,启用 ${ colors . red ( failedEnablePlugins . length ) } ) `
160174 : ''
161175
162176 napcat . logger . info (
163- `>>> 成功加载了 ${ colors . bold ( colors . green ( runtimePlugins . size ) ) } 个插件。 ${ failedInfo ? failedInfo : '' } 总耗时 ${ colors . bold ( colors . green ( costTime . toFixed ( 2 ) ) ) } ms ` ,
177+ `成功加载了 ${ colors . green ( runtimePlugins . size ) } 个插件, ${ failedInfo ? failedInfo : '' } 总耗时 ${ colors . green ( costTime . toFixed ( 2 ) ) } 毫秒 ` ,
164178 )
165179
166- napcat . logger . info ( colors . bold ( colors . green ( `>>> mioki v${ version } 启动完成! 祝您使用愉快! 🎉️` ) ) )
180+ napcat . logger . info ( colors . green ( `mioki v${ version } 启动完成, 祝您使用愉快 🎉️` ) )
167181
168182 if ( cfg . botConfig . online_push ) {
169183 await actions . noticeMainOwner ( napcat , `✅ mioki v${ version } 已就绪` ) . catch ( ( err ) => {
170- napcat . logger . error ( `>>> 发送就绪通知失败: ${ utils . stringifyError ( err ) } ` )
184+ napcat . logger . error ( `发送就绪通知失败: ${ utils . stringifyError ( err ) } ` )
171185 } )
172186 }
173187 } )
0 commit comments