mioki 0.5.1 → 0.6.1

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 {
@@ -524,6 +523,8 @@ interface MiokiStatus {
524
523
  bot: {
525
524
  uin: number;
526
525
  nickname: string;
526
+ friends: number;
527
+ groups: number;
527
528
  };
528
529
  plugins: {
529
530
  enabled: number;
@@ -531,6 +532,8 @@ interface MiokiStatus {
531
532
  };
532
533
  stats: {
533
534
  uptime: number;
535
+ send: number;
536
+ receive: number;
534
537
  };
535
538
  versions: {
536
539
  node: string;
@@ -614,7 +617,7 @@ interface MiokiContext extends Services, Configs, Utils, RemoveBotParam<Actions>
614
617
  /** 待清理的函数集合,在插件卸载时会被调用 */
615
618
  clears: Set<(() => any) | null | undefined>;
616
619
  /** 日志器 */
617
- logger: ConsolaInstance;
620
+ logger: Logger;
618
621
  }
619
622
  declare const runtimePlugins: Map<string, {
620
623
  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 {
@@ -522,6 +521,8 @@ interface MiokiStatus {
522
521
  bot: {
523
522
  uin: number;
524
523
  nickname: string;
524
+ friends: number;
525
+ groups: number;
525
526
  };
526
527
  plugins: {
527
528
  enabled: number;
@@ -529,6 +530,8 @@ interface MiokiStatus {
529
530
  };
530
531
  stats: {
531
532
  uptime: number;
533
+ send: number;
534
+ receive: number;
532
535
  };
533
536
  versions: {
534
537
  node: string;
@@ -612,7 +615,7 @@ interface MiokiContext extends Services, Configs, Utils, RemoveBotParam<Actions>
612
615
  /** 待清理的函数集合,在插件卸载时会被调用 */
613
616
  clears: Set<(() => any) | null | undefined>;
614
617
  /** 日志器 */
615
- logger: ConsolaInstance;
618
+ logger: Logger;
616
619
  }
617
620
  declare const runtimePlugins: Map<string, {
618
621
  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.1";
889
+ var version = "0.6.1";
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
  }
@@ -1280,10 +1288,12 @@ async function getMiokiStatus(bot) {
1280
1288
  const osArch = os.arch();
1281
1289
  const isInUnix = ["Linux", "Darwin"].includes(osType);
1282
1290
  const arch = ArchMap[osArch] || osArch;
1283
- const [osInfo, localPlugins, versionInfo] = await Promise.all([
1291
+ const [osInfo, localPlugins, versionInfo, friendList, groupList] = await Promise.all([
1284
1292
  systemInfo.osInfo(),
1285
1293
  findLocalPlugins(),
1286
- bot.getVersionInfo()
1294
+ bot.getVersionInfo(),
1295
+ bot.getFriendList(),
1296
+ bot.getGroupList()
1287
1297
  ]);
1288
1298
  const pluginCount = localPlugins.length + BUILTIN_PLUGINS.length;
1289
1299
  const system = isInUnix ? {
@@ -1301,13 +1311,19 @@ async function getMiokiStatus(bot) {
1301
1311
  return {
1302
1312
  bot: {
1303
1313
  uin: bot.uin,
1304
- nickname: bot.nickname
1314
+ nickname: bot.nickname,
1315
+ friends: friendList.length,
1316
+ groups: groupList.length
1305
1317
  },
1306
1318
  plugins: {
1307
1319
  enabled: runtimePlugins.size,
1308
1320
  total: pluginCount
1309
1321
  },
1310
- stats: { uptime: process.uptime() * 1e3 },
1322
+ stats: {
1323
+ uptime: process.uptime() * 1e3,
1324
+ send: bot.stat.send.group + bot.stat.send.private,
1325
+ receive: bot.stat.recv.group + bot.stat.recv.private
1326
+ },
1311
1327
  versions: {
1312
1328
  node: nodeVersion,
1313
1329
  mioki: version,
@@ -1348,7 +1364,9 @@ async function getMiokiStatusStr(client) {
1348
1364
  return `
1349
1365
  👤 ${bot.nickname}
1350
1366
  🆔 ${bot.uin}
1367
+ 📋 ${localNum(bot.friends)} 好友 / ${localNum(bot.groups)} 群
1351
1368
  🧩 启用了 ${localNum(plugins.enabled)} 个插件,共 ${localNum(plugins.total)} 个
1369
+ 📮 收 ${localNum(stats.receive)} 条,发 ${localNum(stats.send)} 条
1352
1370
  🚀 ${filesize(memory.rss.used, { round: 1 })}/${memory.percent}%
1353
1371
  ⏳ 已运行 ${pm(stats.uptime, {
1354
1372
  hideYear: true,
@@ -1682,7 +1700,7 @@ const BUILTIN_PLUGINS = [core_default];
1682
1700
  //#region src/start.ts
1683
1701
  async function start(options = {}) {
1684
1702
  const { cwd = process.cwd() } = options;
1685
- if (cwd !== BOT_CWD.value) updateBotCWD(cwd);
1703
+ if (cwd !== BOT_CWD.value) updateBotCWD(path$1.resolve(cwd));
1686
1704
  process.title = `mioki v${version}`;
1687
1705
  const plugin_dir = getAbsPluginDir();
1688
1706
  logger.info(colors$1.dim("=".repeat(40)));
@@ -1699,7 +1717,7 @@ async function start(options = {}) {
1699
1717
  logger.info(`${colors$1.dim("配置文件: ")}${colors$1.blue(`${BOT_CWD.value}/package.json`)}`);
1700
1718
  logger.info(colors$1.dim("=".repeat(40)));
1701
1719
  const { protocol = "ws", port = 6700, host = "localhost", token } = botConfig.napcat || {};
1702
- logger.info(`开始连接 NapCat 实例: ${colors$1.green(`${protocol}://${host}:${port}`)}`);
1720
+ logger.info(`>>> 正在连接 NapCat 实例: ${colors$1.green(`${protocol}://${host}:${port}`)}`);
1703
1721
  const napcat = new NapCat({
1704
1722
  token,
1705
1723
  protocol,
@@ -1709,9 +1727,11 @@ async function start(options = {}) {
1709
1727
  });
1710
1728
  napcat.on("ws.close", () => {
1711
1729
  logger.error("连接已关闭,请确保 NapCat 实例正常运行及 token 配置正确");
1730
+ process.exit(1);
1712
1731
  });
1713
1732
  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})`)}`);
1733
+ logger.info(`已连接到 NapCat 实例: ${colors$1.green(`${app_name}-v${app_version} ${nickname}(${user_id})`)}`);
1734
+ process.title = `mioki v${version} ${app_name}-v${app_version}-${user_id}`;
1715
1735
  let lastNoticeTime = 0;
1716
1736
  process.on("uncaughtException", async (err) => {
1717
1737
  const msg = stringifyError(err);
@@ -1775,7 +1795,7 @@ async function start(options = {}) {
1775
1795
  const sortedGroups = Array.from(pluginGroups.entries()).toSorted(([a], [b]) => a - b);
1776
1796
  const failedEnablePlugins = [];
1777
1797
  try {
1778
- napcat.logger.info(`加载内置插件: ${BUILTIN_PLUGINS.map((p) => colors$1.cyan(p.name)).join(", ")}`);
1798
+ napcat.logger.info(`>>> 加载 mioki 内置插件: ${BUILTIN_PLUGINS.map((p) => colors$1.cyan(p.name)).join(", ")}`);
1779
1799
  await Promise.all(BUILTIN_PLUGINS.map((p) => enablePlugin(napcat, p, "builtin")));
1780
1800
  for (const [_, plugins$1] of sortedGroups) await Promise.all(plugins$1.map(async (p) => {
1781
1801
  try {