@zaofan/dsh-qqbot 1.6.6 → 1.6.7

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 (37) hide show
  1. package/README.md +42 -0
  2. package/client/qqbot-settings.js +281 -9
  3. package/dist/api/group-admin.d.ts +26 -0
  4. package/dist/api/group-admin.d.ts.map +1 -1
  5. package/dist/api/group-admin.js +38 -0
  6. package/dist/api/group-admin.js.map +1 -1
  7. package/dist/channel-tools.d.ts +45 -0
  8. package/dist/channel-tools.d.ts.map +1 -1
  9. package/dist/channel-tools.js +77 -10
  10. package/dist/channel-tools.js.map +1 -1
  11. package/dist/config.d.ts +7 -0
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +3 -0
  14. package/dist/config.js.map +1 -1
  15. package/dist/features/botplay-ext.d.ts +269 -0
  16. package/dist/features/botplay-ext.d.ts.map +1 -0
  17. package/dist/features/botplay-ext.js +213 -0
  18. package/dist/features/botplay-ext.js.map +1 -0
  19. package/dist/features/botplay.d.ts +152 -21
  20. package/dist/features/botplay.d.ts.map +1 -1
  21. package/dist/features/botplay.js +706 -21
  22. package/dist/features/botplay.js.map +1 -1
  23. package/dist/features/extension-store.d.ts +49 -0
  24. package/dist/features/extension-store.d.ts.map +1 -1
  25. package/dist/features/extension-store.js +90 -0
  26. package/dist/features/extension-store.js.map +1 -1
  27. package/dist/features/session-registry.d.ts +17 -0
  28. package/dist/features/session-registry.d.ts.map +1 -1
  29. package/dist/features/session-registry.js +24 -0
  30. package/dist/features/session-registry.js.map +1 -1
  31. package/dist/gateway/bootstrap.d.ts.map +1 -1
  32. package/dist/gateway/bootstrap.js +15 -1
  33. package/dist/gateway/bootstrap.js.map +1 -1
  34. package/docs/USER-GUIDE.md +230 -27
  35. package/docs/botplay-contract.md +92 -0
  36. package/package.json +2 -1
  37. package/settings-host.js +4533 -4245
@@ -0,0 +1 @@
1
+ {"version":3,"file":"botplay-ext.js","sourceRoot":"","sources":["../../src/features/botplay-ext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,yBAAyB;AACzB,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;AAEvE,mDAAmD;AACnD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,qBAAqB;AACrB,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5C,CAAC;AAED,oBAAoB;AACpB,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,IAAY;IAChE,OAAO,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AACrF,CAAC;AA0ND,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAC5B,IAAuB,EACvB,EAGC,EACD,MAAc,EACd,OAAmD;IAEnD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAE9D,mDAAmD;IACnD,MAAM,YAAY,GAAG,KAAK,EAAE,IAAqC,EAAE,IAAY,EAAoB,EAAE;QACnG,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrB,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,8CAA8C,CAAC,CAAC;YACnE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC;YAAC,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;QAAC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAAI,eAAe,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9G,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;IACrC,OAAO;QACL,KAAK,EAAE;YACL,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC;YACzC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,GAAG;YAC7C,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,MAAM,EAAE,EAAE,CAAC,MAAM;SAClB;QACD,MAAM;QACN,OAAO,EAAE,OAAO,EAAE,aAAa,IAAI,CAAC;QACpC,IAAI,IAAI;YACN,OAAO;gBACL,MAAM;gBACN,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC3C,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;aAClD,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACzB,wDAAwD;QACxD,IAAI,KAAK;YACP,IAAI,CAAC;gBAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,EAAE,CAAA;YAAC,CAAC;QAC3F,CAAC;QACD,6CAA6C;QAC7C,IAAI,SAAS;YACX,IAAI,CAAC;gBAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,EAAE,CAAA;YAAC,CAAC;QAC/F,CAAC;QACD;;;WAGG;QACH,YAAY,EAAE,CAAC,IAAY,EAAoB,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC;QACrF;;;WAGG;QACH,UAAU,EAAE,CAAC,IAAY,EAAoB,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC;QACjF,8CAA8C;QAC9C,GAAG,EAAE,KAAK,EACR,IAAY,EACZ,IAAuE,EACqB,EAAE;YAC9F,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBACzC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,CAAC;YACtF,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5F,CAAC;QACH,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QACjC,KAAK,EAAE;YACL,IAAI;gBACF,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;oBACrC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5E,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC,CAAC,4BAA4B;gBAC3C,CAAC;YACH,CAAC;YACD,IAAI,CAAC,IAA6B;gBAChC,IAAI,CAAC;oBACH,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnD,MAAM,GAAG,GAAG,GAAG,SAAS,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;oBAC7C,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC1D,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,+CAA+C;oBAC3E,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAAI,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC3G,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YACD,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;SACtB;QACD,IAAI;YACF,OAAO,IAAI,CAAC,SAAgD,CAAC;QAC/D,CAAC;QACD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAsB,EAAoB,EAAE;YAC/D,MAAM,GAAG,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,QAAQ,EAAE,CAAC,OAAe,EAAoB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACrF,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,EAAE,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;QAC5C,SAAS,EAAE,CAAC,EAAU,EAAE,EAAE;YACxB,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC9D,CAAC;QACD,UAAU,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC5D,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE;QACnC,GAAG,EAAE,CAAC,GAAG,IAAe,EAAQ,EAAE;YAChC,IAAI,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;QAC/J,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qEAAqE;AAErE;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAY;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC;IAClG,CAAC;IAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;AAC3B,CAAC;AAED,qBAAqB;AACrB,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAK,GAAG,EAAE;IAC1D,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1E,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1,21 +1,26 @@
1
- /**
2
- * botplay.ts — botplay 互动事件装配器(2026-09-08, Phase1 MVP)
3
- *
4
- * 设计定稿见工作区 参考文档/botplay互动事件装配器_设计完整稿.md(唯一权威):
5
- * 一句话本质 = 自定义 bot 互动事件: ①bot(非LLM)发出什么交互卡片 →
6
- * ②用户点哪个按钮 → ③这件事要不要/怎么影响 LLM, 全部可配置。
7
- *
8
- * 本文件职责(参照 qq-approval.ts / qq-user-questions.ts 的注册表范式):
9
- * - BotplayController: 发卡(trigger) + interaction 回调结算(handleInteraction)
10
- * + append 三档(no_append / append_silent / append_wake)
11
- * - 事件配置从 live config(config.botplayEvents, settings 同源热更)现读;
12
- * dock「🎮 互动事件」装配器编辑后保存即热更, 无需重启。
13
- * - /botplay 命令经 triggerBotplay() 模块级注册表触发(仿 outbound-mode-switch)。
14
- *
15
- * Phase1 MVP 范围: schema 最小集(id/name/buttons[label,botAction.reply_text,
16
- * llmEffect.mode]/maxClicks/expireSec); perm 默认 all, triggerer 推荐;
17
- * 行为类型 reply_text 落地, jump_url/callback 预留。
18
- */
1
+ /** 官方 group-admin 客户端的最小外形(只用到 getMemberInfo;避免与 api/group-admin 强耦合) */
2
+ type GroupAdminLike = {
3
+ /** 带 token 的通用官方 API 调用(自定义事件模块的 ctx.api 就转调它) */
4
+ apiCall?: (method: 'GET' | 'POST' | 'PATCH' | 'DELETE', path: string, body?: unknown) => Promise<{
5
+ ok: true;
6
+ data: unknown;
7
+ } | {
8
+ ok: false;
9
+ err: {
10
+ code: string;
11
+ human: string;
12
+ };
13
+ }>;
14
+ getMemberInfo?: (gid: string, memberOpenid: string) => Promise<{
15
+ ok: boolean;
16
+ data?: {
17
+ username?: string;
18
+ };
19
+ err?: {
20
+ code?: string;
21
+ };
22
+ }>;
23
+ };
19
24
  import type { ReplyTarget } from '@tencent-connect/qqbot-nodejs';
20
25
  import type { QQBotSender } from '../transport/outbound-buffer.js';
21
26
  import type { SessionManager } from '../session/index.js';
@@ -59,6 +64,8 @@ export declare class BotplayController {
59
64
  private readonly ownersGetter;
60
65
  /** 台账 dataDir getter(表情包目录; 点击人昵称反查, 与 dock 禁言面板同源) */
61
66
  private readonly ledgerDataDirGetter;
67
+ /** 数据根 getter(2026-10-05: 自定义事件模块放 {dataRoot}/.qqbot-extensions/botplay/) */
68
+ private readonly dataRootGetter;
62
69
  private readonly cards;
63
70
  constructor(manager: SessionManager, sender: QQBotSender, logger: Logger,
64
71
  /** live 事件配置 getter(config.botplayEvents, 每次现读支持热更) */
@@ -66,10 +73,65 @@ export declare class BotplayController {
66
73
  /** 主人 openid 白名单 getter(config.groupAdmin.owners; perm=owner 用) */
67
74
  ownersGetter: () => string[],
68
75
  /** 台账 dataDir getter(表情包目录; 点击人昵称反查, 与 dock 禁言面板同源) */
69
- ledgerDataDirGetter: () => string);
76
+ ledgerDataDirGetter: () => string,
77
+ /** 数据根 getter(2026-10-05: 自定义事件模块放 {dataRoot}/.qqbot-extensions/botplay/) */
78
+ dataRootGetter?: () => string);
70
79
  /** 指令型按钮执行器(bootstrap 注入: 执行斜杠命令并返回文本) */
71
80
  private commandExecutor;
72
81
  setCommandExecutor(fn: ((cmdName: string, target: ReplyTarget) => Promise<string>) | undefined): void;
82
+ /** API 兜底查到的昵称缓存:`${peerId}|${openid}` → name */
83
+ private readonly memberNameApiCache;
84
+ /** 正在后台查的 key(防同一人并发重复查) */
85
+ private readonly memberNameProbing;
86
+ /** 官方 group-admin 客户端 getter(bootstrap 注入;没注入就跳过兜底) */
87
+ private groupAdminGetter;
88
+ setGroupAdminGetter(fn: (() => GroupAdminLike | undefined) | undefined): void;
89
+ /** bot 凭证 getter(卡片 = 代码,直接把 appId/appSecret 给它,让它自己调官方 API) */
90
+ private credentialsGetter;
91
+ setCredentialsGetter(fn: (() => {
92
+ appId: string;
93
+ appSecret: string;
94
+ }) | undefined): void;
95
+ /**
96
+ * 后台探测某人昵称(不阻塞调用方)。
97
+ * 命中 → 写进 memberNameApiCache,下次同步调用就能拿到真名。
98
+ * 未命中/无权限/网络错 → 静默(只记一行日志,避免刷屏)。
99
+ */
100
+ private probeMemberNameAsync;
101
+ /** 已加载模块缓存: 绝对路径 → 加载结果(按 mtime 判热重载; 不按时间戳刷 URL, 见 fileVersion 注释) */
102
+ private readonly extModules;
103
+ /** 每实例每按钮点击计数: `${cardId}|${buttonId}` → 次数(自定义事件的"是否点过"判据) */
104
+ private readonly extClicks;
105
+ /** 加载失败原因: 文件名 → 错误(面板展示红色摘要) */
106
+ private readonly extErrors;
107
+ /** 面板用: 每个自定义事件模块的状态(路径/是否存在/mtime/加载错误) —— settings-host 经此展示 */
108
+ extStatus(): Array<{
109
+ file: string;
110
+ path: string;
111
+ exists: boolean;
112
+ mtime: number;
113
+ loadedMtime: number;
114
+ name: string;
115
+ error: string;
116
+ hooks: string[];
117
+ }>;
118
+ /** 诊断日志(自定义事件加载/点击/报错都落这个文件; 面板可读) */
119
+ private extDiag;
120
+ private statFile;
121
+ /** 事件是否由自定义模块驱动(带 file 且文件名合法) */
122
+ private extFileOf;
123
+ /**
124
+ * 取(或热重载)模块: mtime 没变就复用缓存实例(模块里的内存状态得以跨卡持有),
125
+ * 变了就重新 import(`?v=<mtime>`)。加载失败**不抛**, 返回 {error}。
126
+ */
127
+ private loadExt;
128
+ /** 热重载指定模块(文件名; 空=全部): 清缓存 → 下次解析卡片自动加载新版本 */
129
+ reloadExt(file?: string): {
130
+ ok: boolean;
131
+ msg: string;
132
+ };
133
+ /** 列表(面板/命令共用): 带"是否自定义事件"标记 */
134
+ listExtFiles(): string[];
73
135
  /** 列出所有事件(公开, dock/命令共用) */
74
136
  listEvents(): BotplayEventConfig[];
75
137
  /** 按事件 id 精确查(live 现读) */
@@ -77,8 +139,31 @@ export declare class BotplayController {
77
139
  /**
78
140
  * 触发发卡(/botplay 事件名)。定位会话用命令上下文所在 scope/peerId,
79
141
  * 归属人 = 触发者本人 openid(group=c2c 同 senderId)。
142
+ *
143
+ * 2026-10-05 加: 事件带 `file`(自定义事件模块)时, 按钮/正文先问模块要(见 resolveExtCard),
144
+ * 模块挂了也不挡发卡(回落到事件自带的按钮配置)。
80
145
  */
81
146
  trigger(target: ReplyTarget, eventId: string, triggererId: string): Promise<BotplayTriggerResult>;
147
+ /**
148
+ * 解析自定义事件卡片: 加载模块 → 跑 onInit → 收下模块给的按钮/正文。
149
+ *
150
+ * 为什么整条 fail-soft 到底: 模块是主人(或 AI)手写的代码, 语法错了/钩子抛错都不该
151
+ * 让"发个卡片"这种小事炸掉, 更不该影响其它事件与 QQ 正常聊天 —— 一律记诊断 + 回落。
152
+ * 返回 state.buttons 一定非空(模块没给就用事件自带按钮)。
153
+ */
154
+ private resolveExtCard;
155
+ /**
156
+ * 构造自定义模块的 ctx(每个卡片实例一个)。
157
+ * 说明: ctx.emit/markdown/image 都发往**该实例卡片所在的会话**(target), 不是点击人私聊 ——
158
+ * 群里的签到统计就该发群里; 要私聊给某人可以 ctx.markdown 之外自己判断(本期不做)。
159
+ */
160
+ private buildExtCtx;
161
+ /** 把模块给的按钮洗成合法形状(缺 id/label 的丢掉; 防止脏数据把 keyboard 生成搞炸) */
162
+ private sanitizeExtButtons;
163
+ /** 点击后按钮变了 ⇒ 重发卡片刷新(QQ 没有现成的"改卡片"接口, 重发是可靠做法) */
164
+ private refreshCard;
165
+ /** 清理一个卡片实例的扩展资源(点击计数/模块 onDispose) */
166
+ private disposeCard;
82
167
  /** 发送事件目录卡(/botplay 无参 或 目录卡翻页; 点事件名按钮 → handleInteraction 直接触发) */
83
168
  sendCatalog(target: ReplyTarget, page?: number): Promise<BotplayTriggerResult>;
84
169
  /**
@@ -88,6 +173,19 @@ export declare class BotplayController {
88
173
  * @returns true = 已被 botplay 消费(调用方无需其它处理)
89
174
  */
90
175
  handleInteraction(event: unknown, replyTarget: ReplyTarget): Promise<boolean>;
176
+ /** 内置三型按钮行为(reply_text / jump_url / command; 普通事件用) */
177
+ private runBuiltinAction;
178
+ /**
179
+ * 跑自定义模块的 onClick(2026-10-05)。
180
+ *
181
+ * 顺序(为什么这么排):
182
+ * ① 计数先 ++, 让模块里的 ctx.clicked 立刻反映"这是第几次点"(签到判重的关键);
183
+ * ② 跑模块(它可能改按钮/正文/发消息/持久化);
184
+ * ③ 模块返回非空字符串 → 当普通文本回给点击者(比让模块自己 emit 更省事);
185
+ * ④ 模块把卡片改脏 → 重发卡片刷新按钮(QQ 没"改卡片"接口, 重发是可靠做法);
186
+ * ⑤ 模块抛错 → 回一句人话 + 落诊断, 绝不让一次点击把插件带崩(fail-soft)。
187
+ */
188
+ private runExtClick;
91
189
  /**
92
190
  * 点击人可读标签(与 dock 禁言面板/审批同源的昵称反查):
93
191
  * ①群成员台账 group-members.jsonl(gid:mid → name, 由 chat-ledger 中间件持续记录)
@@ -96,6 +194,12 @@ export declare class BotplayController {
96
194
  * ④全 miss 回落 openid。
97
195
  */
98
196
  private clickerLabel;
197
+ /**
198
+ * 昵称反查(2026-10-05 从 clickerLabel 抽出来给自定义模块用): 只要**纯昵称**, 不带 openid 尾巴
199
+ * (签到统计那种"列出所有签到者名字"的场景, 名字后面挂截断 openid 很难看)。
200
+ * 数据源与 clickerLabel 同源(见其注释): 群成员台账 → 私聊台账 → 会话消息壳 → 回落 openid。
201
+ */
202
+ private memberName;
99
203
  /** 权限判定: all 放行 / triggerer=触发者本人 / owner=主人白名单 / users=指定 openid */
100
204
  private checkPerm;
101
205
  /**
@@ -105,9 +209,15 @@ export declare class BotplayController {
105
209
  */
106
210
  private applyEffect;
107
211
  private safeReply;
108
- /** 清理全部活动卡(dispose 用) */
212
+ /**
213
+ * 通知自定义模块"这张卡片过期了"(onExpire; 2026-10-05)。
214
+ * 为什么要有: 签到类事件常要"到点自动结算/清场", 模块没有这个回调就只能等主人手点。
215
+ * fail-soft: 模块抛错只记日志。
216
+ */
217
+ private fireExtExpire;
218
+ /** 清理全部活动卡(dispose 用; 自定义事件会收到 onDispose) */
109
219
  clear(): void;
110
- /** 扫掉过期卡(Phase2: 定期/触发时调用, 防内存积压) */
220
+ /** 扫掉过期卡(Phase2: 定期/触发时调用, 防内存积压; 2026-10-05 顺带通知模块 onExpire) */
111
221
  sweepExpired(): number;
112
222
  /** 活动卡数量(诊断用) */
113
223
  get cardCount(): number;
@@ -127,6 +237,27 @@ export declare function botplayCatalog(ns: string, target: ReplyTarget, page?: n
127
237
  export declare function listBotplayEventsAny(): Array<BotplayEventConfig & {
128
238
  ns: string;
129
239
  }>;
240
+ /** 取某 ns 的 botplay 控制器(未注册返回 undefined) */
241
+ export declare function botplayControllerOf(ns: string): BotplayController | undefined;
242
+ /**
243
+ * 面板用: 某实例的自定义事件模块状态(路径/是否存在/mtime/加载错误/hooks)。
244
+ * 找不到实例时返回空数组(面板显示"未就绪"即可, 不报错)。
245
+ */
246
+ export declare function botplayExtStatus(ns: string): Array<{
247
+ file: string;
248
+ path: string;
249
+ exists: boolean;
250
+ mtime: number;
251
+ loadedMtime: number;
252
+ name: string;
253
+ error: string;
254
+ hooks: string[];
255
+ }>;
256
+ /** 面板「🔄 重载模块」用: 热重载指定模块(空=全部); 不重启宿主 */
257
+ export declare function reloadBotplayExt(ns: string, file?: string): {
258
+ ok: boolean;
259
+ msg: string;
260
+ };
130
261
  /**
131
262
  * 取指定实例的事件列表(命令层 /botplay 用)。
132
263
  * ⚠️ 2026-09-10 修复: 事件存储自 M4.3 起已迁到 {dataRoot}/botplay-events.json, 但命令层仍在读
@@ -1 +1 @@
1
- {"version":3,"file":"botplay.d.ts","sourceRoot":"","sources":["../../src/features/botplay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"botplay.d.ts","sourceRoot":"","sources":["../../src/features/botplay.ts"],"names":[],"mappings":"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"}