@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.
- package/CHANGELOG.md +36 -13
- package/README.md +121 -0
- package/client/NapCatManagement.tsx +113 -0
- package/client/index.tsx +11 -0
- package/client/tsconfig.json +7 -0
- package/client/utils/api.ts +30 -0
- package/dist/index.js +27 -0
- package/lib/adapter.d.ts +3 -0
- package/lib/adapter.d.ts.map +1 -1
- package/lib/adapter.js +5 -2
- package/lib/adapter.js.map +1 -1
- package/lib/agent-prompt.d.ts +3 -0
- package/lib/agent-prompt.d.ts.map +1 -0
- package/lib/agent-prompt.js +107 -0
- package/lib/agent-prompt.js.map +1 -0
- package/lib/bot-base.d.ts +6 -1
- package/lib/bot-base.d.ts.map +1 -1
- package/lib/bot-base.js +35 -1
- package/lib/bot-base.js.map +1 -1
- package/lib/bot-http.d.ts +2 -1
- package/lib/bot-http.d.ts.map +1 -1
- package/lib/bot-http.js +23 -1
- package/lib/bot-http.js.map +1 -1
- package/lib/bot-ws-client.d.ts +2 -0
- package/lib/bot-ws-client.d.ts.map +1 -1
- package/lib/bot-ws-client.js +32 -0
- package/lib/bot-ws-client.js.map +1 -1
- package/lib/bot-ws-server.d.ts +2 -1
- package/lib/bot-ws-server.d.ts.map +1 -1
- package/lib/bot-ws-server.js +14 -0
- package/lib/bot-ws-server.js.map +1 -1
- package/lib/index.d.ts +5 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +22 -1
- package/lib/index.js.map +1 -1
- package/lib/napcat-inbound.d.ts +21 -0
- package/lib/napcat-inbound.d.ts.map +1 -0
- package/lib/napcat-inbound.js +55 -0
- package/lib/napcat-inbound.js.map +1 -0
- package/lib/onebot-get-msg.d.ts +3 -0
- package/lib/onebot-get-msg.d.ts.map +1 -0
- package/lib/onebot-get-msg.js +27 -0
- package/lib/onebot-get-msg.js.map +1 -0
- package/lib/routes.d.ts +4 -0
- package/lib/routes.d.ts.map +1 -0
- package/lib/routes.js +61 -0
- package/lib/routes.js.map +1 -0
- package/lib/types.d.ts +18 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/typing-indicator.d.ts +45 -0
- package/lib/typing-indicator.d.ts.map +1 -0
- package/lib/typing-indicator.js +132 -0
- package/lib/typing-indicator.js.map +1 -0
- package/package.json +22 -6
- package/plugin.yml +1 -1
- package/src/adapter.ts +3 -3
- package/src/agent-prompt.ts +115 -0
- package/src/bot-base.ts +36 -1
- package/src/bot-http.ts +19 -1
- package/src/bot-ws-client.ts +34 -0
- package/src/bot-ws-server.ts +16 -1
- package/src/index.ts +41 -2
- package/src/napcat-inbound.ts +57 -0
- package/src/onebot-get-msg.ts +33 -0
- package/src/routes.ts +61 -0
- package/src/types.ts +13 -0
- 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
|
|
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,
|
|
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 @@
|
|
|
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"}
|
package/lib/routes.d.ts
ADDED
|
@@ -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 {
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
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.
|
|
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.
|
|
54
|
-
"@zhin.js/
|
|
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": "
|
|
58
|
-
"@zhin.js/
|
|
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/
|
|
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
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/
|
|
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/
|
|
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}`);
|