@jsbot-tellus/core 2.5.1 → 2.7.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.
Files changed (66) hide show
  1. package/README.md +16 -4
  2. package/dist/core/dispatch/command.d.ts +5 -2
  3. package/dist/core/dispatch/command.d.ts.map +1 -1
  4. package/dist/core/dispatch/command.js +33 -7
  5. package/dist/core/dispatch/command.js.map +1 -1
  6. package/dist/core/dispatch/handler.d.ts +5 -3
  7. package/dist/core/dispatch/handler.d.ts.map +1 -1
  8. package/dist/core/dispatch/handler.js +6 -1
  9. package/dist/core/dispatch/handler.js.map +1 -1
  10. package/dist/core/dispatch/router.d.ts +4 -2
  11. package/dist/core/dispatch/router.d.ts.map +1 -1
  12. package/dist/core/dispatch/router.js +9 -5
  13. package/dist/core/dispatch/router.js.map +1 -1
  14. package/dist/core/index.d.ts +1 -1
  15. package/dist/core/index.d.ts.map +1 -1
  16. package/dist/core/kernel.d.ts +1 -1
  17. package/dist/core/kernel.d.ts.map +1 -1
  18. package/dist/core/kernel.js +4 -1
  19. package/dist/core/kernel.js.map +1 -1
  20. package/dist/core/plugin/context.d.ts.map +1 -1
  21. package/dist/core/plugin/context.js +12 -0
  22. package/dist/core/plugin/context.js.map +1 -1
  23. package/dist/core/plugin/loader.d.ts +1 -1
  24. package/dist/core/plugin/loader.d.ts.map +1 -1
  25. package/dist/core/plugin/loader.js +31 -46
  26. package/dist/core/plugin/loader.js.map +1 -1
  27. package/dist/core/plugin/params/declaration.d.ts.map +1 -1
  28. package/dist/core/plugin/params/declaration.js +67 -4
  29. package/dist/core/plugin/params/declaration.js.map +1 -1
  30. package/dist/core/plugin/params/input.d.ts.map +1 -1
  31. package/dist/core/plugin/params/input.js +17 -2
  32. package/dist/core/plugin/params/input.js.map +1 -1
  33. package/dist/core/plugin/params/type-level.d.ts +2 -1
  34. package/dist/core/plugin/params/type-level.d.ts.map +1 -1
  35. package/dist/core/plugin/params/types.d.ts +5 -0
  36. package/dist/core/plugin/params/types.d.ts.map +1 -1
  37. package/dist/core/plugin/params/types.js.map +1 -1
  38. package/dist/core/plugin/params/values.d.ts +1 -0
  39. package/dist/core/plugin/params/values.d.ts.map +1 -1
  40. package/dist/core/plugin/params/values.js +3 -0
  41. package/dist/core/plugin/params/values.js.map +1 -1
  42. package/dist/core/plugin/types.d.ts +9 -1
  43. package/dist/core/plugin/types.d.ts.map +1 -1
  44. package/dist/core/plugin/types.js.map +1 -1
  45. package/docs/architecture.md +3 -3
  46. package/docs/configuration.md +3 -3
  47. package/docs/docker.md +166 -0
  48. package/docs/feature-parity.md +2 -2
  49. package/docs/migration.md +1 -1
  50. package/docs/plugin-api.md +43 -15
  51. package/docs/plugin-development.md +30 -27
  52. package/docs/release.md +50 -8
  53. package/package.json +2 -2
  54. package/src/core/dispatch/command.ts +53 -1
  55. package/src/core/dispatch/handler.ts +19 -1
  56. package/src/core/dispatch/router.ts +20 -3
  57. package/src/core/index.ts +4 -0
  58. package/src/core/kernel.ts +8 -1
  59. package/src/core/plugin/context.ts +21 -0
  60. package/src/core/plugin/loader.ts +41 -66
  61. package/src/core/plugin/params/declaration.ts +112 -4
  62. package/src/core/plugin/params/input.ts +29 -2
  63. package/src/core/plugin/params/type-level.ts +7 -3
  64. package/src/core/plugin/params/types.ts +6 -0
  65. package/src/core/plugin/params/values.ts +4 -0
  66. package/src/core/plugin/types.ts +20 -0
@@ -1 +1 @@
1
- {"version":3,"file":"values.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/values.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEjE,MAAM,UAAU,OAAO,CAAC,KAAa;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAExB,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QAC9D,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;IAED,IAAI,MAAM,GAAG,EAAE,CAAA;IAEf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAE3B,IAAI,IAAI,KAAK,SAAS;YAAE,MAAK;QAE7B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YAE/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACrB,MAAM,IAAI,IAAI,CAAA;gBACd,KAAK,IAAI,CAAC,CAAA;YACd,CAAC;YAED,SAAQ;QACZ,CAAC;QAED,MAAM,IAAI,IAAI,CAAA;IAClB,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAE7C,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,OAAO,IAAI,CAAA;AACf,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,IAAY,EAAE,KAAa;IAC9D,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IACxB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAE3B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;QAE1B,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;YAEzB,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,OAAO,MAAM,CAAA;YACjB,CAAC;QACL,CAAC;IACL,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAE1B,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,MAAM,CAAA;QACjB,CAAC;IACL,CAAC;IAED,MAAM,IAAI,kBAAkB,CACxB,MAAM,IAAI,oBAAoB,EAC9B,KAAK,CACR,CAAA;AACL,CAAC;AAED,MAAM,UAAU,GAA2B;IACvC,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,EAAE,EAAE,EAAE;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,EAAE,EAAE,IAAI;IACR,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;CACZ,CAAA;AAED,MAAM,SAAS,GAAG,4CAA4C,CAAA;AAE9D,MAAM,UAAU,cAAc,CAAC,KAAa;IACxC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAExB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAE3B,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IACzD,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,MAAM,GAAG,KAAK,CAAA;IAElB,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QAE9C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QAEvB,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAE/B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAEnC,KAAK,IAAI,MAAM,GAAG,IAAI,CAAA;QACtB,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACxB,MAAM,GAAG,IAAI,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,IAAY,EAAE,KAAa;IAChE,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;IAErC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,kBAAkB,CACxB,MAAM,IAAI,wBAAwB,EAClC,KAAK,CACR,CAAA;IACL,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { OneBotMessageEvent, OneBotNoticeEvent, OneBotRequestEvent, OutgoingMessage, SnowLumaEvent } from '@snowluma/sdk';
1
+ import type { OneBotGroupMessageEvent, OneBotMessageEvent, OneBotNoticeEvent, OneBotPrivateMessageEvent, OneBotRequestEvent, OutgoingMessage, SnowLumaEvent } from '@snowluma/sdk';
2
2
  import type { z } from 'zod';
3
3
  import type { BotApi } from '../api.js';
4
4
  import type { TaskQueue } from '../dispatch/task-queue.js';
@@ -9,6 +9,8 @@ import type { Permission } from '../security/permission.js';
9
9
  import type { SessionStore } from '../storage/session.js';
10
10
  import type { CommandParamArgs } from './command-params.js';
11
11
  export type EventType = 'message' | 'notice' | 'request' | 'meta';
12
+ export type MessageType = 'group' | 'private';
13
+ export type MessageTypeFilter = MessageType | readonly MessageType[];
12
14
  export interface CommandMatch {
13
15
  command: string;
14
16
  prefix: string;
@@ -19,6 +21,7 @@ export interface CommandInfo {
19
21
  name: string;
20
22
  aliases: string[];
21
23
  permission: Permission;
24
+ messageTypes: MessageType[];
22
25
  description?: string | undefined;
23
26
  usage?: string | undefined;
24
27
  pluginId: string;
@@ -33,6 +36,8 @@ export interface EventContext<TEvent extends SnowLumaEvent = SnowLumaEvent> {
33
36
  }
34
37
  export type CommandHandler<TEvent extends OneBotMessageEvent = OneBotMessageEvent, TArgs extends unknown[] = []> = (event: TEvent, context: EventContext<TEvent>, match: CommandMatch, ...args: TArgs) => void | Promise<void>;
35
38
  export type MessageHandler = (event: OneBotMessageEvent, context: EventContext<OneBotMessageEvent>) => void | Promise<void>;
39
+ export type GroupMessageHandler = (event: OneBotGroupMessageEvent, context: EventContext<OneBotGroupMessageEvent>) => void | Promise<void>;
40
+ export type PrivateMessageHandler = (event: OneBotPrivateMessageEvent, context: EventContext<OneBotPrivateMessageEvent>) => void | Promise<void>;
36
41
  export type NoticeHandler = (event: OneBotNoticeEvent, context: EventContext<OneBotNoticeEvent>) => void | Promise<void>;
37
42
  export type RequestHandler = (event: OneBotRequestEvent, context: EventContext<OneBotRequestEvent>) => void | Promise<void>;
38
43
  export type PluginMiddleware = (event: SnowLumaEvent, context: EventContext, next: () => Promise<void>) => void | Promise<void>;
@@ -41,6 +46,7 @@ export interface CommandOptions<Declaration extends string = string> {
41
46
  aliases?: string[] | undefined;
42
47
  prefixes?: string[] | undefined;
43
48
  permission?: Permission | undefined;
49
+ messageType?: MessageTypeFilter | undefined;
44
50
  description?: string | undefined;
45
51
  params?: Declaration | undefined;
46
52
  }
@@ -68,6 +74,8 @@ export interface CommandRegistrar extends CommandGroupRegistrar {
68
74
  }
69
75
  export interface EventRegistrar {
70
76
  onMessage(handler: MessageHandler): () => void;
77
+ onGroupMessage(handler: GroupMessageHandler): () => void;
78
+ onPrivateMessage(handler: PrivateMessageHandler): () => void;
71
79
  onNotice(options: NoticeOptions, handler: NoticeHandler): () => void;
72
80
  onRequest(options: RequestOptions, handler: RequestHandler): () => void;
73
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/plugin/types.ts"],"names":[],"mappings":"AAyOA,MAAM,UAAU,YAAY,CACxB,UAA6C;IAE7C,OAAO,UAAU,CAAA;AACrB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/plugin/types.ts"],"names":[],"mappings":"AA6PA,MAAM,UAAU,YAAY,CACxB,UAA6C;IAE7C,OAAO,UAAU,CAAA;AACrB,CAAC"}
@@ -16,7 +16,7 @@ src/core/* -X-> src/plugins/*
16
16
  - 插件只能通过 `PluginContext`、`EventContext` 和 `BotApi` 使用能力。
17
17
  - `core` 不 import 任何插件;`core`、`admin` 在 `src/plugins/index.ts` 显式注册。
18
18
  - 内置插件是普通源码,随内核一起编译;没有独立依赖,不单独建包。
19
- - 本地插件由 `src/app/runtime.ts` 在启动前扫描 `plugins/<id>/dist` 并追加到内置插件之后;缺少 `dist` 时加载器会尝试执行插件的 `build` 脚本。
19
+ - 本地插件由 `src/app/runtime.ts` 在启动和运行时重启前扫描 `plugins/<id>/dist` 并追加到内置插件之后;带 `build` 脚本的插件每次都会先重新构建,失败时回退已有 `dist`。
20
20
  - 本地插件放在不跟踪的 `plugins/`,每个插件是独立包,构建后自动加载。
21
21
 
22
22
  ## 运行时主链路
@@ -56,7 +56,7 @@ src/
56
56
  host.ts 插件排序、配置校验、setup/start/stop
57
57
  gating.ts enabled/private/groups
58
58
  kv.ts SQLite KV
59
- loader.ts 本地插件目录加载(缺 dist 时自动构建)
59
+ loader.ts 本地插件目录加载(每次加载自动重建,失败回退 dist)
60
60
  command-params.ts 命令参数解析入口(barrel)
61
61
  params/ 声明、默认值/at/time、输入解析、类型级解析
62
62
  install-dir.ts 安装状态/路径入口(barrel)
@@ -148,7 +148,7 @@ npm run build:plugin
148
148
  node dist/app.js
149
149
  ```
150
150
 
151
- 应用会固定扫描 `plugins/<id>/dist`,并跳过与内置插件同 ID 的本地插件,避免重复注册。没有 `dist` 的本地插件如果带有 `build` 脚本且依赖已安装,会先自动构建再加载;没有 `build` 脚本、缺少 `node_modules` 或构建失败时会记录警告并跳过。`npm run build:plugin` / `npm run check:plugin` 会自动发现 `plugins/*` 下的本地源码插件,新增插件不需要改根 `package.json`。
151
+ 应用会固定扫描 `plugins/<id>/dist`,并跳过与内置插件同 ID 的本地插件,避免重复注册。每次加载时,带 `build` 脚本且依赖已安装的插件都会先自动构建,无论 `dist` 是否已经存在;构建失败或缺少 `node_modules` 时会回退加载已有 `dist`,没有可用 `dist` 时记录警告并跳过。没有 `build` 脚本的插件直接加载现有 `dist`。`npm run build:plugin` / `npm run check:plugin` 会自动发现 `plugins/*` 下的本地源码插件,新增插件不需要改根 `package.json`。
152
152
 
153
153
  ## 在线安装插件
154
154
 
@@ -8,7 +8,7 @@
8
8
  | 数据目录 | `--data-dir` | `BOT_DATA_DIR` | `./data` |
9
9
  | 日志级别 | `--log-level` | `BOT_LOG_LEVEL` | `info` |
10
10
 
11
- 本地插件目录固定为 `./plugins`,不提供 CLI 或环境变量覆盖;每个插件从 `./plugins/<id>/dist` 加载,缺失时会在启动阶段尝试自动构建,相对路径按 `process.cwd()` 解析。
11
+ 本地插件目录固定为 `./plugins`,不提供 CLI 或环境变量覆盖;每个插件从 `./plugins/<id>/dist` 加载,每次启动或重启加载时都会尝试自动重建,失败时回退已有产物,相对路径按 `process.cwd()` 解析。
12
12
 
13
13
  ## 完整示例
14
14
 
@@ -151,7 +151,7 @@ npm run build
151
151
  node dist/app.js
152
152
  ```
153
153
 
154
- 没有 `dist` 的本地插件如果带有 `build` 脚本且依赖已安装,启动时会先自动执行 `npm run build` 再加载;没有 `build` 脚本、缺少 `node_modules` 或构建失败时会记录警告并跳过。通过 `/plugin install` 安装的包会直接出现在 `plugins/<插件id>/`,与手动放在 `plugins/` 的本地插件没有区别;安装器管理的包应自带 `dist`,加载器不会为它们自动构建。安装状态、registry 和允许列表见[插件安装器](#插件安装器)。
154
+ 带有 `build` 脚本且依赖已安装的插件,无论 `dist` 是否已经存在,每次加载都会先自动执行 `npm run build`;构建失败或缺少 `node_modules` 时会回退加载已有 `dist`,没有可用 `dist` 时记录警告并跳过。没有 `build` 脚本的插件直接加载现有 `dist`。通过 `/plugin install` 安装的包会直接出现在 `plugins/<插件id>/`,与手动放在 `plugins/` 的本地插件使用同一套重建规则;安装包通常自带 `dist`,缺少构建依赖时会回退使用自带产物。安装状态、registry 和允许列表见[插件安装器](#插件安装器)。
155
155
 
156
156
  插件自己的配置字段由 `manifest.configSchema` 校验。例如一个 `demo` 插件:
157
157
 
@@ -179,7 +179,7 @@ npm run build:plugin
179
179
  npm run dev
180
180
  ```
181
181
 
182
- 本地插件从 `plugins/<id>/dist` 自动加载;缺少 `dist` 时会先尝试构建。应用会跳过与内置插件同 ID 的本地插件。
182
+ 本地插件从 `plugins/<id>/dist` 自动加载;每次加载前都会尝试重建。应用会跳过与内置插件同 ID 的本地插件。
183
183
 
184
184
  ## 错误处理
185
185
 
package/docs/docker.md ADDED
@@ -0,0 +1,166 @@
1
+ # Docker 部署
2
+
3
+ Docker 镜像包含内核、内置插件、WebUI 静态资源和生产依赖,不包含配置、数据库和本地插件。这几项通过卷挂载持久化。
4
+
5
+ ## 镜像
6
+
7
+ | 仓库 | 镜像 |
8
+ | ---------- | --------------------------------------------- |
9
+ | GHCR | `ghcr.io/jsbot-dev/jsbot-tellus` |
10
+ | Docker Hub | `docker.io/<DOCKERHUB_USERNAME>/jsbot-tellus` |
11
+
12
+ 当前只提供 `linux/amd64`。标签规则:
13
+
14
+ | 标签 | 说明 |
15
+ | ------------- | ------------------------------- |
16
+ | `latest` | 最近一次成功发布的新版本 |
17
+ | `1.2.3` | 完整版本号,对应 `package.json` |
18
+ | `1.2`、`1` | 主/次版本 |
19
+ | `sha-xxxxxxx` | 对应提交的短哈希 |
20
+
21
+ 同一个版本已经存在于某个镜像仓库时,CD 会跳过该仓库,不覆盖已有版本标签。`latest` 只会在发布新版本时移动。
22
+
23
+ ## 快速开始
24
+
25
+ 先准备配置目录。配置文件必须放在一个目录里挂载,不要单独挂载 `bot.config.json` 文件:WebUI 保存配置时会先写临时文件再原子重命名,单文件挂载会导致重命名失败。
26
+
27
+ ```bash
28
+ mkdir -p config
29
+ cp bot.config.example.json config/bot.config.json
30
+ ```
31
+
32
+ 本地没有源码时,可以直接从镜像取出示例配置:
33
+
34
+ ```bash
35
+ docker run --rm --entrypoint cat \
36
+ ghcr.io/jsbot-dev/jsbot-tellus:latest \
37
+ /app/bot.config.example.json > config/bot.config.json
38
+ ```
39
+
40
+ 编辑 `config/bot.config.json`,至少填写 OneBot 的 `url`、`accessToken` 和 `roles`。然后使用仓库里的示例:
41
+
42
+ ```bash
43
+ docker compose -f compose.example.yaml up -d
44
+ ```
45
+
46
+ 或者直接运行:
47
+
48
+ ```bash
49
+ docker run -d --name jsbot \
50
+ --restart unless-stopped \
51
+ --init \
52
+ -p 127.0.0.1:8787:8787 \
53
+ -v "$PWD/config:/app/config" \
54
+ -v jsbot-data:/app/data \
55
+ -v jsbot-plugins:/app/plugins \
56
+ ghcr.io/jsbot-dev/jsbot-tellus:latest
57
+ ```
58
+
59
+ 查看日志:
60
+
61
+ ```bash
62
+ docker compose -f compose.example.yaml logs -f
63
+ # 或
64
+ docker logs -f jsbot
65
+ ```
66
+
67
+ ## 路径和卷
68
+
69
+ 镜像内固定使用以下路径:
70
+
71
+ | 容器路径 | 内容 | 说明 |
72
+ | ----------------- | ------------------ | ------------------------------------------------- |
73
+ | `/app/config` | 配置文件目录 | 环境变量 `BOT_CONFIG=/app/config/bot.config.json` |
74
+ | `/app/data` | SQLite 数据库 | 环境变量 `BOT_DATA_DIR=/app/data` |
75
+ | `/app/plugins` | 本地和在线安装插件 | 固定目录,不可通过环境变量修改 |
76
+ | `/app/dist/webui` | WebUI 静态资源 | 随镜像构建 |
77
+
78
+ `data` 和 `plugins` 建议使用命名卷;如果改成宿主目录,需要保证容器内用户可写。
79
+
80
+ 容器以非 root 的 `node` 用户运行,UID/GID 为 `1000:1000`。绑定宿主机目录时先授权:
81
+
82
+ ```bash
83
+ mkdir -p data plugins
84
+ sudo chown -R 1000:1000 data plugins config
85
+ ```
86
+
87
+ ## WebUI
88
+
89
+ WebUI 默认关闭。容器内要让端口可达,配置需要监听 `0.0.0.0`:
90
+
91
+ ```json
92
+ {
93
+ "webui": {
94
+ "enabled": true,
95
+ "host": "0.0.0.0",
96
+ "port": 8787,
97
+ "username": "admin",
98
+ "password": "至少 8 位"
99
+ }
100
+ }
101
+ ```
102
+
103
+ 示例 compose 只把端口发布到宿主机 `127.0.0.1`。WebUI 是完全特权接口,远程访问请放在 HTTPS 反向代理后面,不要直接暴露到公网。反向代理时按需设置 `trustProxy`,详见 [WebUI 文档](webui.md)。
104
+
105
+ 不启用 WebUI 时可以删掉 compose 里的 `ports`,或者不传 `-p`。
106
+
107
+ ## 插件
108
+
109
+ `plugins` 卷必须可写。在线安装器默认关闭;启用后 `/plugin install` 会在容器内调用 npm,把包安装到 `/app/plugins/<id>/`,因此容器需要能访问 npm registry:
110
+
111
+ ```json
112
+ {
113
+ "installer": {
114
+ "enabled": true,
115
+ "registry": "https://registry.npmjs.org/"
116
+ }
117
+ }
118
+ ```
119
+
120
+ 手动放入的本地插件也从 `/app/plugins/<id>/dist` 加载,并在每次启动或重启时尝试重建。镜像已经包含 npm;插件自己的依赖安装在各自的 `node_modules` 中,不需要把宿主机的 `node_modules` 挂进来。
121
+
122
+ ## 升级
123
+
124
+ ```bash
125
+ docker compose -f compose.example.yaml pull
126
+ docker compose -f compose.example.yaml up -d
127
+ ```
128
+
129
+ 需要固定版本时把镜像标签改成完整版本号,例如 `ghcr.io/jsbot-dev/jsbot-tellus:1.2.3`。升级前建议备份 `/app/data` 和 `/app/config`。
130
+
131
+ ## 本地构建
132
+
133
+ ```bash
134
+ docker build -t jsbot-tellus .
135
+ docker run --rm jsbot-tellus --help
136
+ ```
137
+
138
+ 本地开发时也可以直接挂载配置启动:
139
+
140
+ ```bash
141
+ docker run --rm -it \
142
+ -v "$PWD/config:/app/config" \
143
+ -v "$PWD/data:/app/data" \
144
+ -v "$PWD/plugins:/app/plugins" \
145
+ jsbot-tellus
146
+ ```
147
+
148
+ ## 发布机制
149
+
150
+ Docker 镜像由 [`.github/workflows/cd.yaml`](../.github/workflows/cd.yaml) 发布:
151
+
152
+ - `main` 的 CI 成功、并且 npm 发布步骤成功或幂等跳过之后执行;
153
+ - 同时推送 GHCR 和 Docker Hub;
154
+ - 每个仓库独立检查版本标签,已存在则跳过,缺失的一侧会补推;
155
+ - 构建带 GHA 缓存、provenance 和 SBOM,仅 `linux/amd64`。
156
+
157
+ GHCR 使用 `GITHUB_TOKEN` 和 `packages: write`,不需要额外 Secret。Docker Hub 需要在仓库 Actions secrets 中配置 `DOCKERHUB_USERNAME` 和 `DOCKERHUB_TOKEN`(Read & Write Token)。CI 会在每次推送时构建镜像并做 smoke,但不会推送。完整发布流程见[发布流程](release.md)。
158
+
159
+ ## 故障排查
160
+
161
+ - **启动提示找不到配置**:确认 `./config/bot.config.json` 存在,并且挂载到 `/app/config`。
162
+ - **`EACCES` / `permission denied`**:确认宿主机上的 `config`、`data`、`plugins` 目录属于 UID 1000,或改用命名卷。
163
+ - **WebUI 打不开**:确认配置里 `webui.enabled=true`、`host=0.0.0.0`,并且容器端口已发布到宿主机。
164
+ - **在线安装插件失败**:确认 `installer.enabled=true`、容器能访问 registry,并且 `/app/plugins` 可写。
165
+ - **GHCR 拉取 403/404**:首次发布后到仓库的 Packages 设置里把 `jsbot-tellus` 设为 public,或先 `docker login ghcr.io`。
166
+ - **镜像架构不匹配**:当前镜像只有 `linux/amd64`,ARM 设备需要使用 amd64 模拟或自行构建。
@@ -18,7 +18,7 @@
18
18
 
19
19
  ## 本地插件
20
20
 
21
- 以下插件保留在本地,但不进入仓库,从 `plugins/<id>/dist` 自动加载(缺少 `dist` 时会先尝试自动构建):
21
+ 以下插件保留在本地,但不进入仓库,从 `plugins/<id>/dist` 自动加载(每次加载前都会尝试自动重建):
22
22
 
23
23
  | 能力 | 位置 | 说明 |
24
24
  | ---- | -------------- | -------------------------------------------- |
@@ -50,7 +50,7 @@
50
50
  - 插件 setup/start 失败可以回滚。
51
51
  - 长消息转 forward,短消息默认引用回复。
52
52
  - 配置错误包含路径,未知插件 ID 启动失败。
53
- - 本地插件可以从 `plugins/<id>/dist` 自动加载并执行;缺少 `dist` 且带有 `build` 脚本时会先自动构建。
53
+ - 本地插件可以从 `plugins/<id>/dist` 自动加载并执行;带有 `build` 脚本时每次加载都会先自动重建,失败时回退已有 `dist`。
54
54
  - 已安装的 npm 插件包可以在自动重启后加载,安装失败会回滚。
55
55
  - 非 SuperAdmin 不能使用 `/plugin` 的任何子命令,包括 `help` 和 `list`。
56
56
  - `npm run build` 后 `node dist/app.js` 可用。
package/docs/migration.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  - 安装本地依赖:`npm install --prefix plugins/poke`、`npm install --prefix plugins/llm`
10
10
  - 构建本地插件:`npm run build:plugin`
11
- - 启动时加载:应用会自动扫描 `plugins/<id>/dist`,不需要路径参数
11
+ - 启动和重启时加载:应用会自动扫描 `plugins/<id>/dist`,不需要路径参数
12
12
 
13
13
  应用会跳过与内置插件同 ID 的本地插件。没有加载的插件不能出现在 `plugins` 配置中,否则会因未知插件 ID 启动失败。
14
14
 
@@ -184,11 +184,11 @@ const installed = await ctx.core.installer.list()
184
184
  ctx.core.restart()
185
185
  ```
186
186
 
187
- 核心服务由内核注入,适合帮助、状态类插件。`ctx.core.commands.list(event)` 会按当前会话的 `enabled`、`groups`、`private` gating 过滤命令;不传 `event` 时返回全部命令。`ctx.core.installer` 额外提供 `install` / `remove` / `update` / `list`;它不会检查调用者角色,权限判断由调用方负责(`admin` 的 `/plugin` 命令要求 SuperAdmin)。安装器默认关闭,必须在配置中显式启用。`ctx.core.restart()` 请求应用重建运行时并重新加载插件;第三方插件不应把这些方法暴露给普通用户。
187
+ 核心服务由内核注入,适合帮助、状态类插件。`ctx.core.commands.list(event)` 会按当前会话的 `enabled`、`groups`、`private` gating 以及命令的 `messageType` 过滤命令;不传 `event` 时返回全部命令。`ctx.core.installer` 额外提供 `install` / `remove` / `update` / `list`;它不会检查调用者角色,权限判断由调用方负责(`admin` 的 `/plugin` 命令要求 SuperAdmin)。安装器默认关闭,必须在配置中显式启用。`ctx.core.restart()` 请求应用重建运行时并重新加载插件;第三方插件不应把这些方法暴露给普通用户。
188
188
 
189
189
  安装的插件与内置插件运行在同一个宿主进程中,可访问文件系统、网络和 `process.env`,属于完全可信代码,不是安全沙箱。
190
190
 
191
- 自动重启会在同一个 Node.js 进程内重建 Kernel,不会清空 Node 的 ESM 模块缓存。安装包的入口文件会附加查询参数来绕过缓存,但入口相对导入的辅助模块仍可能复用旧代码;通过 `plugins/` 加载的本地插件也不会被缓存刷新。更新多文件插件包后,请完整退出并重新启动进程。
191
+ 自动重启会在同一个 Node.js 进程内重建 Kernel,不会清空 Node 的 ESM 模块缓存。每次加载都会重新构建带 `build` 脚本的插件,并给入口文件附加基于修改时间的查询参数来绕过缓存;但入口相对导入的辅助模块仍可能复用旧代码。更新多文件插件包后,请完整退出并重新启动进程。
192
192
 
193
193
  ## 命令
194
194
 
@@ -215,11 +215,14 @@ ctx.commands.register(
215
215
  | `aliases` | `[]` | 别名 |
216
216
  | `prefixes` | `['/']` | 前缀;空字符串表示无前缀 |
217
217
  | `permission` | `'User'` | `User`、`Admin`、`SuperAdmin` |
218
+ | `messageType` | 无 | `'group'`、`'private'` 或数组,限定生效会话 |
218
219
  | `description` | 无 | `/help` 中展示 |
219
220
  | `params` | 无 | Koishi 风格参数声明;省略时 handler 行为不变 |
220
221
 
221
222
  `name` 和 `aliases` 的每一项只能是一个路径段;多级命令请使用 `commands.group()`。
222
223
 
224
+ `messageType` 省略时群聊和私聊都可触发;`messageType: 'group'` 只匹配群消息,私聊中的同名文本会继续进入 `onMessage`。命令组会继承该设置,子命令可以覆盖。
225
+
223
226
  ### 参数
224
227
 
225
228
  `params` 用字符串声明位置参数,解析结果从 handler 的第四个参数开始按位置传入:
@@ -240,14 +243,15 @@ ctx.commands.register(
240
243
 
241
244
  声明语法:
242
245
 
243
- | 写法 | 说明 |
244
- | -------------------- | ---------------------------------------- |
245
- | `<arg>` | 必填字符串参数 |
246
- | `[arg]` | 可选字符串参数 |
247
- | `<arg:type>` | 指定类型的必填参数 |
248
- | `[arg:type=default]` | 可选参数及默认值 |
249
- | `<arg:text>` | 文本参数,消费全部剩余输入,必须放在最后 |
250
- | `[...rest]` | 变长参数,每个剩余 token 作为一个字符串 |
246
+ | 写法 | 说明 |
247
+ | --------------------- | ---------------------------------------- |
248
+ | `<arg>` | 必填字符串参数 |
249
+ | `[arg]` | 可选字符串参数 |
250
+ | `<arg:type>` | 指定类型的必填参数 |
251
+ | `[arg:type=default]` | 可选参数及默认值 |
252
+ | `<arg:string(2..10)>` | 带长度限制的字符串参数 |
253
+ | `<arg:text>` | 文本参数,消费全部剩余输入,必须放在最后 |
254
+ | `[...rest]` | 变长参数,每个剩余 token 作为一个字符串 |
251
255
 
252
256
  内置类型:
253
257
 
@@ -261,15 +265,27 @@ ctx.commands.register(
261
265
  - `reply`:当前消息引用(回复)的消息 ID,解析为数字。该参数不消费命令文本,而是从事件中的 `reply` 分段读取;未引用消息时必填参数会报错,且不能声明默认值。引用消息发送命令时,`raw_message` 开头的 `[CQ:reply,...]` 会被忽略,命令仍能正常匹配。
262
266
  - `[...rest]`:把剩余 token 依次收集为字符串;只能放在最后,且没有必填形式。
263
267
 
268
+ `string` 和 `text` 可以在类型后追加长度限制,按 Unicode 码点计数,区间两端都包含:
269
+
270
+ ```ts
271
+ params: '<message:text(2..200)> [nickname:string(..16)]'
272
+ ```
273
+
274
+ - `(..10)`:最多 10 个字符。
275
+ - `(2..)`:至少 2 个字符。
276
+ - `(2..10)`:2 到 10 个字符。
277
+ - 只能用于 `string` / `text`;其他类型和 `[...rest]` 会报声明错误。
278
+ - 默认值也会在注册时校验;usage 不会显示长度限制。
279
+
264
280
  固定参数可以用双引号或单引号包裹,例如 `/ask "hello world" 2` 会把 `hello world` 作为一个 token;引号内的反斜杠用于转义。
265
281
 
266
282
  解析规则:
267
283
 
268
284
  - `match.args` 和 `match.rest` 保持原始内容,不会被参数解析结果替换。
269
285
  - 声明槽位填完后,多余 token 会被忽略并记录 debug 日志,不会报错。`text` 和 `rest` 会消费全部剩余输入,因此不存在多余 token。
270
- - 必填参数缺失、已声明槽位类型错误或引号未闭合时,Router 会自动回复错误和用法,handler 不会执行。
286
+ - 必填参数缺失、已声明槽位类型错误、长度不符合限制或引号未闭合时,Router 会自动回复错误和用法,handler 不会执行。
271
287
  - usage 会自动生成,并显示在 `/help` 和指令组根命令的用法提示中。
272
- - 必填参数不能出现在可选参数之后;参数名不能重复;`text` 和变长参数必须放在最后;必填参数不能声明默认值。
288
+ - 必填参数不能出现在可选参数之后;参数名不能重复;`text` 和变长参数必须放在最后;必填参数不能声明默认值;长度限制只能用于 `string` / `text`,上下限必须是非负整数且下限不能大于上限。
273
289
  - 当 `params` 是字符串字面量时,handler 从第四个参数开始的位置参数类型会自动推导。例如 `<question:string> [count:integer=1]` 会推导为 `(question: string, count: number)`,`[name:string]` 会推导为 `string | undefined`,`[...rest]` 会推导为 `...string[]`。
274
290
  - 需要在类型位置复用推导结果时,可以使用导出的 `CommandParamArgs<'<question:string>'>`。
275
291
  - 也可以继续手写 handler 参数注解;注解与声明不一致时会在编译期报错。
@@ -331,7 +347,7 @@ ctx.commands.group(
331
347
 
332
348
  - `group()` 的 `name` 和 `aliases` 同样是单个路径段;通过嵌套 `group()` 组成任意层级。
333
349
  - 子命令自动拼接组路径,例如上面的 `plugin` + `install` 对应 `/plugin install`。
334
- - 子命令默认继承组的 `prefixes`、`permission`,也可以在子命令上覆盖。
350
+ - 子命令默认继承组的 `prefixes`、`permission`、`messageType`,也可以在子命令上覆盖。
335
351
  - 组别名和子命令别名会自动组合;组 `plugin` 别名 `p`、子命令 `install` 别名 `i` 时,`/p i` 也能命中。
336
352
  - 组根没有提供 `handler` 时,会自动注册根命令并生成用法提示,列出直接子命令、参数用法和描述。
337
353
  - 组根提供了 `handler` 时,未命中子命令的输入(例如 `/plugin`、`/plugin help`、`/plugin unknown`)会进入该 handler。
@@ -372,6 +388,16 @@ ctx.events.onMessage(async (event, context) => {
372
388
  }
373
389
  })
374
390
 
391
+ ctx.events.onGroupMessage(async (event, context) => {
392
+ // 只处理群消息,event.message_type 收窄为 'group'
393
+ await context.send(`${event.group_id} 收到消息`)
394
+ })
395
+
396
+ ctx.events.onPrivateMessage(async (_event, context) => {
397
+ // 只处理私聊消息
398
+ await context.send('私聊收到')
399
+ })
400
+
375
401
  ctx.events.onNotice(
376
402
  { noticeType: 'notify', subType: 'poke' },
377
403
  async (event, context) => {
@@ -389,6 +415,8 @@ ctx.events.onRequest({ requestType: 'friend' }, async (event) => {
389
415
 
390
416
  未匹配命令的消息才会进入 message handler。notice/request handler 会先按类型过滤,再检查插件 gating。
391
417
 
418
+ `onGroupMessage` / `onPrivateMessage` 与 SDK 的同名方法对齐,在注册时按 `message_type` 过滤,事件类型分别收窄为群消息和私聊消息。
419
+
392
420
  ## 中间件
393
421
 
394
422
  ```ts
@@ -475,7 +503,7 @@ manifest: {
475
503
 
476
504
  完整的目录约定、创建步骤和本地调试流程见[插件开发指南](plugin-development.md)。
477
505
 
478
- 本地插件固定放在 `plugins/<id>/dist`,应用启动时自动扫描,不需要路径参数:
506
+ 本地插件固定放在 `plugins/<id>/dist`,应用启动和运行时重启时自动扫描,不需要路径参数:
479
507
 
480
508
  ```bash
481
509
  npm run build
@@ -521,7 +549,7 @@ npm run build:plugin
521
549
  node dist/app.js
522
550
  ```
523
551
 
524
- 应用会自动扫描 `plugins/<id>/dist`;没有 `dist` 的本地插件如果带有 `build` 脚本且依赖已安装,会先自动构建再加载,构建失败则记录警告并跳过。示例见 [`examples/plugins/hello`](../examples/plugins/hello)。
552
+ 应用每次加载都会扫描 `plugins/<id>/dist`;带有 `build` 脚本且依赖已安装的插件会先自动构建再加载,构建失败时回退已有 `dist`,没有可用产物才记录警告并跳过。示例见 [`examples/plugins/hello`](../examples/plugins/hello)。
525
553
 
526
554
  ## 通过 npm 发布与安装
527
555