@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.
Files changed (149) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +1 -1
  3. package/agent/tools/announce.ts +21 -0
  4. package/agent/tools/essence.ts +22 -0
  5. package/agent/tools/friend_list.ts +19 -0
  6. package/agent/tools/group_files.ts +27 -0
  7. package/agent/tools/group_invite.ts +20 -0
  8. package/agent/tools/group_list.ts +20 -0
  9. package/agent/tools/group_sign.ts +19 -0
  10. package/agent/tools/list_muted.ts +22 -0
  11. package/agent/tools/poke.ts +20 -0
  12. package/agent/tools/send_user_like.ts +22 -0
  13. package/agent/tools/set_anonymous.ts +22 -0
  14. package/agent/tools/set_title.ts +25 -0
  15. package/lib/agent/tools/announce.js +21 -0
  16. package/lib/agent/tools/announce.js.map +1 -0
  17. package/lib/agent/tools/essence.js +22 -0
  18. package/lib/agent/tools/essence.js.map +1 -0
  19. package/lib/agent/tools/friend_list.js +19 -0
  20. package/lib/agent/tools/friend_list.js.map +1 -0
  21. package/lib/agent/tools/group_files.js +29 -0
  22. package/lib/agent/tools/group_files.js.map +1 -0
  23. package/lib/agent/tools/group_invite.js +20 -0
  24. package/lib/agent/tools/group_invite.js.map +1 -0
  25. package/lib/agent/tools/group_list.js +20 -0
  26. package/lib/agent/tools/group_list.js.map +1 -0
  27. package/lib/agent/tools/group_sign.js +19 -0
  28. package/lib/agent/tools/group_sign.js.map +1 -0
  29. package/lib/agent/tools/list_muted.js +23 -0
  30. package/lib/agent/tools/list_muted.js.map +1 -0
  31. package/lib/agent/tools/poke.js +20 -0
  32. package/lib/agent/tools/poke.js.map +1 -0
  33. package/lib/agent/tools/send_user_like.js +22 -0
  34. package/lib/agent/tools/send_user_like.js.map +1 -0
  35. package/lib/agent/tools/set_anonymous.js +22 -0
  36. package/lib/agent/tools/set_anonymous.js.map +1 -0
  37. package/lib/agent/tools/set_title.js +25 -0
  38. package/lib/agent/tools/set_title.js.map +1 -0
  39. package/lib/src/adapter.js.map +1 -0
  40. package/lib/src/agent-prompt.js.map +1 -0
  41. package/lib/src/cq-message.js.map +1 -0
  42. package/lib/{endpoint.js → src/endpoint.js} +21 -20
  43. package/lib/src/endpoint.js.map +1 -0
  44. package/lib/{forward-msg.js → src/forward-msg.js} +4 -1
  45. package/lib/src/forward-msg.js.map +1 -0
  46. package/lib/src/get-msg.js.map +1 -0
  47. package/lib/src/icqq-agent-deps.js +10 -0
  48. package/lib/src/icqq-agent-deps.js.map +1 -0
  49. package/lib/src/icqq-guild.js.map +1 -0
  50. package/lib/src/icqq-inbound.js.map +1 -0
  51. package/lib/src/icqq-login-assist-bridge.js.map +1 -0
  52. package/lib/{icqq-side-events.js → src/icqq-side-events.js} +28 -92
  53. package/lib/src/icqq-side-events.js.map +1 -0
  54. package/lib/src/index.js.map +1 -0
  55. package/lib/src/ipc-client.js.map +1 -0
  56. package/lib/src/login-assist-routes.js.map +1 -0
  57. package/lib/src/login-ipc-contract.js.map +1 -0
  58. package/lib/src/outbound-media.js.map +1 -0
  59. package/lib/src/protocol.js.map +1 -0
  60. package/lib/src/routes.js.map +1 -0
  61. package/lib/src/segment-mapper.js.map +1 -0
  62. package/lib/src/tools/index.js +23 -0
  63. package/lib/src/tools/index.js.map +1 -0
  64. package/lib/src/types.js.map +1 -0
  65. package/package.json +23 -19
  66. package/src/agent-prompt.ts +1 -2
  67. package/src/endpoint.ts +21 -33
  68. package/src/forward-msg.ts +2 -2
  69. package/src/icqq-agent-deps.ts +18 -0
  70. package/src/icqq-side-events.ts +33 -118
  71. package/src/tools/index.ts +14 -395
  72. package/lib/adapter.d.ts +0 -46
  73. package/lib/adapter.d.ts.map +0 -1
  74. package/lib/adapter.js.map +0 -1
  75. package/lib/agent-prompt.d.ts +0 -3
  76. package/lib/agent-prompt.d.ts.map +0 -1
  77. package/lib/agent-prompt.js.map +0 -1
  78. package/lib/cq-message.d.ts +0 -10
  79. package/lib/cq-message.d.ts.map +0 -1
  80. package/lib/cq-message.js.map +0 -1
  81. package/lib/endpoint.d.ts +0 -103
  82. package/lib/endpoint.d.ts.map +0 -1
  83. package/lib/endpoint.js.map +0 -1
  84. package/lib/forward-msg.d.ts +0 -27
  85. package/lib/forward-msg.d.ts.map +0 -1
  86. package/lib/forward-msg.js.map +0 -1
  87. package/lib/get-msg.d.ts +0 -3
  88. package/lib/get-msg.d.ts.map +0 -1
  89. package/lib/get-msg.js.map +0 -1
  90. package/lib/icqq-guild.d.ts +0 -48
  91. package/lib/icqq-guild.d.ts.map +0 -1
  92. package/lib/icqq-guild.js.map +0 -1
  93. package/lib/icqq-inbound.d.ts +0 -130
  94. package/lib/icqq-inbound.d.ts.map +0 -1
  95. package/lib/icqq-inbound.js.map +0 -1
  96. package/lib/icqq-login-assist-bridge.d.ts +0 -5
  97. package/lib/icqq-login-assist-bridge.d.ts.map +0 -1
  98. package/lib/icqq-login-assist-bridge.js.map +0 -1
  99. package/lib/icqq-side-events.d.ts +0 -34
  100. package/lib/icqq-side-events.d.ts.map +0 -1
  101. package/lib/icqq-side-events.js.map +0 -1
  102. package/lib/index.d.ts +0 -18
  103. package/lib/index.d.ts.map +0 -1
  104. package/lib/index.js.map +0 -1
  105. package/lib/ipc-client.d.ts +0 -74
  106. package/lib/ipc-client.d.ts.map +0 -1
  107. package/lib/ipc-client.js.map +0 -1
  108. package/lib/login-assist-routes.d.ts +0 -7
  109. package/lib/login-assist-routes.d.ts.map +0 -1
  110. package/lib/login-assist-routes.js.map +0 -1
  111. package/lib/login-ipc-contract.d.ts +0 -44
  112. package/lib/login-ipc-contract.d.ts.map +0 -1
  113. package/lib/login-ipc-contract.js.map +0 -1
  114. package/lib/outbound-media.d.ts +0 -14
  115. package/lib/outbound-media.d.ts.map +0 -1
  116. package/lib/outbound-media.js.map +0 -1
  117. package/lib/protocol.d.ts +0 -198
  118. package/lib/protocol.d.ts.map +0 -1
  119. package/lib/protocol.js.map +0 -1
  120. package/lib/routes.d.ts +0 -8
  121. package/lib/routes.d.ts.map +0 -1
  122. package/lib/routes.js.map +0 -1
  123. package/lib/segment-mapper.d.ts +0 -2
  124. package/lib/segment-mapper.d.ts.map +0 -1
  125. package/lib/segment-mapper.js.map +0 -1
  126. package/lib/tools/index.d.ts +0 -10
  127. package/lib/tools/index.d.ts.map +0 -1
  128. package/lib/tools/index.js +0 -341
  129. package/lib/tools/index.js.map +0 -1
  130. package/lib/types.d.ts +0 -73
  131. package/lib/types.d.ts.map +0 -1
  132. package/lib/types.js.map +0 -1
  133. /package/{skills/icqq → agent}/PERMITS.md +0 -0
  134. /package/lib/{adapter.js → src/adapter.js} +0 -0
  135. /package/lib/{agent-prompt.js → src/agent-prompt.js} +0 -0
  136. /package/lib/{cq-message.js → src/cq-message.js} +0 -0
  137. /package/lib/{get-msg.js → src/get-msg.js} +0 -0
  138. /package/lib/{icqq-guild.js → src/icqq-guild.js} +0 -0
  139. /package/lib/{icqq-inbound.js → src/icqq-inbound.js} +0 -0
  140. /package/lib/{icqq-login-assist-bridge.js → src/icqq-login-assist-bridge.js} +0 -0
  141. /package/lib/{index.js → src/index.js} +0 -0
  142. /package/lib/{ipc-client.js → src/ipc-client.js} +0 -0
  143. /package/lib/{login-assist-routes.js → src/login-assist-routes.js} +0 -0
  144. /package/lib/{login-ipc-contract.js → src/login-ipc-contract.js} +0 -0
  145. /package/lib/{outbound-media.js → src/outbound-media.js} +0 -0
  146. /package/lib/{protocol.js → src/protocol.js} +0 -0
  147. /package/lib/{routes.js → src/routes.js} +0 -0
  148. /package/lib/{segment-mapper.js → src/segment-mapper.js} +0 -0
  149. /package/lib/{types.js → src/types.js} +0 -0
@@ -1,13 +1,12 @@
1
1
  /**
2
- * ICQQ 平台特有工具注册 — 通过 IPC 调用守护进程 Actions
2
+ * ICQQ 场景管理工具注册
3
3
  *
4
- * 通用群管理工具由 createSceneManagementTools() 自动生成;
5
- * 本模块注册 ICQQ 独有的扩展工具。
4
+ * 平台特有工具已迁移至 agent/tools/;本模块仅注册通用群管工具。
6
5
  */
7
- import type { ToolFeature } from "zhin.js";
8
- import { createSceneManagementTools } from "zhin.js";
6
+ import { createSceneManagementTools, type ToolFeature } from 'zhin.js';
7
+
9
8
  import type { IcqqAdapter } from "../adapter.js";
10
- import { Actions } from "../protocol.js";
9
+ import { setIcqqAgentDeps } from "../icqq-agent-deps.js";
11
10
 
12
11
  export function registerTools(
13
12
  toolService: ToolFeature,
@@ -16,397 +15,17 @@ export function registerTools(
16
15
  ): () => void {
17
16
  const disposers: (() => void)[] = [];
18
17
 
19
- // ── 通用群管工具 ───────────────────────────────────────────────────
18
+ setIcqqAgentDeps({
19
+ getEndpoint: (endpointId) => {
20
+ const endpoint = icqq.endpoints.get(endpointId);
21
+ if (!endpoint) throw new Error(`Endpoint ${endpointId} 不存在`);
22
+ return endpoint;
23
+ },
24
+ getAdapter: () => icqq,
25
+ });
26
+
20
27
  const sceneTools = createSceneManagementTools(icqq, "icqq");
21
28
  disposers.push(...sceneTools.map((t) => toolService.addTool(t, pluginName)));
22
29
 
23
- // ── 设置头衔 ───────────────────────────────────────────────────────
24
- disposers.push(
25
- toolService.addTool(
26
- {
27
- name: "icqq_set_title",
28
- description: "设置 QQ 群成员的专属头衔",
29
- parameters: {
30
- type: "object",
31
- properties: {
32
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
33
- group_id: { type: "number", description: "目标群号" },
34
- user_id: { type: "number", description: "目标成员 QQ号" },
35
- title: { type: "string", description: "头衔文字" },
36
- duration: { type: "number", description: "持续时间(秒),-1永久" },
37
- },
38
- required: ["endpoint_id", "group_id", "user_id", "title"],
39
- },
40
- platforms: ["icqq"],
41
- tags: ["icqq"],
42
- permissions: ["platform(icqq,scene_owner)"],
43
- execute: async (args: Record<string, any>) => {
44
- const endpoint = icqq.endpoints.get(args.endpoint_id);
45
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
46
- const resp = await endpoint.ipc.request(Actions.SET_GROUP_TITLE, {
47
- group_id: args.group_id,
48
- user_id: args.user_id,
49
- title: args.title,
50
- duration: args.duration ?? -1,
51
- });
52
- return { success: resp.ok, message: resp.ok ? `已将 ${args.user_id} 的头衔设为 "${args.title}"` : (resp.error ?? "设置失败") };
53
- },
54
- },
55
- pluginName,
56
- ),
57
- );
58
-
59
- // ── 发送群公告 ─────────────────────────────────────────────────────
60
- disposers.push(
61
- toolService.addTool(
62
- {
63
- name: "icqq_announce",
64
- description: "发送 QQ 群公告(需要管理员权限)",
65
- parameters: {
66
- type: "object",
67
- properties: {
68
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
69
- group_id: { type: "number", description: "目标群号" },
70
- content: { type: "string", description: "公告内容" },
71
- },
72
- required: ["endpoint_id", "group_id", "content"],
73
- },
74
- platforms: ["icqq"],
75
- tags: ["icqq"],
76
- permissions: ["platform(icqq,scene_admin)"],
77
- execute: async (args: Record<string, any>) => {
78
- const endpoint = icqq.endpoints.get(args.endpoint_id);
79
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
80
- const resp = await endpoint.ipc.request(Actions.GROUP_ANNOUNCE, {
81
- group_id: args.group_id,
82
- content: args.content,
83
- });
84
- return { success: resp.ok, message: resp.ok ? "群公告已发送" : (resp.error ?? "发送失败") };
85
- },
86
- },
87
- pluginName,
88
- ),
89
- );
90
-
91
- // ── 戳一戳 ─────────────────────────────────────────────────────────
92
- disposers.push(
93
- toolService.addTool(
94
- {
95
- name: "icqq_poke",
96
- description: "在 QQ 群中对某个成员执行戳一戳互动操作",
97
- parameters: {
98
- type: "object",
99
- properties: {
100
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
101
- group_id: { type: "number", description: "目标群号" },
102
- user_id: { type: "number", description: "要戳的目标成员 QQ号" },
103
- },
104
- required: ["endpoint_id", "group_id", "user_id"],
105
- },
106
- platforms: ["icqq"],
107
- tags: ["icqq"],
108
- execute: async (args: Record<string, any>) => {
109
- const endpoint = icqq.endpoints.get(args.endpoint_id);
110
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
111
- const resp = await endpoint.ipc.request(Actions.GROUP_POKE, {
112
- group_id: args.group_id,
113
- user_id: args.user_id,
114
- });
115
- return { success: resp.ok, message: resp.ok ? `已戳了戳 ${args.user_id}` : (resp.error ?? "戳一戳失败") };
116
- },
117
- },
118
- pluginName,
119
- ),
120
- );
121
-
122
- // ── 获取被禁言列表 ─────────────────────────────────────────────────
123
- disposers.push(
124
- toolService.addTool(
125
- {
126
- name: "icqq_list_muted",
127
- description: "查询 QQ 群中当前被禁言的成员列表",
128
- parameters: {
129
- type: "object",
130
- properties: {
131
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
132
- group_id: { type: "number", description: "目标群号" },
133
- },
134
- required: ["endpoint_id", "group_id"],
135
- },
136
- platforms: ["icqq"],
137
- tags: ["icqq"],
138
- permissions: ["platform(icqq,scene_admin)"],
139
- execute: async (args: Record<string, any>) => {
140
- const endpoint = icqq.endpoints.get(args.endpoint_id);
141
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
142
- const resp = await endpoint.ipc.request(Actions.GROUP_MUTED_LIST, {
143
- group_id: args.group_id,
144
- });
145
- if (!resp.ok) throw new Error(resp.error ?? "获取禁言列表失败");
146
- const list = Array.isArray(resp.data) ? resp.data : [];
147
- return { muted_members: list, count: list.length };
148
- },
149
- },
150
- pluginName,
151
- ),
152
- );
153
-
154
- // ── 给用户点赞 ─────────────────────────────────────────────────────
155
- disposers.push(
156
- toolService.addTool(
157
- {
158
- name: "icqq_send_user_like",
159
- description: "给用户点赞(竖大拇指),每人每天最多 20 次",
160
- parameters: {
161
- type: "object",
162
- properties: {
163
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
164
- user_id: { type: "number", description: "要点赞的目标用户 QQ号" },
165
- times: { type: "number", description: "点赞次数(1-20),默认 1" },
166
- },
167
- required: ["endpoint_id", "user_id"],
168
- },
169
- platforms: ["icqq"],
170
- tags: ["icqq"],
171
- execute: async (args: Record<string, any>) => {
172
- const endpoint = icqq.endpoints.get(args.endpoint_id);
173
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
174
- const resp = await endpoint.ipc.request(Actions.FRIEND_LIKE, {
175
- user_id: args.user_id,
176
- times: Math.min(args.times ?? 1, 20),
177
- });
178
- return { success: resp.ok, message: resp.ok ? `已给 ${args.user_id} 点赞` : (resp.error ?? "点赞失败") };
179
- },
180
- },
181
- pluginName,
182
- ),
183
- );
184
-
185
- // ── 设置匿名聊天 ───────────────────────────────────────────────────
186
- disposers.push(
187
- toolService.addTool(
188
- {
189
- name: "icqq_set_anonymous",
190
- description: "开启或关闭 QQ 群的匿名聊天功能",
191
- parameters: {
192
- type: "object",
193
- properties: {
194
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
195
- group_id: { type: "number", description: "目标群号" },
196
- enable: { type: "boolean", description: "true=开启,false=关闭,默认 true" },
197
- },
198
- required: ["endpoint_id", "group_id"],
199
- },
200
- platforms: ["icqq"],
201
- tags: ["icqq"],
202
- permissions: ["platform(icqq,scene_owner)"],
203
- execute: async (args: Record<string, any>) => {
204
- const endpoint = icqq.endpoints.get(args.endpoint_id);
205
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
206
- const enable = args.enable ?? true;
207
- const resp = await endpoint.ipc.request(Actions.GROUP_ALLOW_ANONY, {
208
- group_id: args.group_id,
209
- enable,
210
- });
211
- return { success: resp.ok, message: resp.ok ? (enable ? "已开启匿名聊天" : "已关闭匿名聊天") : (resp.error ?? "操作失败") };
212
- },
213
- },
214
- pluginName,
215
- ),
216
- );
217
-
218
- // ── 群文件列表 ─────────────────────────────────────────────────────
219
- disposers.push(
220
- toolService.addTool(
221
- {
222
- name: "icqq_group_files",
223
- description: "获取 QQ 群的群文件列表",
224
- parameters: {
225
- type: "object",
226
- properties: {
227
- endpoint_id: { type: "string", description: "Endpoint 名称", contextKey: 'endpointId' },
228
- group_id: { type: "number", description: "群号" },
229
- },
230
- required: ["endpoint_id", "group_id"],
231
- },
232
- platforms: ["icqq"],
233
- tags: ["icqq"],
234
- execute: async (args: Record<string, any>) => {
235
- const endpoint = icqq.endpoints.get(args.endpoint_id);
236
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
237
- const resp = await endpoint.ipc.request(Actions.GFS_LIST, {
238
- group_id: args.group_id,
239
- });
240
- if (!resp.ok) throw new Error(resp.error ?? "获取群文件失败");
241
- const files = Array.isArray(resp.data) ? resp.data : [];
242
- if (!files.length) return { files: [], message: "群文件为空" };
243
- return {
244
- files: files.slice(0, 30).map((f: any) => ({
245
- name: f.name,
246
- size: f.size,
247
- uploader: f.uploader_uin,
248
- upload_time: f.upload_time,
249
- })),
250
- count: files.length,
251
- };
252
- },
253
- },
254
- pluginName,
255
- ),
256
- );
257
-
258
- // ── 好友列表 ───────────────────────────────────────────────────────
259
- disposers.push(
260
- toolService.addTool(
261
- {
262
- name: "icqq_friend_list",
263
- description: "获取 QQ 好友列表",
264
- parameters: {
265
- type: "object",
266
- properties: {
267
- endpoint_id: { type: "string", description: "Endpoint 名称", contextKey: 'endpointId' },
268
- },
269
- required: ["endpoint_id"],
270
- },
271
- platforms: ["icqq"],
272
- tags: ["icqq"],
273
- execute: async (args: Record<string, any>) => {
274
- const endpoint = icqq.endpoints.get(args.endpoint_id);
275
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
276
- const friends = Array.from(endpoint.friends.values()).map((f) => ({
277
- user_id: f.user_id,
278
- nickname: f.nickname,
279
- remark: f.remark,
280
- }));
281
- return { friends: friends.slice(0, 50), count: endpoint.friends.size };
282
- },
283
- },
284
- pluginName,
285
- ),
286
- );
287
-
288
- // ── 群列表 ─────────────────────────────────────────────────────────
289
- disposers.push(
290
- toolService.addTool(
291
- {
292
- name: "icqq_group_list",
293
- description: "获取 Endpoint 的 QQ 群列表",
294
- parameters: {
295
- type: "object",
296
- properties: {
297
- endpoint_id: { type: "string", description: "Endpoint 名称", contextKey: 'endpointId' },
298
- },
299
- required: ["endpoint_id"],
300
- },
301
- platforms: ["icqq"],
302
- tags: ["icqq"],
303
- execute: async (args: Record<string, any>) => {
304
- const endpoint = icqq.endpoints.get(args.endpoint_id);
305
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
306
- const groups = Array.from(endpoint.groups.values()).map((g) => ({
307
- group_id: g.group_id,
308
- group_name: g.group_name,
309
- member_count: g.member_count,
310
- max_member_count: g.max_member_count,
311
- }));
312
- return { groups: groups.slice(0, 50), count: endpoint.groups.size };
313
- },
314
- },
315
- pluginName,
316
- ),
317
- );
318
-
319
- // ── 群签到 ─────────────────────────────────────────────────────────
320
- disposers.push(
321
- toolService.addTool(
322
- {
323
- name: "icqq_group_sign",
324
- description: "QQ 群签到打卡",
325
- parameters: {
326
- type: "object",
327
- properties: {
328
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
329
- group_id: { type: "number", description: "目标群号" },
330
- },
331
- required: ["endpoint_id", "group_id"],
332
- },
333
- platforms: ["icqq"],
334
- tags: ["icqq"],
335
- execute: async (args: Record<string, any>) => {
336
- const endpoint = icqq.endpoints.get(args.endpoint_id);
337
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
338
- const resp = await endpoint.ipc.request(Actions.GROUP_SIGN, {
339
- group_id: args.group_id,
340
- });
341
- return { success: resp.ok, message: resp.ok ? "群签到成功" : (resp.error ?? "签到失败") };
342
- },
343
- },
344
- pluginName,
345
- ),
346
- );
347
-
348
- // ── 邀请入群 ───────────────────────────────────────────────────────
349
- disposers.push(
350
- toolService.addTool(
351
- {
352
- name: "icqq_group_invite",
353
- description: "邀请好友加入 QQ 群",
354
- parameters: {
355
- type: "object",
356
- properties: {
357
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
358
- group_id: { type: "number", description: "目标群号" },
359
- user_id: { type: "number", description: "要邀请的 QQ号" },
360
- },
361
- required: ["endpoint_id", "group_id", "user_id"],
362
- },
363
- platforms: ["icqq"],
364
- tags: ["icqq"],
365
- execute: async (args: Record<string, any>) => {
366
- const endpoint = icqq.endpoints.get(args.endpoint_id);
367
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
368
- const resp = await endpoint.ipc.request(Actions.GROUP_INVITE, {
369
- group_id: args.group_id,
370
- user_id: args.user_id,
371
- });
372
- return { success: resp.ok, message: resp.ok ? `已邀请 ${args.user_id} 加入群` : (resp.error ?? "邀请失败") };
373
- },
374
- },
375
- pluginName,
376
- ),
377
- );
378
-
379
- // ── 设为/移除精华消息 ──────────────────────────────────────────────
380
- disposers.push(
381
- toolService.addTool(
382
- {
383
- name: "icqq_essence",
384
- description: "设置或移除 QQ 群精华消息",
385
- parameters: {
386
- type: "object",
387
- properties: {
388
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
389
- message_id: { type: "string", description: "消息 ID" },
390
- action: { type: "string", description: "add=设为精华, remove=移除精华" },
391
- },
392
- required: ["endpoint_id", "message_id", "action"],
393
- },
394
- platforms: ["icqq"],
395
- tags: ["icqq"],
396
- permissions: ["platform(icqq,scene_admin)"],
397
- execute: async (args: Record<string, any>) => {
398
- const endpoint = icqq.endpoints.get(args.endpoint_id);
399
- if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
400
- const action = args.action === "add" ? Actions.GROUP_ESSENCE_ADD : Actions.GROUP_ESSENCE_REMOVE;
401
- const resp = await endpoint.ipc.request(action, {
402
- message_id: args.message_id,
403
- });
404
- return { success: resp.ok, message: resp.ok ? (args.action === "add" ? "已设为精华" : "已移除精华") : (resp.error ?? "操作失败") };
405
- },
406
- },
407
- pluginName,
408
- ),
409
- );
410
-
411
30
  return () => disposers.forEach((d) => d());
412
31
  }
package/lib/adapter.d.ts DELETED
@@ -1,46 +0,0 @@
1
- /**
2
- * ICQQ 适配器 — 通过 @icqqjs/cli 守护进程 IPC 管理 Endpoint 实例
3
- */
4
- import { Adapter, Plugin } from 'zhin.js';
5
- import { IcqqEndpoint } from "./endpoint.js";
6
- import type { IcqqEndpointConfig } from "./types.js";
7
- export declare class IcqqAdapter extends Adapter<IcqqEndpoint> {
8
- static readonly capabilities: readonly ["inbound", "outbound"];
9
- static outboundRichSegmentPolicy: import("zhin.js").OutboundRichSegmentPolicy;
10
- static interactivePolicy: "text";
11
- static aiOutboundCapabilities: {
12
- mentions: boolean;
13
- richSegments: string[];
14
- interactive: "text";
15
- };
16
- static aiOutboundExtensions: import("zhin.js").AiOutboundExtensionDefinition[];
17
- constructor(plugin: Plugin);
18
- getOutboundMediaCapabilities(): {
19
- image: boolean;
20
- audio: boolean;
21
- video: boolean;
22
- file: boolean;
23
- maxAttachmentBytes: number;
24
- };
25
- createEndpoint(config: IcqqEndpointConfig): IcqqEndpoint;
26
- start(): Promise<void>;
27
- stop(): Promise<void>;
28
- private getEndpoint;
29
- removeMember(endpointId: string, sceneId: string, userId: string): Promise<boolean>;
30
- muteMember(endpointId: string, sceneId: string, userId: string, duration?: number): Promise<boolean>;
31
- setSceneMuted(endpointId: string, sceneId: string, enable?: boolean): Promise<boolean>;
32
- setModerator(endpointId: string, sceneId: string, userId: string, enable?: boolean): Promise<boolean>;
33
- setMemberNickname(endpointId: string, sceneId: string, userId: string, nickname: string): Promise<boolean>;
34
- renameScene(endpointId: string, sceneId: string, name: string): Promise<boolean>;
35
- listMembers(endpointId: string, sceneId: string): Promise<{
36
- members: {
37
- user_id: number;
38
- nickname: string;
39
- card: string;
40
- role: import("./types.js").GroupRole;
41
- title: string;
42
- }[];
43
- count: number;
44
- }>;
45
- }
46
- //# sourceMappingURL=adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAiB,OAAO,EAAE,MAAM,EAA+E,MAAM,SAAS,CAAC;AACtI,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAiB,MAAM,YAAY,CAAC;AAGpE,qBAAa,WAAY,SAAQ,OAAO,CAAC,YAAY,CAAC;IACpD,gBAAyB,YAAY,mCAAoC;IACzE,OAAgB,yBAAyB,8CAAwC;IACjF,OAAgB,iBAAiB,EAAG,MAAM,CAAU;IACpD,OAAgB,sBAAsB;;;;MAIpC;IACF,OAAgB,oBAAoB,oDAA2C;gBAEnE,MAAM,EAAE,MAAM;IAI1B,4BAA4B;;;;;;;IAU5B,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY;IAIlD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,CAAC,WAAW;IAMb,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAWhE,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,SAAM;IAYV,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAO;IAUhE,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,UAAO;IAYT,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM;IAYZ,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAU7D,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;CAiBtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,OAAO,EAAU,oCAAoC,EAAE,qCAAqC,EAAE,MAAM,SAAS,CAAC;AACtI,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,OAAO,WAAY,SAAQ,OAAqB;IACpD,MAAM,CAAmB,YAAY,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;IACzE,MAAM,CAAU,yBAAyB,GAAG,oCAAoC,CAAC;IACjF,MAAM,CAAU,iBAAiB,GAAG,MAAe,CAAC;IACpD,MAAM,CAAU,sBAAsB,GAAG;QACvC,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;QACnD,WAAW,EAAE,MAAe;KAC7B,CAAC;IACF,MAAM,CAAU,oBAAoB,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAE/E,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,4BAA4B;QAC1B,OAAO;YACL,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;YACV,kBAAkB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SACrC,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,MAA0B;QACvC,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,2DAA2D;IAEnD,WAAW,CAAC,UAAkB;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,OAAe,EAAE,MAAc;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;YAC1D,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;YACzB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACvB,kBAAkB,EAAE,KAAK;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,UAAU,CACd,UAAkB,EAClB,OAAe,EACf,MAAc,EACd,QAAQ,GAAG,GAAG;QAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;YAC1D,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;YACzB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACvB,QAAQ;SACT,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAAkB,EAAE,OAAe,EAAE,MAAM,GAAG,IAAI;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE;YAC9D,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;YACzB,MAAM;SACP,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,UAAkB,EAClB,OAAe,EACf,MAAc,EACd,MAAM,GAAG,IAAI;QAEb,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE;YAC/D,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;YACzB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACvB,MAAM;SACP,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,UAAkB,EAClB,OAAe,EACf,MAAc,EACd,QAAgB;QAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE;YAC9D,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;YACzB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,OAAe,EAAE,IAAY;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE;YAC9D,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;YACzB,IAAI;SACL,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,OAAe;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;YAClE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAuB,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC,CAAC;QACJ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { AgentPromptContributor } from 'zhin.js';
2
- export declare function createIcqqAgentPromptContributor(): AgentPromptContributor;
3
- //# sourceMappingURL=agent-prompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-prompt.d.ts","sourceRoot":"","sources":["../src/agent-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EAGvB,MAAM,SAAS,CAAC;AAwEjB,wBAAgB,gCAAgC,IAAI,sBAAsB,CAsCzE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-prompt.js","sourceRoot":"","sources":["../src/agent-prompt.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * CQ 码与 MessageSegment 互转。
3
- * 出站:@icqqjs/cli 要求 message 为非空字符串;引用段编码为 [reply:id](需 cli parse-message 支持 reply,见 scripts/patch-icqq-cli-reply.mjs)。
4
- */
5
- import { MessageSegment, SendContent } from "zhin.js";
6
- export declare function parseCqMessage(raw: string): MessageSegment[];
7
- /** 构建 icqq IPC send_*_msg 的 message 字符串(非空) */
8
- export declare function buildIcqqIpcMessage(content: SendContent): string;
9
- export declare function toCqString(content: SendContent): string;
10
- //# sourceMappingURL=cq-message.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cq-message.d.ts","sourceRoot":"","sources":["../src/cq-message.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAW,WAAW,EAAE,MAAM,SAAS,CAAC;AAyC/D,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAkC5D;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAIhE;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA0DvD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cq-message.js","sourceRoot":"","sources":["../src/cq-message.ts"],"names":[],"mappings":"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"}
package/lib/endpoint.d.ts DELETED
@@ -1,103 +0,0 @@
1
- /**
2
- * ICQQ Bot:通过 @icqqjs/cli 守护进程 IPC 通信,实现 zhin Endpoint 接口
3
- *
4
- * 不再直接依赖 @icqqjs/icqq 协议库。
5
- * 登录由 `icqq login` 完成,本 Endpoint 只负责连接守护进程并收发消息。
6
- */
7
- import { Endpoint, Message, SendOptions, type QuotedMessagePayload } from 'zhin.js';
8
- import type { IcqqEndpointConfig, IpcFriendInfo, IpcGroupInfo } from "./types.js";
9
- import type { IcqqAdapter } from "./adapter.js";
10
- import { IpcClient } from "./ipc-client.js";
11
- import type { IcqqIpcMessageEvent } from "./icqq-inbound.js";
12
- import { type NormalizedIcqqInbound } from "./icqq-inbound.js";
13
- import { buildIcqqIpcMessage as buildIcqqIpcMessageImpl, parseCqMessage as parseCqMessageImpl, toCqString as toCqStringImpl } from "./cq-message.js";
14
- import { IcqqGuildCatalog } from "./icqq-guild.js";
15
- export declare class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessageEvent> {
16
- adapter: IcqqAdapter;
17
- $connected: boolean;
18
- $config: IcqqEndpointConfig;
19
- ipc: IpcClient;
20
- /** 缓存的好友列表 */
21
- friends: Map<number, IpcFriendInfo>;
22
- /** 缓存的群列表 */
23
- groups: Map<number, IpcGroupInfo>;
24
- /** QQ 频道(guild)子频道缓存 */
25
- readonly guildCatalog: IcqqGuildCatalog;
26
- private subscriptions;
27
- /** 事件去重:覆盖多端回流/服务端重复推送等场景 */
28
- private readonly inboundDeduper;
29
- /** MessageEvent.source 解析结果,供 $getMsg 优先命中 */
30
- private readonly quotedSourceCache;
31
- /** 用户主动断开时为 true,阻止自动重连 */
32
- private intentionalDisconnect;
33
- /** 是否已有重连循环在跑(避免多次 schedule 叠套) */
34
- private reconnectRunning;
35
- get $id(): `${number}`;
36
- get logger(): import("zhin.js").Logger;
37
- constructor(adapter: IcqqAdapter, config: IcqqEndpointConfig);
38
- $connect(): Promise<void>;
39
- /** 建立或恢复与守护进程的 IPC/RPC 会话(订阅、缓存列表) */
40
- private rebindIpcSession;
41
- /** IPC/RPC 意外断开时调度重连(指数退避) */
42
- private scheduleReconnect;
43
- private runReconnectLoop;
44
- /** 刷新好友/群列表缓存 */
45
- refreshLists(): Promise<void>;
46
- /** Console:列出 guild 子频道(含 parent.guild) */
47
- getGuildChannelList(): ReturnType<IcqqGuildCatalog["getGuildChannelList"]>;
48
- resolveConsoleChannelNames(channelId: string, guildId?: string): {
49
- channelName?: string;
50
- parentName?: string;
51
- };
52
- $disconnect(): Promise<void>;
53
- private handleEvent;
54
- private dispatchInboundMessage;
55
- private handleGuildMessageEvent;
56
- private dispatchGuildInboundMessage;
57
- private $formatGuildMessage;
58
- private handleNoticeEvent;
59
- private handleRequestEvent;
60
- private handleMetaEvent;
61
- /** 调试 IPC 入站字段:默认 debug;设 ICQQ_IPC_LOG_RAW=1 则 info 打完整 payload */
62
- private logIpcInboundPayload;
63
- $formatMessage(input: NormalizedIcqqInbound | IcqqIpcMessageEvent): ReturnType<typeof Message.from<IcqqIpcMessageEvent>>;
64
- /**
65
- * 有 source.message_id 时用 get_msg 拉全量正文;否则仅用 source 内联摘要。
66
- */
67
- private primeQuotedSourceCache;
68
- private fetchQuotedMessagePayload;
69
- $getMsg(messageId: string): Promise<QuotedMessagePayload>;
70
- $recallMessage(id: string): Promise<void>;
71
- $sendMessage(options: SendOptions): Promise<string>;
72
- /**
73
- * 表情符号到 reaction id 的映射
74
- * QQ 使用数字 ID 来标识表情,而不是 Unicode 字符
75
- */
76
- private static readonly EMOJI_MAP;
77
- /**
78
- * 将表情符号转换为 reaction id
79
- */
80
- private getEmojiId;
81
- /**
82
- * 添加消息回应(表情)
83
- *
84
- * @param messageId - 消息 ID
85
- * @param emoji - 表情符号或 reaction id
86
- * @returns 反应 ID,可用于后续移除
87
- */
88
- $addReaction(messageId: string, emoji: string): Promise<string | null>;
89
- /**
90
- * 移除消息回应
91
- *
92
- * @param messageId - 消息 ID
93
- * @param reactionId - 反应 ID(由 $addReaction 返回)
94
- */
95
- $removeReaction(messageId: string, reactionId: string): Promise<void>;
96
- }
97
- /** @deprecated 使用 `./cq-message.js` 导出 */
98
- export declare namespace IcqqEndpoint {
99
- const parseCqMessage: typeof parseCqMessageImpl;
100
- const buildIcqqIpcMessage: typeof buildIcqqIpcMessageImpl;
101
- const toCqString: typeof toCqStringImpl;
102
- }
103
- //# sourceMappingURL=endpoint.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}