mioki 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,4 @@
1
- import { ConsolaInstance } from "consola/core";
2
- import { EventMap, GroupMessageEvent, LogLevel, MessageEvent, NapCat, PrivateMessageEvent, RecvElement, RecvImageElement, Sendable } from "napcat-sdk";
1
+ import { EventMap, GroupMessageEvent, LogLevel, Logger, MessageEvent, NapCat, PrivateMessageEvent, RecvElement, RecvImageElement, Sendable } from "napcat-sdk";
3
2
  import { Low } from "lowdb";
4
3
  import { Jiti } from "jiti";
5
4
  import prettyMs from "pretty-ms";
@@ -18,12 +17,12 @@ import { ScheduledTask, TaskContext } from "node-cron";
18
17
  //#region rolldown:runtime
19
18
  //#endregion
20
19
  //#region src/logger.d.ts
21
- declare const logger: ConsolaInstance;
20
+ declare const logger: Logger;
22
21
  /**
23
22
  * 获取日志文件名
24
23
  */
25
24
  declare function getLogFilePath(type?: string): string;
26
- declare function getMiokiLogger(level: LogLevel): ConsolaInstance;
25
+ declare function getMiokiLogger(level: LogLevel): Logger;
27
26
  //#endregion
28
27
  //#region src/start.d.ts
29
28
  interface StartOptions {
@@ -614,7 +613,7 @@ interface MiokiContext extends Services, Configs, Utils, RemoveBotParam<Actions>
614
613
  /** 待清理的函数集合,在插件卸载时会被调用 */
615
614
  clears: Set<(() => any) | null | undefined>;
616
615
  /** 日志器 */
617
- logger: ConsolaInstance;
616
+ logger: Logger;
618
617
  }
619
618
  declare const runtimePlugins: Map<string, {
620
619
  name: string;
package/dist/index.d.mts CHANGED
@@ -5,23 +5,22 @@ import { BinaryLike, BinaryToTextEncoding } from "node:crypto";
5
5
  import { Low } from "lowdb";
6
6
  import { Jiti } from "jiti";
7
7
  import { string2argv } from "string2argv";
8
- import { EventMap, GroupMessageEvent, LogLevel, MessageEvent, NapCat, PrivateMessageEvent, RecvElement, RecvImageElement, Sendable } from "napcat-sdk";
8
+ import { EventMap, GroupMessageEvent, LogLevel, Logger, MessageEvent, NapCat, PrivateMessageEvent, RecvElement, RecvImageElement, Sendable } from "napcat-sdk";
9
9
  import prettyMs from "pretty-ms";
10
10
  import { filesize } from "filesize";
11
11
  import dayjs from "dayjs";
12
12
  import dedent from "dedent";
13
13
  import { box, colorize, colors, stripAnsi } from "consola/utils";
14
14
  import systemInfo from "systeminformation";
15
- import { ConsolaInstance } from "consola/core";
16
15
  import { ScheduledTask, TaskContext } from "node-cron";
17
16
 
18
17
  //#region src/logger.d.ts
19
- declare const logger: ConsolaInstance;
18
+ declare const logger: Logger;
20
19
  /**
21
20
  * 获取日志文件名
22
21
  */
23
22
  declare function getLogFilePath(type?: string): string;
24
- declare function getMiokiLogger(level: LogLevel): ConsolaInstance;
23
+ declare function getMiokiLogger(level: LogLevel): Logger;
25
24
  //#endregion
26
25
  //#region src/start.d.ts
27
26
  interface StartOptions {
@@ -612,7 +611,7 @@ interface MiokiContext extends Services, Configs, Utils, RemoveBotParam<Actions>
612
611
  /** 待清理的函数集合,在插件卸载时会被调用 */
613
612
  clears: Set<(() => any) | null | undefined>;
614
613
  /** 日志器 */
615
- logger: ConsolaInstance;
614
+ logger: Logger;
616
615
  }
617
616
  declare const runtimePlugins: Map<string, {
618
617
  name: string;
package/dist/index.mjs CHANGED
@@ -1,5 +1,6 @@
1
1
  import { t as __export } from "./chunk-C6wwvPpM.mjs";
2
2
  import fs, { default as fs$1 } from "node:fs";
3
+ import util from "node:util";
3
4
  import path, { default as path$1 } from "node:path";
4
5
  import mri, { default as mri$1 } from "mri";
5
6
  import crypto from "node:crypto";
@@ -858,14 +859,21 @@ function getMiokiLogger(level) {
858
859
  level: LogLevels[level],
859
860
  defaults: { tag: "mioki" },
860
861
  reporters: [{ log: (logObj) => {
861
- const message = stripAnsi$1(logObj.message || logObj.args?.join(" ") || "");
862
+ const message = stripAnsi$1(logObj.message || logObj.args?.map((e) => typeof e === "string" ? e : util.inspect(e, {
863
+ colors: true,
864
+ depth: null
865
+ })).join(" ") || "");
862
866
  const line = `${`[${logObj.date.toISOString()}] [${LEVEL_MAP[logObj.level].name}] ${logObj.tag ? `[${logObj.tag}] ` : ""}`}${message}`;
863
867
  fs$1.appendFileSync(logFile, line + "\n");
864
868
  } }, { log: (logObj) => {
865
- const message = logObj.message || logObj.args?.join(" ") || "";
866
- const line = `${colors$1.gray(`[${logObj.date.toLocaleTimeString("zh-CN")}]`) + " " + colors$1.bold(colors$1[LEVEL_MAP[logObj.level].color](LEVEL_MAP[logObj.level].name)) + " " + (logObj.tag ? colors$1.dim(`[${logObj.tag}] `) : "")}${message}`;
867
- if (logObj.level <= LogLevels["info"]) console.log(line);
869
+ const line = `${colors$1.gray(`[${logObj.date.toLocaleTimeString("zh-CN")}]`)} ${colors$1.bold(colors$1[LEVEL_MAP[logObj.level].color](LEVEL_MAP[logObj.level].name))} ${logObj.tag ? colors$1.dim(`[${logObj.tag}] `) : ""} ${logObj.message || logObj.args?.map((e) => typeof e === "string" ? e : util.inspect(e, {
870
+ colors: true,
871
+ depth: null
872
+ })).join(" ") || ""}`;
873
+ if (logObj.level <= LogLevels["error"]) console.error(line);
868
874
  else if (logObj.level === LogLevels["warn"]) console.warn(line);
875
+ else if (logObj.level === LogLevels["log"]) console.log(line);
876
+ else if (logObj.level === LogLevels["info"]) console.info(line);
869
877
  else console.debug(line);
870
878
  } }],
871
879
  formatOptions: {
@@ -878,7 +886,7 @@ function getMiokiLogger(level) {
878
886
 
879
887
  //#endregion
880
888
  //#region package.json
881
- var version = "0.5.0";
889
+ var version = "0.6.0";
882
890
 
883
891
  //#endregion
884
892
  //#region src/actions.ts
@@ -1249,9 +1257,9 @@ async function enablePlugin(bot, plugin, type = "external") {
1249
1257
  });
1250
1258
  const end = hrtime.bigint();
1251
1259
  const time = Math.round(Number(end - start$1)) / 1e6;
1252
- bot.logger.info(`启用插件 ${colors$1.yellow(`[${typeDesc}]`)}${colors$1.yellow(`${name}@${version$1}`)} => 耗时 ${colors$1.green(time.toFixed(2))} ms`);
1260
+ bot.logger.info(`- 启用插件 ${colors$1.yellow(`[${typeDesc}]`)} ${colors$1.yellow(`${name}@${version$1}`)} => 耗时 ${colors$1.green(time.toFixed(2))} 毫秒`);
1253
1261
  } catch (e) {
1254
- throw new Error(`启用插件 ${colors$1.yellow(`[${typeDesc}]`)}${colors$1.yellow(`${name}@${version$1}`)} 失败: ${e?.message}`);
1262
+ throw new Error(`启用插件 ${colors$1.yellow(`[${typeDesc}]`)} ${colors$1.yellow(`${name}@${version$1}`)} 失败: ${e?.message}`);
1255
1263
  }
1256
1264
  return plugin;
1257
1265
  }
@@ -1682,24 +1690,24 @@ const BUILTIN_PLUGINS = [core_default];
1682
1690
  //#region src/start.ts
1683
1691
  async function start(options = {}) {
1684
1692
  const { cwd = process.cwd() } = options;
1685
- if (cwd !== BOT_CWD.value) updateBotCWD(cwd);
1693
+ if (cwd !== BOT_CWD.value) updateBotCWD(path$1.resolve(cwd));
1686
1694
  process.title = `mioki v${version}`;
1687
1695
  const plugin_dir = getAbsPluginDir();
1688
1696
  logger.info(colors$1.dim("=".repeat(40)));
1689
- logger.info(`欢迎使用 ${colors$1.bold(colors$1.cyan("mioki"))} ${colors$1.bold(colors$1.green(`v${version}`))}`);
1697
+ logger.info(`欢迎使用 ${colors$1.bold(colors$1.cyan("mioki"))} 💓 ${colors$1.bold(colors$1.green(`v${version}`))}`);
1690
1698
  logger.info(colors$1.yellow(colors$1.underline(`一个基于 NapCat 和 TypeScript 的QQ 机器人框架`)));
1691
- logger.info(colors$1.cyan(`轻量 * 跨平台 * 体验 * 热重载 * 继承 KiviBot`));
1699
+ logger.info(colors$1.cyan(`轻量 * 跨平台 * 插件式 * 热重载 * 注重开发体验`));
1692
1700
  logger.info(colors$1.dim("=".repeat(40)));
1693
1701
  logger.info(colors$1.dim(colors$1.italic(`作者: Viki <hi@viki.moe> (https://github.com/vikiboss)`)));
1694
1702
  logger.info(colors$1.dim(colors$1.italic(`仓库: https://github.com/vikiboss/mioki`)));
1695
- logger.info(colors$1.dim(colors$1.italic(`文档: https://mioki.viki.moe/docs`)));
1703
+ logger.info(colors$1.dim(colors$1.italic(`文档: https://mioki.viki.moe (还没写)`)));
1696
1704
  logger.info(colors$1.dim("=".repeat(40)));
1697
1705
  logger.info(`${colors$1.dim("工作目录: ")}${colors$1.blue(BOT_CWD.value)}`);
1698
1706
  logger.info(`${colors$1.dim("插件目录: ")}${colors$1.blue(plugin_dir)}`);
1699
1707
  logger.info(`${colors$1.dim("配置文件: ")}${colors$1.blue(`${BOT_CWD.value}/package.json`)}`);
1700
1708
  logger.info(colors$1.dim("=".repeat(40)));
1701
1709
  const { protocol = "ws", port = 6700, host = "localhost", token } = botConfig.napcat || {};
1702
- logger.info(`开始连接 NapCat 实例: ${colors$1.green(`${protocol}://${host}:${port}`)}`);
1710
+ logger.info(`>>> 正在连接 NapCat 实例: ${colors$1.green(`${protocol}://${host}:${port}`)}`);
1703
1711
  const napcat = new NapCat({
1704
1712
  token,
1705
1713
  protocol,
@@ -1709,9 +1717,11 @@ async function start(options = {}) {
1709
1717
  });
1710
1718
  napcat.on("ws.close", () => {
1711
1719
  logger.error("连接已关闭,请确保 NapCat 实例正常运行及 token 配置正确");
1720
+ process.exit(1);
1712
1721
  });
1713
1722
  napcat.on("napcat.connected", async ({ user_id, nickname, app_name, app_version }) => {
1714
- logger.info(`已连接到 NapCat 实例: ${colors$1.green(`${app_name}-v${app_version}-${nickname}(${user_id})`)}`);
1723
+ logger.info(`已连接到 NapCat 实例: ${colors$1.green(`${app_name}-v${app_version} ${nickname}(${user_id})`)}`);
1724
+ process.title = `mioki v${version} ${app_name}-v${app_version}-${user_id}`;
1715
1725
  let lastNoticeTime = 0;
1716
1726
  process.on("uncaughtException", async (err) => {
1717
1727
  const msg = stringifyError(err);
@@ -1775,7 +1785,7 @@ async function start(options = {}) {
1775
1785
  const sortedGroups = Array.from(pluginGroups.entries()).toSorted(([a], [b]) => a - b);
1776
1786
  const failedEnablePlugins = [];
1777
1787
  try {
1778
- napcat.logger.info(`加载内置插件: ${BUILTIN_PLUGINS.map((p) => colors$1.cyan(p.name)).join(", ")}`);
1788
+ napcat.logger.info(`>>> 加载 mioki 内置插件: ${BUILTIN_PLUGINS.map((p) => colors$1.cyan(p.name)).join(", ")}`);
1779
1789
  await Promise.all(BUILTIN_PLUGINS.map((p) => enablePlugin(napcat, p, "builtin")));
1780
1790
  for (const [_, plugins$1] of sortedGroups) await Promise.all(plugins$1.map(async (p) => {
1781
1791
  try {