@zhin.js/adapter-napcat 0.1.13 → 0.1.15

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 (67) hide show
  1. package/CHANGELOG.md +36 -13
  2. package/README.md +121 -0
  3. package/client/NapCatManagement.tsx +113 -0
  4. package/client/index.tsx +11 -0
  5. package/client/tsconfig.json +7 -0
  6. package/client/utils/api.ts +30 -0
  7. package/dist/index.js +27 -0
  8. package/lib/adapter.d.ts +3 -0
  9. package/lib/adapter.d.ts.map +1 -1
  10. package/lib/adapter.js +5 -2
  11. package/lib/adapter.js.map +1 -1
  12. package/lib/agent-prompt.d.ts +3 -0
  13. package/lib/agent-prompt.d.ts.map +1 -0
  14. package/lib/agent-prompt.js +107 -0
  15. package/lib/agent-prompt.js.map +1 -0
  16. package/lib/bot-base.d.ts +6 -1
  17. package/lib/bot-base.d.ts.map +1 -1
  18. package/lib/bot-base.js +35 -1
  19. package/lib/bot-base.js.map +1 -1
  20. package/lib/bot-http.d.ts +2 -1
  21. package/lib/bot-http.d.ts.map +1 -1
  22. package/lib/bot-http.js +23 -1
  23. package/lib/bot-http.js.map +1 -1
  24. package/lib/bot-ws-client.d.ts +2 -0
  25. package/lib/bot-ws-client.d.ts.map +1 -1
  26. package/lib/bot-ws-client.js +32 -0
  27. package/lib/bot-ws-client.js.map +1 -1
  28. package/lib/bot-ws-server.d.ts +2 -1
  29. package/lib/bot-ws-server.d.ts.map +1 -1
  30. package/lib/bot-ws-server.js +14 -0
  31. package/lib/bot-ws-server.js.map +1 -1
  32. package/lib/index.d.ts +5 -1
  33. package/lib/index.d.ts.map +1 -1
  34. package/lib/index.js +22 -1
  35. package/lib/index.js.map +1 -1
  36. package/lib/napcat-inbound.d.ts +21 -0
  37. package/lib/napcat-inbound.d.ts.map +1 -0
  38. package/lib/napcat-inbound.js +55 -0
  39. package/lib/napcat-inbound.js.map +1 -0
  40. package/lib/onebot-get-msg.d.ts +3 -0
  41. package/lib/onebot-get-msg.d.ts.map +1 -0
  42. package/lib/onebot-get-msg.js +27 -0
  43. package/lib/onebot-get-msg.js.map +1 -0
  44. package/lib/routes.d.ts +4 -0
  45. package/lib/routes.d.ts.map +1 -0
  46. package/lib/routes.js +61 -0
  47. package/lib/routes.js.map +1 -0
  48. package/lib/types.d.ts +18 -0
  49. package/lib/types.d.ts.map +1 -1
  50. package/lib/typing-indicator.d.ts +45 -0
  51. package/lib/typing-indicator.d.ts.map +1 -0
  52. package/lib/typing-indicator.js +132 -0
  53. package/lib/typing-indicator.js.map +1 -0
  54. package/package.json +22 -6
  55. package/plugin.yml +1 -1
  56. package/src/adapter.ts +3 -3
  57. package/src/agent-prompt.ts +115 -0
  58. package/src/bot-base.ts +36 -1
  59. package/src/bot-http.ts +19 -1
  60. package/src/bot-ws-client.ts +34 -0
  61. package/src/bot-ws-server.ts +16 -1
  62. package/src/index.ts +41 -2
  63. package/src/napcat-inbound.ts +57 -0
  64. package/src/onebot-get-msg.ts +33 -0
  65. package/src/routes.ts +61 -0
  66. package/src/types.ts +13 -0
  67. package/src/typing-indicator.ts +183 -0
package/lib/index.js CHANGED
@@ -3,29 +3,37 @@
3
3
  * 支持 OneBot11 标准 + go-cqhttp 扩展 + NapCat 独有 API
4
4
  * 连接方式:正向 WS / 反向 WS / HTTP
5
5
  */
6
- import { usePlugin, createGroupManagementTools } from 'zhin.js';
6
+ import path from 'path';
7
+ import { usePlugin, createGroupManagementTools, registerAgentPromptContributor, unregisterAgentPromptContributor, } from 'zhin.js';
7
8
  import { NapCatAdapter } from './adapter.js';
8
9
  import { createNapCatTools } from './tools.js';
10
+ import { createNapCatAgentPromptContributor } from './agent-prompt.js';
11
+ import { registerRoutes } from './routes.js';
9
12
  export * from './types.js';
10
13
  export { NapCatWsClient } from './bot-ws-client.js';
11
14
  export { NapCatWsServer } from './bot-ws-server.js';
12
15
  export { NapCatHttpBot } from './bot-http.js';
13
16
  export { NapCatAdapter } from './adapter.js';
14
17
  export { NapCatBotBase } from './bot-base.js';
18
+ export { NapCatTypingIndicatorManager, enableTypingIndicator, } from './typing-indicator.js';
15
19
  const plugin = usePlugin();
16
20
  const { provide, useContext } = plugin;
21
+ // ── 适配器注册 ─────────────────────────────────────────────────────
17
22
  provide({
18
23
  name: 'napcat',
19
24
  description: 'NapCatQQ 适配器(OneBot11 + go-cqhttp + NapCat 扩展,正向/反向 WS + HTTP)',
20
25
  mounted: async (p) => {
26
+ registerAgentPromptContributor(createNapCatAgentPromptContributor());
21
27
  const adapter = new NapCatAdapter(p);
22
28
  await adapter.start();
23
29
  return adapter;
24
30
  },
25
31
  dispose: async (adapter) => {
32
+ unregisterAgentPromptContributor('napcat');
26
33
  await adapter.stop();
27
34
  },
28
35
  });
36
+ // ── AI 工具注册 ────────────────────────────────────────────────────
29
37
  useContext('tool', 'napcat', (toolService, napcat) => {
30
38
  const disposers = [];
31
39
  const groupTools = createGroupManagementTools(napcat, 'napcat');
@@ -34,4 +42,17 @@ useContext('tool', 'napcat', (toolService, napcat) => {
34
42
  disposers.push(...napcatTools.map(t => toolService.addTool(t, plugin.name)));
35
43
  return () => disposers.forEach(d => d());
36
44
  });
45
+ // ── Web 控制台入口 ─────────────────────────────────────────────────
46
+ useContext('web', (pageManager) => {
47
+ pageManager.addEntry({
48
+ id: 'napcat',
49
+ development: path.resolve(import.meta.dirname, '../client/index.tsx'),
50
+ production: path.resolve(import.meta.dirname, '../dist/index.js'),
51
+ meta: { name: 'NapCat' },
52
+ });
53
+ });
54
+ // ── HTTP 路由 ──────────────────────────────────────────────────────
55
+ useContext('router', 'napcat', async (router, napcat) => {
56
+ registerRoutes(router, napcat);
57
+ });
37
58
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAoD,0BAA0B,EAAoB,MAAM,SAAS,CAAC;AACpI,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAkB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAa9C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAEvC,OAAO,CAAC;IACN,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,gEAAgE;IAC7E,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAsB,EAAE,EAAE;QACxC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CAC8B,CAAC,CAAC;AAEnC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,WAAwB,EAAE,MAAqB,EAAE,EAAE;IAC/E,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,MAAM,UAAU,GAAG,0BAA0B,CAC3C,MAAqC,EACrC,QAAQ,CACT,CAAC;IACF,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE5E,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC9C,SAAS,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7E,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * NapCat 入站消息治理:去重、自发过滤、消息归一化
3
+ */
4
+ import type { NapCatMessageEvent, MessageSegment } from './types.js';
5
+ export declare class InboundMessageDeduper {
6
+ private readonly seen;
7
+ shouldProcess(messageId: string): boolean;
8
+ clear(): void;
9
+ }
10
+ /** 判断是否为 bot 自身发出的消息 */
11
+ export declare function isSelfMessage(event: NapCatMessageEvent): boolean;
12
+ /**
13
+ * 将 message 字段归一化为 MessageSegment[]。
14
+ * NapCat 通常返回数组,但某些配置下可能返回 CQ 字符串。
15
+ */
16
+ export declare function normalizeMessage(message: MessageSegment[] | string): MessageSegment[];
17
+ /**
18
+ * 生成用于 notice / request 事件的去重 key
19
+ */
20
+ export declare function resolveSideEventDedupeKey(event: any, prefix: string): string;
21
+ //# sourceMappingURL=napcat-inbound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"napcat-inbound.d.ts","sourceRoot":"","sources":["../src/napcat-inbound.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIrE,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAElD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAUzC,KAAK,IAAI,IAAI;CAGd;AAED,wBAAwB;AACxB,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAMhE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,GAAG,cAAc,EAAE,CAMrF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO5E"}
@@ -0,0 +1,55 @@
1
+ const DEDUPE_TTL_MS = 120_000;
2
+ export class InboundMessageDeduper {
3
+ seen = new Map();
4
+ shouldProcess(messageId) {
5
+ const now = Date.now();
6
+ for (const [id, t] of this.seen) {
7
+ if (now - t > DEDUPE_TTL_MS)
8
+ this.seen.delete(id);
9
+ }
10
+ if (this.seen.has(messageId))
11
+ return false;
12
+ this.seen.set(messageId, now);
13
+ return true;
14
+ }
15
+ clear() {
16
+ this.seen.clear();
17
+ }
18
+ }
19
+ /** 判断是否为 bot 自身发出的消息 */
20
+ export function isSelfMessage(event) {
21
+ if (event.post_type === 'message_sent')
22
+ return true;
23
+ if (event.self_id != null && event.user_id != null) {
24
+ return Number(event.self_id) === Number(event.user_id);
25
+ }
26
+ return false;
27
+ }
28
+ /**
29
+ * 将 message 字段归一化为 MessageSegment[]。
30
+ * NapCat 通常返回数组,但某些配置下可能返回 CQ 字符串。
31
+ */
32
+ export function normalizeMessage(message) {
33
+ if (Array.isArray(message))
34
+ return message;
35
+ if (typeof message === 'string') {
36
+ return [{ type: 'text', data: { text: message } }];
37
+ }
38
+ return [];
39
+ }
40
+ /**
41
+ * 生成用于 notice / request 事件的去重 key
42
+ */
43
+ export function resolveSideEventDedupeKey(event, prefix) {
44
+ const parts = [prefix, event.time, event.notice_type || event.request_type];
45
+ if (event.group_id)
46
+ parts.push(event.group_id);
47
+ if (event.user_id)
48
+ parts.push(event.user_id);
49
+ if (event.message_id)
50
+ parts.push(event.message_id);
51
+ if (event.flag)
52
+ parts.push(event.flag);
53
+ return parts.join(':');
54
+ }
55
+ //# sourceMappingURL=napcat-inbound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"napcat-inbound.js","sourceRoot":"","sources":["../src/napcat-inbound.ts"],"names":[],"mappings":"AAKA,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B,MAAM,OAAO,qBAAqB;IACf,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAElD,aAAa,CAAC,SAAiB;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,GAAG,GAAG,CAAC,GAAG,aAAa;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;CACF;AAED,wBAAwB;AACxB,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,IAAI,KAAK,CAAC,SAAS,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAkC;IACjE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAC3C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAU,EAAE,MAAc;IAClE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5E,IAAI,KAAK,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { QuotedMessagePayload } from 'zhin.js';
2
+ export declare function parseOneBotGetMsgResponse(messageId: string, data: unknown): QuotedMessagePayload;
3
+ //# sourceMappingURL=onebot-get-msg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onebot-get-msg.d.ts","sourceRoot":"","sources":["../src/onebot-get-msg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpE,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,GACZ,oBAAoB,CA2BtB"}
@@ -0,0 +1,27 @@
1
+ export function parseOneBotGetMsgResponse(messageId, data) {
2
+ const record = data && typeof data === 'object' ? data : {};
3
+ let content = [];
4
+ if (Array.isArray(record.message)) {
5
+ content = record.message;
6
+ }
7
+ else if (typeof record.raw_message === 'string' && record.raw_message) {
8
+ content = [{ type: 'text', data: { text: record.raw_message } }];
9
+ }
10
+ const senderRaw = record.sender;
11
+ let sender;
12
+ if (senderRaw && typeof senderRaw === 'object') {
13
+ const s = senderRaw;
14
+ sender = {
15
+ id: String(s.user_id ?? ''),
16
+ name: String(s.nickname ?? s.card ?? ''),
17
+ };
18
+ }
19
+ return {
20
+ messageId,
21
+ sender,
22
+ content,
23
+ raw: typeof record.raw_message === 'string' ? record.raw_message : undefined,
24
+ time: typeof record.time === 'number' ? record.time : undefined,
25
+ };
26
+ }
27
+ //# sourceMappingURL=onebot-get-msg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onebot-get-msg.js","sourceRoot":"","sources":["../src/onebot-get-msg.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,yBAAyB,CACvC,SAAiB,EACjB,IAAa;IAEb,MAAM,MAAM,GACV,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,IAAI,OAAO,GAAoC,EAAE,CAAC;IAClD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,GAAG,MAAM,CAAC,OAA2B,CAAC;IAC/C,CAAC;SAAM,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACxE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,IAAI,MAAsC,CAAC;IAC3C,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,SAAoC,CAAC;QAC/C,MAAM,GAAG;YACP,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YAC3B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS;QACT,MAAM;QACN,OAAO;QACP,GAAG,EAAE,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAC5E,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KAChE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Router } from '@zhin.js/host-router';
2
+ import type { NapCatAdapter } from './adapter.js';
3
+ export declare function registerRoutes(router: Router, napcat: NapCatAdapter): void;
4
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAyD1E"}
package/lib/routes.js ADDED
@@ -0,0 +1,61 @@
1
+ export function registerRoutes(router, napcat) {
2
+ router.get('/api/napcat/bots', async (ctx) => {
3
+ try {
4
+ const bots = Array.from(napcat.bots.values());
5
+ if (bots.length === 0) {
6
+ ctx.body = { success: true, data: [], message: '暂无 NapCat 机器人实例' };
7
+ return;
8
+ }
9
+ const result = await Promise.all(bots.map(async (bot) => {
10
+ try {
11
+ const connection = bot.$config.connection ?? 'ws';
12
+ const base = {
13
+ name: bot.$config.name,
14
+ connected: bot.$connected || false,
15
+ connection,
16
+ status: bot.$connected ? 'online' : 'offline',
17
+ lastActivity: new Date().toISOString(),
18
+ };
19
+ if (bot.$connected) {
20
+ try {
21
+ const friends = await bot.getFriendList();
22
+ const groups = await bot.getGroupList();
23
+ base.friendCount = Array.isArray(friends) ? friends.length : 0;
24
+ base.groupCount = Array.isArray(groups) ? groups.length : 0;
25
+ }
26
+ catch {
27
+ base.friendCount = 0;
28
+ base.groupCount = 0;
29
+ }
30
+ }
31
+ else {
32
+ base.friendCount = 0;
33
+ base.groupCount = 0;
34
+ }
35
+ return base;
36
+ }
37
+ catch {
38
+ return {
39
+ name: bot.$config.name,
40
+ connected: false,
41
+ connection: 'unknown',
42
+ status: 'error',
43
+ friendCount: 0,
44
+ groupCount: 0,
45
+ };
46
+ }
47
+ }));
48
+ ctx.body = { success: true, data: result, timestamp: new Date().toISOString() };
49
+ }
50
+ catch (error) {
51
+ ctx.status = 500;
52
+ ctx.body = {
53
+ success: false,
54
+ error: 'NAPCAT_API_ERROR',
55
+ message: '获取机器人数据失败',
56
+ details: process.env.NODE_ENV === 'development' ? error.message : undefined,
57
+ };
58
+ }
59
+ });
60
+ }
61
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -2,10 +2,28 @@
2
2
  * NapCat 适配器类型定义
3
3
  * 覆盖 OneBot11 标准 + go-cqhttp 扩展 + NapCat 独有 API
4
4
  */
5
+ export interface TypingIndicatorConfig {
6
+ /** 是否启用(默认 true) */
7
+ enabled?: boolean;
8
+ /** 默认表情 ID */
9
+ defaultEmoji?: string;
10
+ /** 私聊配置 */
11
+ privateConfig?: {
12
+ type?: 'message' | 'typing';
13
+ message?: string;
14
+ };
15
+ /** 群聊配置 */
16
+ groupConfig?: {
17
+ type?: 'reaction';
18
+ emoji?: string;
19
+ };
20
+ }
5
21
  export interface NapCatConfigBase {
6
22
  context: 'napcat';
7
23
  name: string;
8
24
  access_token?: string;
25
+ /** Typing Indicator 配置 */
26
+ typingIndicator?: TypingIndicatorConfig;
9
27
  }
10
28
  /** 正向 WebSocket */
11
29
  export interface NapCatWsClientConfig extends NapCatConfigBase {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * NapCat Typing Indicator 集成
3
+ *
4
+ * 群聊:set_msg_emoji_like(表情回应)
5
+ * 私聊:set_input_status(输入状态)或短暂提示消息
6
+ */
7
+ import type { NapCatBotBase } from './bot-base.js';
8
+ import { type TypingIndicatorConfig, type TypingIndicator } from '@zhin.js/agent';
9
+ export interface NapCatTypingIndicatorConfig {
10
+ enabled: boolean;
11
+ defaultEmoji: string;
12
+ autoRemove: boolean;
13
+ removeDelay: number;
14
+ privateConfig?: Partial<TypingIndicatorConfig>;
15
+ groupConfig?: Partial<TypingIndicatorConfig>;
16
+ }
17
+ export declare class NapCatTypingIndicatorManager {
18
+ private manager;
19
+ private config;
20
+ private bot;
21
+ constructor(bot: NapCatBotBase, config?: Partial<NapCatTypingIndicatorConfig>);
22
+ private registerAdapter;
23
+ start(options: {
24
+ messageId?: string;
25
+ sessionId: string;
26
+ userId?: string;
27
+ groupId?: string;
28
+ sceneType: 'private' | 'group';
29
+ }): Promise<TypingIndicator>;
30
+ stop(options: {
31
+ sessionId: string;
32
+ userId?: string;
33
+ groupId?: string;
34
+ }): Promise<void>;
35
+ stopAll(): Promise<void>;
36
+ updateConfig(config: Partial<NapCatTypingIndicatorConfig>): void;
37
+ getConfig(): NapCatTypingIndicatorConfig;
38
+ }
39
+ declare module './bot-base.js' {
40
+ interface NapCatBotBase {
41
+ $typingIndicator?: NapCatTypingIndicatorManager;
42
+ }
43
+ }
44
+ export declare function enableTypingIndicator(bot: NapCatBotBase, config?: Partial<NapCatTypingIndicatorConfig>): NapCatTypingIndicatorManager;
45
+ //# sourceMappingURL=typing-indicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typing-indicator.d.ts","sourceRoot":"","sources":["../src/typing-indicator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC9C;AAqBD,qBAAa,4BAA4B;IACvC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,GAAG,CAAgB;gBAEf,GAAG,EAAE,aAAa,EAAE,MAAM,GAAE,OAAO,CAAC,2BAA2B,CAAM;IAYjF,OAAO,CAAC,eAAe;IAyCjB,KAAK,CAAC,OAAO,EAAE;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC;KAChC,GAAG,OAAO,CAAC,eAAe,CAAC;IA+BtB,IAAI,CAAC,OAAO,EAAE;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYX,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI;IAIhE,SAAS,IAAI,2BAA2B;CAGzC;AAED,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,aAAa;QACrB,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;KACjD;CACF;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,aAAa,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAC5C,4BAA4B,CAK9B"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * NapCat Typing Indicator 集成
3
+ *
4
+ * 群聊:set_msg_emoji_like(表情回应)
5
+ * 私聊:set_input_status(输入状态)或短暂提示消息
6
+ */
7
+ import { TypingIndicatorManager, ReactionTypingIndicatorAdapter, } from '@zhin.js/agent';
8
+ const DEFAULT_CONFIG = {
9
+ enabled: true,
10
+ defaultEmoji: '128516',
11
+ autoRemove: true,
12
+ removeDelay: 5000,
13
+ privateConfig: {
14
+ type: 'message',
15
+ message: '正在思考中...',
16
+ autoRemove: true,
17
+ removeDelay: 3000,
18
+ },
19
+ groupConfig: {
20
+ type: 'reaction',
21
+ emoji: '128516',
22
+ autoRemove: true,
23
+ removeDelay: 5000,
24
+ },
25
+ };
26
+ export class NapCatTypingIndicatorManager {
27
+ manager;
28
+ config;
29
+ bot;
30
+ constructor(bot, config = {}) {
31
+ this.bot = bot;
32
+ this.config = { ...DEFAULT_CONFIG, ...config };
33
+ this.manager = new TypingIndicatorManager({
34
+ type: 'reaction',
35
+ emoji: this.config.defaultEmoji,
36
+ autoRemove: this.config.autoRemove,
37
+ removeDelay: this.config.removeDelay,
38
+ });
39
+ this.registerAdapter();
40
+ }
41
+ registerAdapter() {
42
+ const adapter = new ReactionTypingIndicatorAdapter(async (messageId, emoji) => {
43
+ return await this.bot.$addReaction(messageId, emoji);
44
+ }, async (messageId, reactionId) => {
45
+ await this.bot.$removeReaction(messageId, reactionId);
46
+ }, async (options, content) => {
47
+ try {
48
+ if (options.sceneType === 'group' && options.groupId) {
49
+ return await this.bot.$sendMessage({
50
+ type: 'group',
51
+ id: options.groupId,
52
+ context: 'napcat',
53
+ bot: this.bot.$id,
54
+ content: [{ type: 'text', data: { text: content } }],
55
+ });
56
+ }
57
+ else if (options.userId) {
58
+ return await this.bot.$sendMessage({
59
+ type: 'private',
60
+ id: options.userId,
61
+ context: 'napcat',
62
+ bot: this.bot.$id,
63
+ content: [{ type: 'text', data: { text: content } }],
64
+ });
65
+ }
66
+ return null;
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }, async (messageId) => {
72
+ try {
73
+ await this.bot.$recallMessage(messageId);
74
+ }
75
+ catch { /* ignore */ }
76
+ });
77
+ this.manager.registerAdapter(adapter);
78
+ }
79
+ async start(options) {
80
+ this.bot.logger.debug('[NapCat:TypingIndicator] start called', {
81
+ enabled: this.config.enabled,
82
+ sceneType: options.sceneType,
83
+ });
84
+ if (!this.config.enabled) {
85
+ return {
86
+ start: async () => { },
87
+ stop: async () => { },
88
+ isActive: () => false,
89
+ };
90
+ }
91
+ const config = options.sceneType === 'group'
92
+ ? this.config.groupConfig
93
+ : this.config.privateConfig;
94
+ const typingOptions = {
95
+ messageId: options.messageId,
96
+ sessionId: options.sessionId,
97
+ userId: options.userId,
98
+ groupId: options.groupId,
99
+ platform: 'napcat',
100
+ botId: this.bot.$id,
101
+ sceneType: options.sceneType,
102
+ };
103
+ return await this.manager.start(typingOptions, config);
104
+ }
105
+ async stop(options) {
106
+ const typingOptions = {
107
+ sessionId: options.sessionId,
108
+ userId: options.userId,
109
+ groupId: options.groupId,
110
+ platform: 'napcat',
111
+ botId: this.bot.$id,
112
+ sceneType: 'private',
113
+ };
114
+ await this.manager.stop(typingOptions);
115
+ }
116
+ async stopAll() {
117
+ await this.manager.stopAll();
118
+ }
119
+ updateConfig(config) {
120
+ this.config = { ...this.config, ...config };
121
+ }
122
+ getConfig() {
123
+ return { ...this.config };
124
+ }
125
+ }
126
+ export function enableTypingIndicator(bot, config) {
127
+ if (!bot.$typingIndicator) {
128
+ bot.$typingIndicator = new NapCatTypingIndicatorManager(bot, config);
129
+ }
130
+ return bot.$typingIndicator;
131
+ }
132
+ //# sourceMappingURL=typing-indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typing-indicator.js","sourceRoot":"","sources":["../src/typing-indicator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/adapter-napcat",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "description": "Zhin.js adapter for NapCatQQ (OneBot11 superset with go-cqhttp & NapCat extensions)",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -15,6 +15,8 @@
15
15
  "files": [
16
16
  "src",
17
17
  "lib",
18
+ "client",
19
+ "dist",
18
20
  "skills",
19
21
  "plugin.yml",
20
22
  "README.md",
@@ -48,17 +50,31 @@
48
50
  },
49
51
  "devDependencies": {
50
52
  "@types/node": "^25.9.1",
53
+ "@types/react": "^19.2.15",
54
+ "@types/react-dom": "^19.2.3",
51
55
  "@types/ws": "^8.18.1",
56
+ "lucide-react": "^1.17.0",
52
57
  "typescript": "^6.0.3",
53
- "zhin.js": "1.0.85",
54
- "@zhin.js/cli": "1.0.81"
58
+ "@zhin.js/cli": "1.0.83",
59
+ "@zhin.js/host-api": "0.0.1",
60
+ "@zhin.js/contract": "1.0.0",
61
+ "zhin.js": "1.0.87"
55
62
  },
56
63
  "peerDependencies": {
57
- "zhin.js": "1.0.85",
58
- "@zhin.js/http": "1.0.78"
64
+ "@zhin.js/host-api": "0.0.1",
65
+ "@zhin.js/contract": "1.0.0",
66
+ "@zhin.js/host-router": "0.0.1",
67
+ "zhin.js": "1.0.87",
68
+ "@zhin.js/agent": "0.1.27"
59
69
  },
60
70
  "peerDependenciesMeta": {
61
- "@zhin.js/http": {
71
+ "@zhin.js/agent": {
72
+ "optional": true
73
+ },
74
+ "@zhin.js/host-api": {
75
+ "optional": true
76
+ },
77
+ "@zhin.js/host-router": {
62
78
  "optional": true
63
79
  }
64
80
  },
package/plugin.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  name: adapter-napcat
2
2
  description: NapCatQQ 适配器:OneBot11 + go-cqhttp 扩展 + NapCat 独有 API(戳一戳、表情回应、AI语音、群文件、精华消息、群公告等)
3
- version: 0.1.0
3
+ version: 0.1.13
package/src/adapter.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * NapCat 适配器:支持正向 WS / 反向 WS / HTTP
3
3
  */
4
- import type { Router } from '@zhin.js/http';
5
4
  import { formatCompact, Adapter, Plugin } from 'zhin.js';
5
+ import type { Router } from '@zhin.js/host-router';
6
6
  import { NapCatWsClient } from './bot-ws-client.js';
7
7
  import { NapCatWsServer } from './bot-ws-server.js';
8
8
  import { NapCatHttpBot } from './bot-http.js';
@@ -23,10 +23,10 @@ export class NapCatAdapter extends Adapter<NapCatBot> {
23
23
  case 'ws':
24
24
  return new NapCatWsClient(this, config as NapCatWsClientConfig);
25
25
  case 'wss':
26
- if (!this.#router) throw new Error('NapCat connection: wss requires router. Enable @zhin.js/http first.');
26
+ if (!this.#router) throw new Error('NapCat connection: wss requires router. Enable @zhin.js/host-router first.');
27
27
  return new NapCatWsServer(this, this.#router, config as NapCatWsServerConfig);
28
28
  case 'http':
29
- if (!this.#router) throw new Error('NapCat connection: http requires router. Enable @zhin.js/http first.');
29
+ if (!this.#router) throw new Error('NapCat connection: http requires router. Enable @zhin.js/host-router first.');
30
30
  return new NapCatHttpBot(this, this.#router, config as NapCatHttpConfig);
31
31
  default:
32
32
  throw new Error(`Unknown NapCat connection: ${connection}`);