@zhin.js/adapter-icqq 6.0.1 → 6.0.2
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 +19 -0
- package/README.md +1 -1
- package/agent/tools/announce.ts +21 -0
- package/agent/tools/essence.ts +22 -0
- package/agent/tools/friend_list.ts +19 -0
- package/agent/tools/group_files.ts +27 -0
- package/agent/tools/group_invite.ts +20 -0
- package/agent/tools/group_list.ts +20 -0
- package/agent/tools/group_sign.ts +19 -0
- package/agent/tools/list_muted.ts +22 -0
- package/agent/tools/poke.ts +20 -0
- package/agent/tools/send_user_like.ts +22 -0
- package/agent/tools/set_anonymous.ts +22 -0
- package/agent/tools/set_title.ts +25 -0
- package/lib/agent/tools/announce.js +21 -0
- package/lib/agent/tools/announce.js.map +1 -0
- package/lib/agent/tools/essence.js +22 -0
- package/lib/agent/tools/essence.js.map +1 -0
- package/lib/agent/tools/friend_list.js +19 -0
- package/lib/agent/tools/friend_list.js.map +1 -0
- package/lib/agent/tools/group_files.js +29 -0
- package/lib/agent/tools/group_files.js.map +1 -0
- package/lib/agent/tools/group_invite.js +20 -0
- package/lib/agent/tools/group_invite.js.map +1 -0
- package/lib/agent/tools/group_list.js +20 -0
- package/lib/agent/tools/group_list.js.map +1 -0
- package/lib/agent/tools/group_sign.js +19 -0
- package/lib/agent/tools/group_sign.js.map +1 -0
- package/lib/agent/tools/list_muted.js +23 -0
- package/lib/agent/tools/list_muted.js.map +1 -0
- package/lib/agent/tools/poke.js +20 -0
- package/lib/agent/tools/poke.js.map +1 -0
- package/lib/agent/tools/send_user_like.js +22 -0
- package/lib/agent/tools/send_user_like.js.map +1 -0
- package/lib/agent/tools/set_anonymous.js +22 -0
- package/lib/agent/tools/set_anonymous.js.map +1 -0
- package/lib/agent/tools/set_title.js +25 -0
- package/lib/agent/tools/set_title.js.map +1 -0
- package/lib/src/adapter.js.map +1 -0
- package/lib/src/agent-prompt.js.map +1 -0
- package/lib/src/cq-message.js.map +1 -0
- package/lib/{endpoint.js → src/endpoint.js} +21 -20
- package/lib/src/endpoint.js.map +1 -0
- package/lib/{forward-msg.js → src/forward-msg.js} +4 -1
- package/lib/src/forward-msg.js.map +1 -0
- package/lib/src/get-msg.js.map +1 -0
- package/lib/src/icqq-agent-deps.js +10 -0
- package/lib/src/icqq-agent-deps.js.map +1 -0
- package/lib/src/icqq-guild.js.map +1 -0
- package/lib/src/icqq-inbound.js.map +1 -0
- package/lib/src/icqq-login-assist-bridge.js.map +1 -0
- package/lib/{icqq-side-events.js → src/icqq-side-events.js} +28 -92
- package/lib/src/icqq-side-events.js.map +1 -0
- package/lib/src/index.js.map +1 -0
- package/lib/src/ipc-client.js.map +1 -0
- package/lib/src/login-assist-routes.js.map +1 -0
- package/lib/src/login-ipc-contract.js.map +1 -0
- package/lib/src/outbound-media.js.map +1 -0
- package/lib/src/protocol.js.map +1 -0
- package/lib/src/routes.js.map +1 -0
- package/lib/src/segment-mapper.js.map +1 -0
- package/lib/src/tools/index.js +23 -0
- package/lib/src/tools/index.js.map +1 -0
- package/lib/src/types.js.map +1 -0
- package/package.json +23 -19
- package/src/agent-prompt.ts +1 -2
- package/src/endpoint.ts +21 -33
- package/src/forward-msg.ts +2 -2
- package/src/icqq-agent-deps.ts +18 -0
- package/src/icqq-side-events.ts +33 -118
- package/src/tools/index.ts +14 -395
- package/lib/adapter.d.ts +0 -46
- package/lib/adapter.d.ts.map +0 -1
- package/lib/adapter.js.map +0 -1
- package/lib/agent-prompt.d.ts +0 -3
- package/lib/agent-prompt.d.ts.map +0 -1
- package/lib/agent-prompt.js.map +0 -1
- package/lib/cq-message.d.ts +0 -10
- package/lib/cq-message.d.ts.map +0 -1
- package/lib/cq-message.js.map +0 -1
- package/lib/endpoint.d.ts +0 -103
- package/lib/endpoint.d.ts.map +0 -1
- package/lib/endpoint.js.map +0 -1
- package/lib/forward-msg.d.ts +0 -27
- package/lib/forward-msg.d.ts.map +0 -1
- package/lib/forward-msg.js.map +0 -1
- package/lib/get-msg.d.ts +0 -3
- package/lib/get-msg.d.ts.map +0 -1
- package/lib/get-msg.js.map +0 -1
- package/lib/icqq-guild.d.ts +0 -48
- package/lib/icqq-guild.d.ts.map +0 -1
- package/lib/icqq-guild.js.map +0 -1
- package/lib/icqq-inbound.d.ts +0 -130
- package/lib/icqq-inbound.d.ts.map +0 -1
- package/lib/icqq-inbound.js.map +0 -1
- package/lib/icqq-login-assist-bridge.d.ts +0 -5
- package/lib/icqq-login-assist-bridge.d.ts.map +0 -1
- package/lib/icqq-login-assist-bridge.js.map +0 -1
- package/lib/icqq-side-events.d.ts +0 -34
- package/lib/icqq-side-events.d.ts.map +0 -1
- package/lib/icqq-side-events.js.map +0 -1
- package/lib/index.d.ts +0 -18
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/ipc-client.d.ts +0 -74
- package/lib/ipc-client.d.ts.map +0 -1
- package/lib/ipc-client.js.map +0 -1
- package/lib/login-assist-routes.d.ts +0 -7
- package/lib/login-assist-routes.d.ts.map +0 -1
- package/lib/login-assist-routes.js.map +0 -1
- package/lib/login-ipc-contract.d.ts +0 -44
- package/lib/login-ipc-contract.d.ts.map +0 -1
- package/lib/login-ipc-contract.js.map +0 -1
- package/lib/outbound-media.d.ts +0 -14
- package/lib/outbound-media.d.ts.map +0 -1
- package/lib/outbound-media.js.map +0 -1
- package/lib/protocol.d.ts +0 -198
- package/lib/protocol.d.ts.map +0 -1
- package/lib/protocol.js.map +0 -1
- package/lib/routes.d.ts +0 -8
- package/lib/routes.d.ts.map +0 -1
- package/lib/routes.js.map +0 -1
- package/lib/segment-mapper.d.ts +0 -2
- package/lib/segment-mapper.d.ts.map +0 -1
- package/lib/segment-mapper.js.map +0 -1
- package/lib/tools/index.d.ts +0 -10
- package/lib/tools/index.d.ts.map +0 -1
- package/lib/tools/index.js +0 -341
- package/lib/tools/index.js.map +0 -1
- package/lib/types.d.ts +0 -73
- package/lib/types.d.ts.map +0 -1
- package/lib/types.js.map +0 -1
- /package/{skills/icqq → agent}/PERMITS.md +0 -0
- /package/lib/{adapter.js → src/adapter.js} +0 -0
- /package/lib/{agent-prompt.js → src/agent-prompt.js} +0 -0
- /package/lib/{cq-message.js → src/cq-message.js} +0 -0
- /package/lib/{get-msg.js → src/get-msg.js} +0 -0
- /package/lib/{icqq-guild.js → src/icqq-guild.js} +0 -0
- /package/lib/{icqq-inbound.js → src/icqq-inbound.js} +0 -0
- /package/lib/{icqq-login-assist-bridge.js → src/icqq-login-assist-bridge.js} +0 -0
- /package/lib/{index.js → src/index.js} +0 -0
- /package/lib/{ipc-client.js → src/ipc-client.js} +0 -0
- /package/lib/{login-assist-routes.js → src/login-assist-routes.js} +0 -0
- /package/lib/{login-ipc-contract.js → src/login-ipc-contract.js} +0 -0
- /package/lib/{outbound-media.js → src/outbound-media.js} +0 -0
- /package/lib/{protocol.js → src/protocol.js} +0 -0
- /package/lib/{routes.js → src/routes.js} +0 -0
- /package/lib/{segment-mapper.js → src/segment-mapper.js} +0 -0
- /package/lib/{types.js → src/types.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-ipc-contract.js","sourceRoot":"","sources":["../../src/login-ipc-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAgBH,mDAAmD;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,yDAAyD;IACzD,KAAK,EAAE,OAAO;IACd,8CAA8C;IAC9C,aAAa,EAAE,eAAe;IAC9B,4CAA4C;IAC5C,eAAe,EAAE,iBAAiB;IAClC,uCAAuC;IACvC,aAAa,EAAE,eAAe;CACtB,CAAC;AAIX,0CAA0C;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,uCAAuC;IACvC,wCAAwC;IACxC,mCAAmC;IACnC,mCAAmC;CAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbound-media.js","sourceRoot":"","sources":["../../src/outbound-media.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segment-mapper.js","sourceRoot":"","sources":["../../src/segment-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ICQQ 场景管理工具注册
|
|
3
|
+
*
|
|
4
|
+
* 平台特有工具已迁移至 agent/tools/;本模块仅注册通用群管工具。
|
|
5
|
+
*/
|
|
6
|
+
import { createSceneManagementTools } from 'zhin.js';
|
|
7
|
+
import { setIcqqAgentDeps } from "../icqq-agent-deps.js";
|
|
8
|
+
export function registerTools(toolService, icqq, pluginName) {
|
|
9
|
+
const disposers = [];
|
|
10
|
+
setIcqqAgentDeps({
|
|
11
|
+
getEndpoint: (endpointId) => {
|
|
12
|
+
const endpoint = icqq.endpoints.get(endpointId);
|
|
13
|
+
if (!endpoint)
|
|
14
|
+
throw new Error(`Endpoint ${endpointId} 不存在`);
|
|
15
|
+
return endpoint;
|
|
16
|
+
},
|
|
17
|
+
getAdapter: () => icqq,
|
|
18
|
+
});
|
|
19
|
+
const sceneTools = createSceneManagementTools(icqq, "icqq");
|
|
20
|
+
disposers.push(...sceneTools.map((t) => toolService.addTool(t, pluginName)));
|
|
21
|
+
return () => disposers.forEach((d) => d());
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,0BAA0B,EAAoB,MAAM,SAAS,CAAC;AAGvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,aAAa,CAC3B,WAAwB,EACxB,IAAiB,EACjB,UAAkB;IAElB,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,gBAAgB,CAAC;QACf,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;YAC7D,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5D,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAE7E,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/adapter-icqq",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.2",
|
|
4
4
|
"description": "Zhin.js adapter for ICQQ (QQ Bot)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -38,12 +38,11 @@
|
|
|
38
38
|
"lib",
|
|
39
39
|
"client",
|
|
40
40
|
"dist",
|
|
41
|
-
"skills",
|
|
42
41
|
"plugin.yml",
|
|
43
42
|
"README.md",
|
|
44
|
-
"CHANGELOG.md"
|
|
43
|
+
"CHANGELOG.md",
|
|
44
|
+
"agent"
|
|
45
45
|
],
|
|
46
|
-
"dependencies": {},
|
|
47
46
|
"devDependencies": {
|
|
48
47
|
"@radix-ui/themes": "^3.2.1",
|
|
49
48
|
"@types/react": "^19.2.17",
|
|
@@ -51,23 +50,25 @@
|
|
|
51
50
|
"lucide-react": "^1.22.0",
|
|
52
51
|
"radix-ui": "^1.6.2",
|
|
53
52
|
"typescript": "^6.0.3",
|
|
54
|
-
"
|
|
55
|
-
"@zhin.js/
|
|
56
|
-
"@zhin.js/
|
|
57
|
-
"@zhin.js/
|
|
58
|
-
"@zhin.js/
|
|
59
|
-
"@zhin.js/
|
|
60
|
-
"@zhin.js/host-
|
|
61
|
-
"zhin.js": "
|
|
53
|
+
"zod": "^4.4.3",
|
|
54
|
+
"@zhin.js/agent": "1.0.3",
|
|
55
|
+
"@zhin.js/cli": "1.0.93",
|
|
56
|
+
"@zhin.js/client": "2.0.5",
|
|
57
|
+
"@zhin.js/contract": "1.0.3",
|
|
58
|
+
"@zhin.js/core": "1.3.4",
|
|
59
|
+
"@zhin.js/host-api": "2.0.5",
|
|
60
|
+
"@zhin.js/host-router": "2.0.3",
|
|
61
|
+
"zhin.js": "4.1.2"
|
|
62
62
|
},
|
|
63
63
|
"peerDependencies": {
|
|
64
|
-
"
|
|
65
|
-
"@zhin.js/
|
|
66
|
-
"@zhin.js/
|
|
67
|
-
"@zhin.js/
|
|
68
|
-
"@zhin.js/
|
|
69
|
-
"@zhin.js/
|
|
70
|
-
"zhin.js": "
|
|
64
|
+
"zod": "^4.0.0",
|
|
65
|
+
"@zhin.js/agent": "1.0.3",
|
|
66
|
+
"@zhin.js/client": "2.0.5",
|
|
67
|
+
"@zhin.js/host-api": "2.0.5",
|
|
68
|
+
"@zhin.js/contract": "1.0.3",
|
|
69
|
+
"@zhin.js/core": "1.3.4",
|
|
70
|
+
"@zhin.js/host-router": "2.0.3",
|
|
71
|
+
"zhin.js": "4.1.2"
|
|
71
72
|
},
|
|
72
73
|
"peerDependenciesMeta": {
|
|
73
74
|
"@zhin.js/agent": {
|
|
@@ -81,6 +82,9 @@
|
|
|
81
82
|
},
|
|
82
83
|
"@zhin.js/host-api": {
|
|
83
84
|
"optional": true
|
|
85
|
+
},
|
|
86
|
+
"zod": {
|
|
87
|
+
"optional": true
|
|
84
88
|
}
|
|
85
89
|
},
|
|
86
90
|
"publishConfig": {
|
package/src/agent-prompt.ts
CHANGED
|
@@ -4,8 +4,7 @@ import type {
|
|
|
4
4
|
AgentPromptSection,
|
|
5
5
|
DeferredToolCatalogItem,
|
|
6
6
|
} from 'zhin.js';
|
|
7
|
-
import type
|
|
8
|
-
import { filterTools } from 'zhin.js/ai';
|
|
7
|
+
import { filterTools, type AgentTool } from 'zhin.js/ai';
|
|
9
8
|
|
|
10
9
|
function isIcqqDelegatedTask(query: string, goal: string): boolean {
|
|
11
10
|
const text = `${query} ${goal}`;
|
package/src/endpoint.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 不再直接依赖 @icqqjs/icqq 协议库。
|
|
5
5
|
* 登录由 `icqq login` 完成,本 Endpoint 只负责连接守护进程并收发消息。
|
|
6
6
|
*/
|
|
7
|
-
import { formatCompact, Endpoint, Message, segment, SendContent, SendOptions, expandInteractiveSegmentsInContent, type QuotedMessagePayload,} from 'zhin.js';
|
|
7
|
+
import { formatCompact, Endpoint, Message, segment, SendContent, SendOptions, expandInteractiveSegmentsInContent, resolveSideEventDedupeKey, type QuotedMessagePayload,} from 'zhin.js';
|
|
8
8
|
import type {
|
|
9
9
|
IcqqEndpointConfig,
|
|
10
10
|
IcqqSenderInfo,
|
|
@@ -14,20 +14,9 @@ import type {
|
|
|
14
14
|
} from "./types.js";
|
|
15
15
|
import type { IcqqAdapter } from "./adapter.js";
|
|
16
16
|
import { IpcClient } from "./ipc-client.js";
|
|
17
|
-
import { Actions, type IpcEvent } from
|
|
18
|
-
import type
|
|
19
|
-
|
|
20
|
-
findIcqqNestedMessageSource,
|
|
21
|
-
InboundMessageDeduper,
|
|
22
|
-
isIcqqMessagePostType,
|
|
23
|
-
normalizeIcqqInboundMessage,
|
|
24
|
-
quotedPayloadFromIcqqSource,
|
|
25
|
-
resolveIcqqQuoteIdFromEvent,
|
|
26
|
-
resolveQuoteIdFromIcqqSource,
|
|
27
|
-
shouldSkipSelfInboundMessage,
|
|
28
|
-
unwrapIcqqIpcEventPayload,
|
|
29
|
-
type NormalizedIcqqInbound,
|
|
30
|
-
} from "./icqq-inbound.js";
|
|
17
|
+
import { Actions, type IpcEvent, type IpcGuildMessageEventData } from './protocol.js';
|
|
18
|
+
import { findIcqqNestedMessageSource, InboundMessageDeduper, isIcqqMessagePostType, normalizeIcqqInboundMessage, quotedPayloadFromIcqqSource, resolveIcqqQuoteIdFromEvent, resolveQuoteIdFromIcqqSource, shouldSkipSelfInboundMessage, unwrapIcqqIpcEventPayload, type IcqqIpcMessageEvent, type NormalizedIcqqInbound } from './icqq-inbound.js';
|
|
19
|
+
|
|
31
20
|
import {
|
|
32
21
|
buildIcqqIpcMessage as buildIcqqIpcMessageImpl,
|
|
33
22
|
parseCqMessage as parseCqMessageImpl,
|
|
@@ -45,7 +34,6 @@ import {
|
|
|
45
34
|
isIcqqNoticePayload,
|
|
46
35
|
isIcqqRequestPayload,
|
|
47
36
|
resolveIcqqEventPostType,
|
|
48
|
-
resolveSideEventDedupeKey,
|
|
49
37
|
shouldRefreshListsOnMeta,
|
|
50
38
|
type IcqqIpcRawEvent,
|
|
51
39
|
} from "./icqq-side-events.js";
|
|
@@ -61,7 +49,6 @@ import {
|
|
|
61
49
|
normalizeIcqqGuildInboundMessage,
|
|
62
50
|
type NormalizedIcqqGuildInbound,
|
|
63
51
|
} from "./icqq-guild.js";
|
|
64
|
-
import type { IpcGuildMessageEventData } from "./protocol.js";
|
|
65
52
|
|
|
66
53
|
export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessageEvent> {
|
|
67
54
|
$connected = false;
|
|
@@ -115,7 +102,7 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
|
|
|
115
102
|
|
|
116
103
|
await this.rebindIpcSession();
|
|
117
104
|
|
|
118
|
-
this.logger.
|
|
105
|
+
this.logger.debug(formatCompact( {
|
|
119
106
|
机器人: this.$id,
|
|
120
107
|
好友数: this.friends.size,
|
|
121
108
|
群组数: this.groups.size,
|
|
@@ -192,7 +179,7 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
|
|
|
192
179
|
|
|
193
180
|
try {
|
|
194
181
|
await this.rebindIpcSession();
|
|
195
|
-
this.logger.
|
|
182
|
+
this.logger.debug(formatCompact( {
|
|
196
183
|
op: "reconnect",
|
|
197
184
|
endpoint: this.$id,
|
|
198
185
|
friends: this.friends.size,
|
|
@@ -270,7 +257,7 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
|
|
|
270
257
|
disposeIcqqLoginAssistBridge(this.$id);
|
|
271
258
|
this.ipc?.close();
|
|
272
259
|
this.$connected = false;
|
|
273
|
-
this.logger.
|
|
260
|
+
this.logger.debug(formatCompact( { op: "disconnect", endpoint: this.$id }));
|
|
274
261
|
}
|
|
275
262
|
|
|
276
263
|
// ── 消息处理 ───────────────────────────────────────────────────────
|
|
@@ -348,7 +335,7 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
|
|
|
348
335
|
|
|
349
336
|
if (shouldSkipSelfInboundMessage(data)) {
|
|
350
337
|
if (process.env.ICQQ_IPC_LOG_RAW === "1") {
|
|
351
|
-
this.logger.
|
|
338
|
+
this.logger.debug(formatCompact({ ipc_skip: "self_message" }));
|
|
352
339
|
}
|
|
353
340
|
return;
|
|
354
341
|
}
|
|
@@ -356,7 +343,7 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
|
|
|
356
343
|
const normalized = normalizeIcqqInboundMessage(data);
|
|
357
344
|
if (!normalized) {
|
|
358
345
|
if (process.env.ICQQ_IPC_LOG_RAW === "1") {
|
|
359
|
-
this.logger.
|
|
346
|
+
this.logger.debug(formatCompact({ ipc_skip: "normalize_failed" }));
|
|
360
347
|
}
|
|
361
348
|
return;
|
|
362
349
|
}
|
|
@@ -468,18 +455,17 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
|
|
|
468
455
|
const dedupeKey = resolveSideEventDedupeKey(event, "notice");
|
|
469
456
|
if (!this.inboundDeduper.shouldProcess(dedupeKey)) {
|
|
470
457
|
if (process.env.ICQQ_IPC_LOG_RAW === "1") {
|
|
471
|
-
this.logger.
|
|
458
|
+
this.logger.debug(formatCompact({ ipc_dedupe: dedupeKey }));
|
|
472
459
|
}
|
|
473
460
|
return;
|
|
474
461
|
}
|
|
475
462
|
const notice = formatIcqqNotice(event, this.$config.name);
|
|
476
463
|
this.adapter.emit("notice.receive", notice);
|
|
477
|
-
this.logger.
|
|
464
|
+
this.logger.debug(
|
|
478
465
|
formatCompact({
|
|
479
|
-
notice: notice.$type
|
|
480
|
-
|
|
466
|
+
notice: `${notice.$type}.${notice.$scene_type}.${notice.$sub_type}`,
|
|
467
|
+
scene: `${notice.$scene_type}(${notice.$scene_id})`,
|
|
481
468
|
endpoint: this.$id,
|
|
482
|
-
sub_type: notice.$subType,
|
|
483
469
|
}),
|
|
484
470
|
);
|
|
485
471
|
}
|
|
@@ -488,24 +474,26 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
|
|
|
488
474
|
const dedupeKey = resolveSideEventDedupeKey(event, "request");
|
|
489
475
|
if (!this.inboundDeduper.shouldProcess(dedupeKey)) {
|
|
490
476
|
if (process.env.ICQQ_IPC_LOG_RAW === "1") {
|
|
491
|
-
this.logger.
|
|
477
|
+
this.logger.debug(formatCompact({ ipc_dedupe: dedupeKey }));
|
|
492
478
|
}
|
|
493
479
|
return;
|
|
494
480
|
}
|
|
495
481
|
const request = formatIcqqRequest(event, this.$config.name, this.ipc);
|
|
496
482
|
this.adapter.emit("request.receive", request);
|
|
497
|
-
this.logger.
|
|
483
|
+
this.logger.debug(
|
|
498
484
|
formatCompact({
|
|
499
|
-
request: request.$type
|
|
500
|
-
|
|
485
|
+
request: `${request.$type}.${request.$scene_type}.${request.$sub_type}`,
|
|
486
|
+
scene: `${request.$scene_type}(${request.$scene_id})`,
|
|
501
487
|
endpoint: this.$id,
|
|
502
|
-
from: request.$
|
|
488
|
+
from: request.$actor.id,
|
|
503
489
|
}),
|
|
504
490
|
);
|
|
505
491
|
}
|
|
506
492
|
|
|
507
493
|
private handleMetaEvent(event: IcqqIpcRawEvent): void {
|
|
508
|
-
const
|
|
494
|
+
const time = event.time ?? 0;
|
|
495
|
+
const kind = event.meta_event_type ?? event.post_type ?? 'meta';
|
|
496
|
+
const dedupeKey = `meta:${time}_${kind}_${event.sub_type ?? ''}`;
|
|
509
497
|
if (!this.inboundDeduper.shouldProcess(dedupeKey)) return;
|
|
510
498
|
|
|
511
499
|
this.logger.debug(formatIcqqMetaLog(event));
|
package/src/forward-msg.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 合并转发(聊天记录)解析:从 json/xml 提取 resid,经 IPC get_forward_msg 拉取正文。
|
|
3
3
|
*/
|
|
4
|
-
import type
|
|
5
|
-
|
|
4
|
+
import { segment, type MessageSegment, type QuotedMessagePayload } from 'zhin.js';
|
|
5
|
+
|
|
6
6
|
import { Actions } from "./protocol.js";
|
|
7
7
|
import type { IpcClient } from "./ipc-client.js";
|
|
8
8
|
import {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { IcqqAdapter } from './adapter.js';
|
|
2
|
+
import type { IcqqEndpoint } from './endpoint.js';
|
|
3
|
+
|
|
4
|
+
export interface IcqqAgentDeps {
|
|
5
|
+
getEndpoint: (endpointId: string) => IcqqEndpoint;
|
|
6
|
+
getAdapter: () => IcqqAdapter;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let _deps: IcqqAgentDeps | null = null;
|
|
10
|
+
|
|
11
|
+
export function setIcqqAgentDeps(deps: IcqqAgentDeps): void {
|
|
12
|
+
_deps = deps;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function getIcqqAgentDeps(): IcqqAgentDeps {
|
|
16
|
+
if (!_deps) throw new Error('icqq agent deps not initialized');
|
|
17
|
+
return _deps;
|
|
18
|
+
}
|
package/src/icqq-side-events.ts
CHANGED
|
@@ -1,29 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* icqq IPC 非 message 入站:notice / request / meta(对齐 OneBot 与 @icqqjs/icqq EventMap)
|
|
3
|
-
* @see https://icqq.pages.dev/interfaces/EventMap.html
|
|
4
3
|
*/
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
import type { RequestType } from "zhin.js";
|
|
4
|
+
import { mapNoticeParts, mapRequestParts, resolveSideEventDedupeKey, senderFromId, buildNotice, buildRequest, formatCompact, type OneBotLikeRawEvent } from 'zhin.js';
|
|
5
|
+
|
|
8
6
|
import { Actions } from "./protocol.js";
|
|
9
7
|
import type { IpcClient } from "./ipc-client.js";
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
export interface IcqqIpcRawEvent {
|
|
13
|
-
post_type?: string;
|
|
14
|
-
time?: number;
|
|
15
|
-
self_id?: number;
|
|
16
|
-
notice_type?: string;
|
|
17
|
-
request_type?: string;
|
|
18
|
-
sub_type?: string;
|
|
19
|
-
meta_event_type?: string;
|
|
20
|
-
group_id?: number;
|
|
21
|
-
user_id?: number;
|
|
22
|
-
operator_id?: number;
|
|
23
|
-
flag?: string;
|
|
24
|
-
comment?: string;
|
|
25
|
-
[key: string]: unknown;
|
|
26
|
-
}
|
|
9
|
+
export type IcqqIpcRawEvent = OneBotLikeRawEvent;
|
|
27
10
|
|
|
28
11
|
export function resolveIcqqEventPostType(
|
|
29
12
|
data: Record<string, unknown>,
|
|
@@ -54,110 +37,39 @@ export function isIcqqMetaPayload(data: unknown): data is IcqqIpcRawEvent {
|
|
|
54
37
|
return pt === "meta_event" || (typeof pt === "string" && pt.startsWith("system."));
|
|
55
38
|
}
|
|
56
39
|
|
|
57
|
-
/** 去重用:notice / request 无稳定 id 时组合键 */
|
|
58
|
-
export function resolveSideEventDedupeKey(
|
|
59
|
-
data: IcqqIpcRawEvent,
|
|
60
|
-
kind: "notice" | "request" | "meta",
|
|
61
|
-
): string {
|
|
62
|
-
if (data.flag != null && String(data.flag) !== "") {
|
|
63
|
-
return `${kind}:${data.flag}`;
|
|
64
|
-
}
|
|
65
|
-
const time = data.time ?? 0;
|
|
66
|
-
const type =
|
|
67
|
-
data.notice_type ?? data.request_type ?? data.meta_event_type ?? kind;
|
|
68
|
-
const scope = data.group_id ?? data.user_id ?? "";
|
|
69
|
-
const sub = data.sub_type ?? "";
|
|
70
|
-
return `${kind}:${time}_${type}_${scope}_${sub}`;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
const NOTICE_TYPE_MAP: Record<string, NoticeType> = {
|
|
74
|
-
group_increase: "group_member_increase",
|
|
75
|
-
group_decrease: "group_member_decrease",
|
|
76
|
-
group_admin: "group_admin_change",
|
|
77
|
-
group_ban: "group_ban",
|
|
78
|
-
group_recall: "group_recall",
|
|
79
|
-
friend_recall: "friend_recall",
|
|
80
|
-
friend_add: "friend_add",
|
|
81
|
-
group_upload: "group_upload",
|
|
82
|
-
group_sign: "group_sign",
|
|
83
|
-
group_transfer: "group_transfer",
|
|
84
|
-
// icqq EventMap 命名 → Zhin NoticeType
|
|
85
|
-
"group.increase": "group_member_increase",
|
|
86
|
-
"group.decrease": "group_member_decrease",
|
|
87
|
-
"group.admin": "group_admin_change",
|
|
88
|
-
"group.ban": "group_ban",
|
|
89
|
-
"group.recall": "group_recall",
|
|
90
|
-
"friend.increase": "friend_add",
|
|
91
|
-
"friend.decrease": "friend_recall",
|
|
92
|
-
"friend.recall": "friend_recall",
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
function resolveNoticeZhinType(event: IcqqIpcRawEvent): NoticeType {
|
|
96
|
-
const raw = event.notice_type ?? "";
|
|
97
|
-
if (NOTICE_TYPE_MAP[raw]) return NOTICE_TYPE_MAP[raw];
|
|
98
|
-
if (raw === "notify") {
|
|
99
|
-
if (event.sub_type === "poke") {
|
|
100
|
-
return event.group_id != null ? "group_poke" : "friend_poke";
|
|
101
|
-
}
|
|
102
|
-
return `notify_${event.sub_type ?? "unknown"}` as NoticeType;
|
|
103
|
-
}
|
|
104
|
-
if (raw.startsWith("notice.")) {
|
|
105
|
-
const suffix = raw.slice("notice.".length).replace(/\./g, "_");
|
|
106
|
-
return (NOTICE_TYPE_MAP[suffix] ?? suffix) as NoticeType;
|
|
107
|
-
}
|
|
108
|
-
return raw as NoticeType;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
function senderFromId(id: unknown, name?: string) {
|
|
112
|
-
if (id == null) return undefined;
|
|
113
|
-
const s = String(id);
|
|
114
|
-
return { id: s, name: name ?? s };
|
|
115
|
-
}
|
|
116
|
-
|
|
117
40
|
export function formatIcqqNotice(
|
|
118
41
|
event: IcqqIpcRawEvent,
|
|
119
42
|
endpointName: string,
|
|
120
|
-
)
|
|
121
|
-
const
|
|
43
|
+
) {
|
|
44
|
+
const raw = event.notice_type ?? "";
|
|
122
45
|
const isGroup = event.group_id != null;
|
|
123
|
-
const
|
|
46
|
+
const { scene_type, sub_type } = mapNoticeParts('icqq', raw, { sub_type: event.sub_type, is_group: isGroup });
|
|
47
|
+
const sceneId = String(
|
|
124
48
|
event.group_id ?? event.user_id ?? event.operator_id ?? "",
|
|
125
49
|
);
|
|
126
50
|
const tsSec = event.time ?? Math.floor(Date.now() / 1000);
|
|
127
51
|
|
|
128
|
-
return
|
|
52
|
+
return buildNotice(event, {
|
|
129
53
|
$id: resolveSideEventDedupeKey(event, "notice"),
|
|
130
54
|
$adapter: "icqq",
|
|
131
55
|
$endpoint: endpointName,
|
|
132
|
-
$type,
|
|
133
|
-
$
|
|
134
|
-
$
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
},
|
|
138
|
-
$operator: senderFromId(event.operator_id),
|
|
56
|
+
$type: "notice",
|
|
57
|
+
$scene_id: sceneId,
|
|
58
|
+
$scene_type: scene_type,
|
|
59
|
+
$sub_type: sub_type,
|
|
60
|
+
$actor: senderFromId(event.operator_id),
|
|
139
61
|
$target: senderFromId(event.user_id),
|
|
140
62
|
$timestamp: tsSec * 1000,
|
|
141
63
|
});
|
|
142
64
|
}
|
|
143
65
|
|
|
144
|
-
function resolveRequestZhinType(event: IcqqIpcRawEvent): RequestType {
|
|
145
|
-
const rt = event.request_type ?? "";
|
|
146
|
-
if (rt === "friend" || rt.startsWith("friend")) return "friend_add";
|
|
147
|
-
if (rt === "group" || rt.startsWith("group")) {
|
|
148
|
-
return event.sub_type === "invite" ? "group_invite" : "group_add";
|
|
149
|
-
}
|
|
150
|
-
return rt as RequestType;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
66
|
export function formatIcqqRequest(
|
|
154
67
|
event: IcqqIpcRawEvent,
|
|
155
68
|
endpointName: string,
|
|
156
69
|
ipc: IpcClient,
|
|
157
|
-
)
|
|
158
|
-
const
|
|
159
|
-
const
|
|
160
|
-
const channelId = String(event.group_id ?? event.user_id ?? "");
|
|
70
|
+
) {
|
|
71
|
+
const { scene_type, sub_type } = mapRequestParts('icqq', event.request_type ?? '', event.sub_type);
|
|
72
|
+
const sceneId = String(event.group_id ?? event.user_id ?? "");
|
|
161
73
|
const tsSec = event.time ?? Math.floor(Date.now() / 1000);
|
|
162
74
|
const flag = event.flag ?? resolveSideEventDedupeKey(event, "request");
|
|
163
75
|
|
|
@@ -166,18 +78,16 @@ export function formatIcqqRequest(
|
|
|
166
78
|
(typeof event.request_type === "string" &&
|
|
167
79
|
event.request_type.startsWith("friend"));
|
|
168
80
|
|
|
169
|
-
return
|
|
81
|
+
return buildRequest(event, {
|
|
170
82
|
$id: String(flag),
|
|
171
83
|
$adapter: "icqq",
|
|
172
84
|
$endpoint: endpointName,
|
|
173
|
-
$type,
|
|
174
|
-
$
|
|
175
|
-
$
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
$sender: senderFromId(event.user_id) ?? { id: "", name: "" },
|
|
180
|
-
$comment: event.comment,
|
|
85
|
+
$type: "request",
|
|
86
|
+
$scene_id: sceneId,
|
|
87
|
+
$scene_type: scene_type,
|
|
88
|
+
$sub_type: sub_type,
|
|
89
|
+
$actor: senderFromId(event.user_id) ?? { id: "", name: "" },
|
|
90
|
+
$comment: typeof event.comment === "string" ? event.comment : undefined,
|
|
181
91
|
$timestamp: tsSec * 1000,
|
|
182
92
|
$approve: async (remark?: string) => {
|
|
183
93
|
const action = isFriend
|
|
@@ -208,21 +118,26 @@ export function formatIcqqRequest(
|
|
|
208
118
|
});
|
|
209
119
|
}
|
|
210
120
|
|
|
211
|
-
/** meta_event / system.*:返回是否建议在上线后刷新好友/群列表 */
|
|
212
121
|
export function shouldRefreshListsOnMeta(event: IcqqIpcRawEvent): boolean {
|
|
213
122
|
if (event.meta_event_type === "lifecycle") {
|
|
214
123
|
const sub = event.sub_type;
|
|
215
124
|
return sub === "connect" || sub === "enable";
|
|
216
125
|
}
|
|
217
|
-
const pt = event.post_type ?? "";
|
|
126
|
+
const pt = String(event.post_type ?? "");
|
|
218
127
|
if (pt === "system.online" || pt.endsWith(".online")) return true;
|
|
219
128
|
return false;
|
|
220
129
|
}
|
|
221
130
|
|
|
222
131
|
export function formatIcqqMetaLog(event: IcqqIpcRawEvent): string {
|
|
132
|
+
const meta =
|
|
133
|
+
(typeof event.meta_event_type === "string" && event.meta_event_type) ||
|
|
134
|
+
(typeof event.post_type === "string" && event.post_type) ||
|
|
135
|
+
"meta";
|
|
136
|
+
const subType = typeof event.sub_type === "string" ? event.sub_type : undefined;
|
|
137
|
+
const time = typeof event.time === "number" ? event.time : undefined;
|
|
223
138
|
return formatCompact({
|
|
224
|
-
meta
|
|
225
|
-
sub_type:
|
|
226
|
-
time
|
|
139
|
+
meta,
|
|
140
|
+
sub_type: subType,
|
|
141
|
+
time,
|
|
227
142
|
});
|
|
228
143
|
}
|