@zhin.js/adapter-icqq 2.0.6 → 2.0.8

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 (56) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/lib/adapter.d.ts +7 -2
  3. package/lib/adapter.d.ts.map +1 -1
  4. package/lib/adapter.js +78 -33
  5. package/lib/adapter.js.map +1 -1
  6. package/lib/bot.d.ts +29 -29
  7. package/lib/bot.d.ts.map +1 -1
  8. package/lib/bot.js +226 -405
  9. package/lib/bot.js.map +1 -1
  10. package/lib/commands/index.d.ts +7 -0
  11. package/lib/commands/index.d.ts.map +1 -0
  12. package/lib/commands/index.js +30 -0
  13. package/lib/commands/index.js.map +1 -0
  14. package/lib/index.d.ts +1 -1
  15. package/lib/index.d.ts.map +1 -1
  16. package/lib/index.js +13 -297
  17. package/lib/index.js.map +1 -1
  18. package/lib/ipc-client.d.ts +60 -0
  19. package/lib/ipc-client.d.ts.map +1 -0
  20. package/lib/ipc-client.js +272 -0
  21. package/lib/ipc-client.js.map +1 -0
  22. package/lib/protocol.d.ts +174 -0
  23. package/lib/protocol.d.ts.map +1 -0
  24. package/lib/protocol.js +162 -0
  25. package/lib/protocol.js.map +1 -0
  26. package/lib/routes.d.ts +8 -0
  27. package/lib/routes.d.ts.map +1 -0
  28. package/lib/routes.js +67 -0
  29. package/lib/routes.js.map +1 -0
  30. package/lib/tools/index.d.ts +10 -0
  31. package/lib/tools/index.d.ts.map +1 -0
  32. package/lib/tools/index.js +336 -0
  33. package/lib/tools/index.js.map +1 -0
  34. package/lib/types.d.ts +45 -7
  35. package/lib/types.d.ts.map +1 -1
  36. package/lib/types.js +5 -0
  37. package/lib/types.js.map +1 -1
  38. package/package.json +8 -10
  39. package/plugin.yml +1 -1
  40. package/skills/icqq/SKILL.md +31 -64
  41. package/skills/icqq/references/friends.md +54 -0
  42. package/skills/icqq/references/general.md +145 -0
  43. package/skills/icqq/references/gfs.md +49 -0
  44. package/skills/icqq/references/groups.md +71 -0
  45. package/skills/icqq/references/messaging.md +66 -0
  46. package/skills/icqq/references/requests.md +27 -0
  47. package/skills/icqq/references/settings.md +38 -0
  48. package/src/adapter.ts +73 -35
  49. package/src/bot.ts +272 -443
  50. package/src/commands/index.ts +32 -0
  51. package/src/index.ts +14 -305
  52. package/src/ipc-client.ts +326 -0
  53. package/src/protocol.ts +242 -0
  54. package/src/routes.ts +83 -0
  55. package/src/tools/index.ts +407 -0
  56. package/src/types.ts +47 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @zhin.js/adapter-icqq
2
2
 
3
+ ## 2.0.8
4
+
5
+ ### Patch Changes
6
+
7
+ - @zhin.js/core@1.1.7
8
+ - zhin.js@1.0.65
9
+ - @zhin.js/console@2.0.7
10
+ - @zhin.js/http@1.0.60
11
+
12
+ ## 2.0.7
13
+
14
+ ### Patch Changes
15
+
16
+ - 36c1b8f: fix: 重构 icqq\github 适配器
17
+
3
18
  ## 2.0.6
4
19
 
5
20
  ### Patch Changes
package/lib/adapter.d.ts CHANGED
@@ -1,9 +1,15 @@
1
+ /**
2
+ * ICQQ 适配器 — 通过 @icqqjs/cli 守护进程 IPC 管理 Bot 实例
3
+ */
1
4
  import { Adapter, Plugin } from "zhin.js";
2
5
  import { IcqqBot } from "./bot.js";
3
6
  import type { IcqqBotConfig } from "./types.js";
4
7
  export declare class IcqqAdapter extends Adapter<IcqqBot> {
5
8
  constructor(plugin: Plugin);
6
9
  createBot(config: IcqqBotConfig): IcqqBot;
10
+ start(): Promise<void>;
11
+ stop(): Promise<void>;
12
+ private getBot;
7
13
  kickMember(botId: string, sceneId: string, userId: string): Promise<boolean>;
8
14
  muteMember(botId: string, sceneId: string, userId: string, duration?: number): Promise<boolean>;
9
15
  muteAll(botId: string, sceneId: string, enable?: boolean): Promise<boolean>;
@@ -15,11 +21,10 @@ export declare class IcqqAdapter extends Adapter<IcqqBot> {
15
21
  user_id: number;
16
22
  nickname: string;
17
23
  card: string;
18
- role: import("@icqqjs/icqq").GroupRole;
24
+ role: import("./types.js").GroupRole;
19
25
  title: string;
20
26
  }[];
21
27
  count: number;
22
28
  }>;
23
- start(): Promise<void>;
24
29
  }
25
30
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,OAAO,EACP,MAAM,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,WAAY,SAAQ,OAAO,CAAC,OAAO,CAAC;gBACnC,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAMnC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMzD,UAAU,CACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,SAAM;IAOV,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAO;IAMrD,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,UAAO;IAOT,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM;IAOZ,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAMzD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;IAgB1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAG/D,qBAAa,WAAY,SAAQ,OAAO,CAAC,OAAO,CAAC;gBACnC,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAInC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,CAAC,MAAM;IAMR,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAWzD,UAAU,CACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,SAAM;IAYV,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAO;IAUrD,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,UAAO;IAYT,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM;IAYZ,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAUzD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;CAiBjD"}
package/lib/adapter.js CHANGED
@@ -1,5 +1,9 @@
1
- import { Adapter, } from "zhin.js";
1
+ /**
2
+ * ICQQ 适配器 — 通过 @icqqjs/cli 守护进程 IPC 管理 Bot 实例
3
+ */
4
+ import { Adapter } from "zhin.js";
2
5
  import { IcqqBot } from "./bot.js";
6
+ import { Actions } from "./protocol.js";
3
7
  export class IcqqAdapter extends Adapter {
4
8
  constructor(plugin) {
5
9
  super(plugin, "icqq", []);
@@ -7,49 +11,94 @@ export class IcqqAdapter extends Adapter {
7
11
  createBot(config) {
8
12
  return new IcqqBot(this, config);
9
13
  }
10
- // ── IGroupManagement 标准群管方法 ──────────────────────────────────
11
- async kickMember(botId, sceneId, userId) {
14
+ async start() {
15
+ await super.start();
16
+ this.logger.info("ICQQ 适配器已启动");
17
+ }
18
+ async stop() {
19
+ await super.stop();
20
+ this.logger.info("ICQQ 适配器已停止");
21
+ }
22
+ // ── IGroupManagement 标准群管方法(通过 IPC) ─────────────────────
23
+ getBot(botId) {
12
24
  const bot = this.bots.get(botId);
13
25
  if (!bot)
14
26
  throw new Error(`Bot ${botId} 不存在`);
15
- return bot.kickMember(Number(sceneId), Number(userId), false);
27
+ return bot;
28
+ }
29
+ async kickMember(botId, sceneId, userId) {
30
+ const bot = this.getBot(botId);
31
+ const resp = await bot.ipc.request(Actions.GROUP_KICK, {
32
+ group_id: Number(sceneId),
33
+ user_id: Number(userId),
34
+ reject_add_request: false,
35
+ });
36
+ if (!resp.ok)
37
+ throw new Error(resp.error ?? "踢人失败");
38
+ return true;
16
39
  }
17
40
  async muteMember(botId, sceneId, userId, duration = 600) {
18
- const bot = this.bots.get(botId);
19
- if (!bot)
20
- throw new Error(`Bot ${botId} 不存在`);
21
- return bot.muteMember(Number(sceneId), Number(userId), duration);
41
+ const bot = this.getBot(botId);
42
+ const resp = await bot.ipc.request(Actions.GROUP_MUTE, {
43
+ group_id: Number(sceneId),
44
+ user_id: Number(userId),
45
+ duration,
46
+ });
47
+ if (!resp.ok)
48
+ throw new Error(resp.error ?? "禁言失败");
49
+ return true;
22
50
  }
23
51
  async muteAll(botId, sceneId, enable = true) {
24
- const bot = this.bots.get(botId);
25
- if (!bot)
26
- throw new Error(`Bot ${botId} 不存在`);
27
- return bot.muteAll(Number(sceneId), enable);
52
+ const bot = this.getBot(botId);
53
+ const resp = await bot.ipc.request(Actions.GROUP_MUTE_ALL, {
54
+ group_id: Number(sceneId),
55
+ enable,
56
+ });
57
+ if (!resp.ok)
58
+ throw new Error(resp.error ?? "全员禁言失败");
59
+ return true;
28
60
  }
29
61
  async setAdmin(botId, sceneId, userId, enable = true) {
30
- const bot = this.bots.get(botId);
31
- if (!bot)
32
- throw new Error(`Bot ${botId} 不存在`);
33
- return bot.setAdmin(Number(sceneId), Number(userId), enable);
62
+ const bot = this.getBot(botId);
63
+ const resp = await bot.ipc.request(Actions.SET_GROUP_ADMIN, {
64
+ group_id: Number(sceneId),
65
+ user_id: Number(userId),
66
+ enable,
67
+ });
68
+ if (!resp.ok)
69
+ throw new Error(resp.error ?? "设置管理员失败");
70
+ return true;
34
71
  }
35
72
  async setMemberNickname(botId, sceneId, userId, nickname) {
36
- const bot = this.bots.get(botId);
37
- if (!bot)
38
- throw new Error(`Bot ${botId} 不存在`);
39
- return bot.setCard(Number(sceneId), Number(userId), nickname);
73
+ const bot = this.getBot(botId);
74
+ const resp = await bot.ipc.request(Actions.SET_GROUP_CARD, {
75
+ group_id: Number(sceneId),
76
+ user_id: Number(userId),
77
+ card: nickname,
78
+ });
79
+ if (!resp.ok)
80
+ throw new Error(resp.error ?? "设置群名片失败");
81
+ return true;
40
82
  }
41
83
  async setGroupName(botId, sceneId, name) {
42
- const bot = this.bots.get(botId);
43
- if (!bot)
44
- throw new Error(`Bot ${botId} 不存在`);
45
- return bot.setGroupName(Number(sceneId), name);
84
+ const bot = this.getBot(botId);
85
+ const resp = await bot.ipc.request(Actions.SET_GROUP_NAME, {
86
+ group_id: Number(sceneId),
87
+ name,
88
+ });
89
+ if (!resp.ok)
90
+ throw new Error(resp.error ?? "设置群名失败");
91
+ return true;
46
92
  }
47
93
  async listMembers(botId, sceneId) {
48
- const bot = this.bots.get(botId);
49
- if (!bot)
50
- throw new Error(`Bot ${botId} 不存在`);
51
- const memberMap = await bot.getMemberList(Number(sceneId));
52
- const members = Array.from(memberMap.values()).map((m) => ({
94
+ const bot = this.getBot(botId);
95
+ const resp = await bot.ipc.request(Actions.LIST_GROUP_MEMBERS, {
96
+ group_id: Number(sceneId),
97
+ });
98
+ if (!resp.ok)
99
+ throw new Error(resp.error ?? "获取成员列表失败");
100
+ const raw = resp.data;
101
+ const members = raw.map((m) => ({
53
102
  user_id: m.user_id,
54
103
  nickname: m.nickname,
55
104
  card: m.card,
@@ -58,9 +107,5 @@ export class IcqqAdapter extends Adapter {
58
107
  }));
59
108
  return { members, count: members.length };
60
109
  }
61
- // ── 生命周期 ───────────────────────────────────────────────────────
62
- async start() {
63
- await super.start();
64
- }
65
110
  }
66
111
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/lib/bot.d.ts CHANGED
@@ -1,46 +1,46 @@
1
1
  /**
2
- * ICQQ Bot:继承 icqq Client,实现 zhin Bot 接口
2
+ * ICQQ Bot:通过 @icqqjs/cli 守护进程 IPC 通信,实现 zhin Bot 接口
3
+ *
4
+ * 不再直接依赖 @icqqjs/icqq 协议库。
5
+ * 登录由 `icqq login` 完成,本 Bot 只负责连接守护进程并收发消息。
3
6
  */
4
- import { Client, PrivateMessageEvent, GroupMessageEvent, Sendable, MemberInfo } from "@icqqjs/icqq";
5
7
  import { Bot, Message, SendOptions, MessageSegment, SendContent } from "zhin.js";
6
- import type { IcqqBotConfig } from "./types.js";
8
+ import type { IcqqBotConfig, IpcFriendInfo, IpcGroupInfo } from "./types.js";
7
9
  import type { IcqqAdapter } from "./adapter.js";
8
- export declare class IcqqBot extends Client implements Bot<IcqqBotConfig, PrivateMessageEvent | GroupMessageEvent> {
10
+ import { IpcClient } from "./ipc-client.js";
11
+ import { type IpcMessageEventData } from "./protocol.js";
12
+ export declare class IcqqBot implements Bot<IcqqBotConfig, IpcMessageEventData> {
9
13
  adapter: IcqqAdapter;
10
14
  $connected: boolean;
11
15
  $config: IcqqBotConfig;
12
- get pluginLogger(): import("zhin.js").Logger;
16
+ ipc: IpcClient;
17
+ /** 缓存的好友列表 */
18
+ friends: Map<number, IpcFriendInfo>;
19
+ /** 缓存的群列表 */
20
+ groups: Map<number, IpcGroupInfo>;
21
+ private subscriptions;
13
22
  get $id(): `${number}`;
23
+ get logger(): import("zhin.js").Logger;
14
24
  constructor(adapter: IcqqAdapter, config: IcqqBotConfig);
15
- private handleIcqqMessage;
16
25
  $connect(): Promise<void>;
26
+ /** 刷新好友/群列表缓存 */
27
+ refreshLists(): Promise<void>;
17
28
  $disconnect(): Promise<void>;
18
- $formatMessage(msg: PrivateMessageEvent | GroupMessageEvent): Message<PrivateMessageEvent | GroupMessageEvent>;
19
- private getSenderInfo;
20
- private handleGroupNotice;
21
- private handleFriendNotice;
22
- private handleFriendRequest;
23
- private handleGroupRequest;
24
- kickMember(groupId: number, userId: number, block?: boolean): Promise<boolean>;
25
- muteMember(groupId: number, userId: number, duration?: number): Promise<boolean>;
26
- muteAll(groupId: number, enable?: boolean): Promise<boolean>;
27
- setAdmin(groupId: number, userId: number, enable?: boolean): Promise<boolean>;
28
- setCard(groupId: number, userId: number, card: string): Promise<boolean>;
29
- setTitle(groupId: number, userId: number, title: string, duration?: number): Promise<boolean>;
30
- setGroupName(groupId: number, name: string): Promise<boolean>;
31
- sendAnnounce(groupId: number, content: string): Promise<boolean>;
32
- pokeMember(groupId: number, userId: number): Promise<boolean>;
33
- getMemberList(groupId: number): Promise<Map<number, MemberInfo>>;
34
- getMutedMembers(groupId: number): Promise<any[]>;
35
- setAnonymous(groupId: number, enable?: boolean): Promise<boolean>;
36
- getGroupFiles(groupId: number): Promise<any>;
29
+ private handleEvent;
30
+ $formatMessage(raw: IpcMessageEventData): Message<IpcMessageEventData>;
37
31
  $recallMessage(id: string): Promise<void>;
38
32
  $sendMessage(options: SendOptions): Promise<string>;
39
33
  }
40
34
  export declare namespace IcqqBot {
41
- function toSegments(message: Sendable): MessageSegment[];
42
- }
43
- export declare namespace IcqqBot {
44
- function toSendable(content: SendContent): Sendable;
35
+ /**
36
+ * 将 CQ 码原始消息字符串解析为 MessageSegment 数组。
37
+ * 格式: `[type:value]` 或纯文本
38
+ */
39
+ function parseCqMessage(raw: string): MessageSegment[];
40
+ /**
41
+ * 将 SendContent(MessageSegment[] 或字符串)转为 CQ 码字符串。
42
+ * 守护进程使用 CQ 码字符串格式收发消息。
43
+ */
44
+ function toCqString(content: SendContent): string;
45
45
  }
46
46
  //# sourceMappingURL=bot.d.ts.map
package/lib/bot.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,GAAG,EACH,OAAO,EACP,WAAW,EACX,cAAc,EACd,WAAW,EAEZ,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACb,YAAY,EAEb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,eAAe,CAAC;AAEvB,qBAAa,OAAQ,YAAW,GAAG,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAqB5D,OAAO,EAAE,WAAW;IApB7B,UAAU,UAAS;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,EAAG,SAAS,CAAC;IAEhB,cAAc;IACd,OAAO,6BAAoC;IAC3C,aAAa;IACb,MAAM,4BAAmC;IAEzC,OAAO,CAAC,aAAa,CAAmD;IAExE,IAAI,GAAG,gBAEN;IAED,IAAI,MAAM,6BAET;gBAGQ,OAAO,EAAE,WAAW,EAC3B,MAAM,EAAE,aAAa;IAOjB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C/B,iBAAiB;IACX,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlC,OAAO,CAAC,WAAW;IAWnB,cAAc,CAAC,GAAG,EAAE,mBAAmB;IAqDjC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAgC1D;AAID,yBAAiB,OAAO,CAAC;IACvB;;;OAGG;IACH,SAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CA6D5D;IAED;;;OAGG;IACH,SAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA+BvD;CACF"}