@zhin.js/adapter-icqq 6.0.0 → 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 (161) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +3 -3
  3. package/{skills/icqq → agent}/PERMITS.md +6 -6
  4. package/agent/tools/announce.ts +21 -0
  5. package/agent/tools/essence.ts +22 -0
  6. package/agent/tools/friend_list.ts +19 -0
  7. package/agent/tools/group_files.ts +27 -0
  8. package/agent/tools/group_invite.ts +20 -0
  9. package/agent/tools/group_list.ts +20 -0
  10. package/agent/tools/group_sign.ts +19 -0
  11. package/agent/tools/list_muted.ts +22 -0
  12. package/agent/tools/poke.ts +20 -0
  13. package/agent/tools/send_user_like.ts +22 -0
  14. package/agent/tools/set_anonymous.ts +22 -0
  15. package/agent/tools/set_title.ts +25 -0
  16. package/dist/index.js +2 -2
  17. package/lib/agent/tools/announce.js +21 -0
  18. package/lib/agent/tools/announce.js.map +1 -0
  19. package/lib/agent/tools/essence.js +22 -0
  20. package/lib/agent/tools/essence.js.map +1 -0
  21. package/lib/agent/tools/friend_list.js +19 -0
  22. package/lib/agent/tools/friend_list.js.map +1 -0
  23. package/lib/agent/tools/group_files.js +29 -0
  24. package/lib/agent/tools/group_files.js.map +1 -0
  25. package/lib/agent/tools/group_invite.js +20 -0
  26. package/lib/agent/tools/group_invite.js.map +1 -0
  27. package/lib/agent/tools/group_list.js +20 -0
  28. package/lib/agent/tools/group_list.js.map +1 -0
  29. package/lib/agent/tools/group_sign.js +19 -0
  30. package/lib/agent/tools/group_sign.js.map +1 -0
  31. package/lib/agent/tools/list_muted.js +23 -0
  32. package/lib/agent/tools/list_muted.js.map +1 -0
  33. package/lib/agent/tools/poke.js +20 -0
  34. package/lib/agent/tools/poke.js.map +1 -0
  35. package/lib/agent/tools/send_user_like.js +22 -0
  36. package/lib/agent/tools/send_user_like.js.map +1 -0
  37. package/lib/agent/tools/set_anonymous.js +22 -0
  38. package/lib/agent/tools/set_anonymous.js.map +1 -0
  39. package/lib/agent/tools/set_title.js +25 -0
  40. package/lib/agent/tools/set_title.js.map +1 -0
  41. package/lib/{adapter.js → src/adapter.js} +13 -6
  42. package/lib/src/adapter.js.map +1 -0
  43. package/lib/src/agent-prompt.js.map +1 -0
  44. package/lib/{cq-message.js → src/cq-message.js} +12 -3
  45. package/lib/src/cq-message.js.map +1 -0
  46. package/lib/{endpoint.js → src/endpoint.js} +130 -63
  47. package/lib/src/endpoint.js.map +1 -0
  48. package/lib/{forward-msg.js → src/forward-msg.js} +4 -1
  49. package/lib/src/forward-msg.js.map +1 -0
  50. package/lib/src/get-msg.js.map +1 -0
  51. package/lib/src/icqq-agent-deps.js +10 -0
  52. package/lib/src/icqq-agent-deps.js.map +1 -0
  53. package/lib/src/icqq-guild.js +115 -0
  54. package/lib/src/icqq-guild.js.map +1 -0
  55. package/lib/{icqq-inbound.js → src/icqq-inbound.js} +15 -5
  56. package/lib/src/icqq-inbound.js.map +1 -0
  57. package/lib/src/icqq-login-assist-bridge.js.map +1 -0
  58. package/lib/{icqq-side-events.js → src/icqq-side-events.js} +28 -92
  59. package/lib/src/icqq-side-events.js.map +1 -0
  60. package/lib/{index.js → src/index.js} +0 -1
  61. package/lib/src/index.js.map +1 -0
  62. package/lib/src/ipc-client.js.map +1 -0
  63. package/lib/src/login-assist-routes.js.map +1 -0
  64. package/lib/src/login-ipc-contract.js.map +1 -0
  65. package/lib/src/outbound-media.js.map +1 -0
  66. package/lib/src/protocol.js.map +1 -0
  67. package/lib/src/routes.js.map +1 -0
  68. package/lib/src/segment-mapper.js +2 -0
  69. package/lib/src/segment-mapper.js.map +1 -0
  70. package/lib/src/tools/index.js +23 -0
  71. package/lib/src/tools/index.js.map +1 -0
  72. package/lib/src/types.js.map +1 -0
  73. package/package.json +25 -21
  74. package/src/adapter.ts +13 -6
  75. package/src/agent-prompt.ts +1 -2
  76. package/src/cq-message.ts +11 -3
  77. package/src/endpoint.ts +158 -82
  78. package/src/forward-msg.ts +2 -2
  79. package/src/icqq-agent-deps.ts +18 -0
  80. package/src/icqq-guild.ts +157 -0
  81. package/src/icqq-inbound.ts +16 -5
  82. package/src/icqq-side-events.ts +33 -118
  83. package/src/index.ts +0 -8
  84. package/src/segment-mapper.ts +1 -0
  85. package/src/tools/index.ts +16 -397
  86. package/src/types.ts +0 -45
  87. package/lib/adapter.d.ts +0 -39
  88. package/lib/adapter.d.ts.map +0 -1
  89. package/lib/adapter.js.map +0 -1
  90. package/lib/agent-prompt.d.ts +0 -3
  91. package/lib/agent-prompt.d.ts.map +0 -1
  92. package/lib/agent-prompt.js.map +0 -1
  93. package/lib/cq-message.d.ts +0 -10
  94. package/lib/cq-message.d.ts.map +0 -1
  95. package/lib/cq-message.js.map +0 -1
  96. package/lib/endpoint.d.ts +0 -99
  97. package/lib/endpoint.d.ts.map +0 -1
  98. package/lib/endpoint.js.map +0 -1
  99. package/lib/forward-msg.d.ts +0 -27
  100. package/lib/forward-msg.d.ts.map +0 -1
  101. package/lib/forward-msg.js.map +0 -1
  102. package/lib/get-msg.d.ts +0 -3
  103. package/lib/get-msg.d.ts.map +0 -1
  104. package/lib/get-msg.js.map +0 -1
  105. package/lib/icqq-inbound.d.ts +0 -130
  106. package/lib/icqq-inbound.d.ts.map +0 -1
  107. package/lib/icqq-inbound.js.map +0 -1
  108. package/lib/icqq-login-assist-bridge.d.ts +0 -5
  109. package/lib/icqq-login-assist-bridge.d.ts.map +0 -1
  110. package/lib/icqq-login-assist-bridge.js.map +0 -1
  111. package/lib/icqq-side-events.d.ts +0 -34
  112. package/lib/icqq-side-events.d.ts.map +0 -1
  113. package/lib/icqq-side-events.js.map +0 -1
  114. package/lib/index.d.ts +0 -20
  115. package/lib/index.d.ts.map +0 -1
  116. package/lib/index.js.map +0 -1
  117. package/lib/ipc-client.d.ts +0 -74
  118. package/lib/ipc-client.d.ts.map +0 -1
  119. package/lib/ipc-client.js.map +0 -1
  120. package/lib/login-assist-routes.d.ts +0 -7
  121. package/lib/login-assist-routes.d.ts.map +0 -1
  122. package/lib/login-assist-routes.js.map +0 -1
  123. package/lib/login-ipc-contract.d.ts +0 -44
  124. package/lib/login-ipc-contract.d.ts.map +0 -1
  125. package/lib/login-ipc-contract.js.map +0 -1
  126. package/lib/outbound-media.d.ts +0 -14
  127. package/lib/outbound-media.d.ts.map +0 -1
  128. package/lib/outbound-media.js.map +0 -1
  129. package/lib/protocol.d.ts +0 -198
  130. package/lib/protocol.d.ts.map +0 -1
  131. package/lib/protocol.js.map +0 -1
  132. package/lib/routes.d.ts +0 -8
  133. package/lib/routes.d.ts.map +0 -1
  134. package/lib/routes.js.map +0 -1
  135. package/lib/tools/index.d.ts +0 -10
  136. package/lib/tools/index.d.ts.map +0 -1
  137. package/lib/tools/index.js +0 -341
  138. package/lib/tools/index.js.map +0 -1
  139. package/lib/types.d.ts +0 -117
  140. package/lib/types.d.ts.map +0 -1
  141. package/lib/types.js.map +0 -1
  142. package/lib/typing-indicator-example.d.ts +0 -108
  143. package/lib/typing-indicator-example.d.ts.map +0 -1
  144. package/lib/typing-indicator-example.js +0 -220
  145. package/lib/typing-indicator-example.js.map +0 -1
  146. package/lib/typing-indicator.d.ts +0 -87
  147. package/lib/typing-indicator.d.ts.map +0 -1
  148. package/lib/typing-indicator.js +0 -229
  149. package/lib/typing-indicator.js.map +0 -1
  150. package/src/typing-indicator-example.ts +0 -269
  151. package/src/typing-indicator.ts +0 -317
  152. /package/lib/{agent-prompt.js → src/agent-prompt.js} +0 -0
  153. /package/lib/{get-msg.js → src/get-msg.js} +0 -0
  154. /package/lib/{icqq-login-assist-bridge.js → src/icqq-login-assist-bridge.js} +0 -0
  155. /package/lib/{ipc-client.js → src/ipc-client.js} +0 -0
  156. /package/lib/{login-assist-routes.js → src/login-assist-routes.js} +0 -0
  157. /package/lib/{login-ipc-contract.js → src/login-ipc-contract.js} +0 -0
  158. /package/lib/{outbound-media.js → src/outbound-media.js} +0 -0
  159. /package/lib/{protocol.js → src/protocol.js} +0 -0
  160. /package/lib/{routes.js → src/routes.js} +0 -0
  161. /package/lib/{types.js → src/types.js} +0 -0
@@ -1,341 +0,0 @@
1
- import { createGroupManagementTools } from "zhin.js";
2
- import { Actions } from "../protocol.js";
3
- export function registerTools(toolService, icqq, pluginName) {
4
- const disposers = [];
5
- // ── 通用群管工具 ───────────────────────────────────────────────────
6
- const groupTools = createGroupManagementTools(icqq, "icqq");
7
- disposers.push(...groupTools.map((t) => toolService.addTool(t, pluginName)));
8
- // ── 设置头衔 ───────────────────────────────────────────────────────
9
- disposers.push(toolService.addTool({
10
- name: "icqq_set_title",
11
- description: "设置 QQ 群成员的专属头衔",
12
- parameters: {
13
- type: "object",
14
- properties: {
15
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
16
- group_id: { type: "number", description: "目标群号" },
17
- user_id: { type: "number", description: "目标成员 QQ号" },
18
- title: { type: "string", description: "头衔文字" },
19
- duration: { type: "number", description: "持续时间(秒),-1永久" },
20
- },
21
- required: ["endpoint_id", "group_id", "user_id", "title"],
22
- },
23
- platforms: ["icqq"],
24
- tags: ["icqq"],
25
- permissions: ["platform(icqq,group_owner)"],
26
- execute: async (args) => {
27
- const endpoint = icqq.endpoints.get(args.endpoint_id);
28
- if (!endpoint)
29
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
30
- const resp = await endpoint.ipc.request(Actions.SET_GROUP_TITLE, {
31
- group_id: args.group_id,
32
- user_id: args.user_id,
33
- title: args.title,
34
- duration: args.duration ?? -1,
35
- });
36
- return { success: resp.ok, message: resp.ok ? `已将 ${args.user_id} 的头衔设为 "${args.title}"` : (resp.error ?? "设置失败") };
37
- },
38
- }, pluginName));
39
- // ── 发送群公告 ─────────────────────────────────────────────────────
40
- disposers.push(toolService.addTool({
41
- name: "icqq_announce",
42
- description: "发送 QQ 群公告(需要管理员权限)",
43
- parameters: {
44
- type: "object",
45
- properties: {
46
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
47
- group_id: { type: "number", description: "目标群号" },
48
- content: { type: "string", description: "公告内容" },
49
- },
50
- required: ["endpoint_id", "group_id", "content"],
51
- },
52
- platforms: ["icqq"],
53
- tags: ["icqq"],
54
- permissions: ["platform(icqq,group_admin)"],
55
- execute: async (args) => {
56
- const endpoint = icqq.endpoints.get(args.endpoint_id);
57
- if (!endpoint)
58
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
59
- const resp = await endpoint.ipc.request(Actions.GROUP_ANNOUNCE, {
60
- group_id: args.group_id,
61
- content: args.content,
62
- });
63
- return { success: resp.ok, message: resp.ok ? "群公告已发送" : (resp.error ?? "发送失败") };
64
- },
65
- }, pluginName));
66
- // ── 戳一戳 ─────────────────────────────────────────────────────────
67
- disposers.push(toolService.addTool({
68
- name: "icqq_poke",
69
- description: "在 QQ 群中对某个成员执行戳一戳互动操作",
70
- parameters: {
71
- type: "object",
72
- properties: {
73
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
74
- group_id: { type: "number", description: "目标群号" },
75
- user_id: { type: "number", description: "要戳的目标成员 QQ号" },
76
- },
77
- required: ["endpoint_id", "group_id", "user_id"],
78
- },
79
- platforms: ["icqq"],
80
- tags: ["icqq"],
81
- execute: async (args) => {
82
- const endpoint = icqq.endpoints.get(args.endpoint_id);
83
- if (!endpoint)
84
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
85
- const resp = await endpoint.ipc.request(Actions.GROUP_POKE, {
86
- group_id: args.group_id,
87
- user_id: args.user_id,
88
- });
89
- return { success: resp.ok, message: resp.ok ? `已戳了戳 ${args.user_id}` : (resp.error ?? "戳一戳失败") };
90
- },
91
- }, pluginName));
92
- // ── 获取被禁言列表 ─────────────────────────────────────────────────
93
- disposers.push(toolService.addTool({
94
- name: "icqq_list_muted",
95
- description: "查询 QQ 群中当前被禁言的成员列表",
96
- parameters: {
97
- type: "object",
98
- properties: {
99
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
100
- group_id: { type: "number", description: "目标群号" },
101
- },
102
- required: ["endpoint_id", "group_id"],
103
- },
104
- platforms: ["icqq"],
105
- tags: ["icqq"],
106
- permissions: ["platform(icqq,group_admin)"],
107
- execute: async (args) => {
108
- const endpoint = icqq.endpoints.get(args.endpoint_id);
109
- if (!endpoint)
110
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
111
- const resp = await endpoint.ipc.request(Actions.GROUP_MUTED_LIST, {
112
- group_id: args.group_id,
113
- });
114
- if (!resp.ok)
115
- throw new Error(resp.error ?? "获取禁言列表失败");
116
- const list = Array.isArray(resp.data) ? resp.data : [];
117
- return { muted_members: list, count: list.length };
118
- },
119
- }, pluginName));
120
- // ── 给用户点赞 ─────────────────────────────────────────────────────
121
- disposers.push(toolService.addTool({
122
- name: "icqq_send_user_like",
123
- description: "给用户点赞(竖大拇指),每人每天最多 20 次",
124
- parameters: {
125
- type: "object",
126
- properties: {
127
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
128
- user_id: { type: "number", description: "要点赞的目标用户 QQ号" },
129
- times: { type: "number", description: "点赞次数(1-20),默认 1" },
130
- },
131
- required: ["endpoint_id", "user_id"],
132
- },
133
- platforms: ["icqq"],
134
- tags: ["icqq"],
135
- execute: async (args) => {
136
- const endpoint = icqq.endpoints.get(args.endpoint_id);
137
- if (!endpoint)
138
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
139
- const resp = await endpoint.ipc.request(Actions.FRIEND_LIKE, {
140
- user_id: args.user_id,
141
- times: Math.min(args.times ?? 1, 20),
142
- });
143
- return { success: resp.ok, message: resp.ok ? `已给 ${args.user_id} 点赞` : (resp.error ?? "点赞失败") };
144
- },
145
- }, pluginName));
146
- // ── 设置匿名聊天 ───────────────────────────────────────────────────
147
- disposers.push(toolService.addTool({
148
- name: "icqq_set_anonymous",
149
- description: "开启或关闭 QQ 群的匿名聊天功能",
150
- parameters: {
151
- type: "object",
152
- properties: {
153
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
154
- group_id: { type: "number", description: "目标群号" },
155
- enable: { type: "boolean", description: "true=开启,false=关闭,默认 true" },
156
- },
157
- required: ["endpoint_id", "group_id"],
158
- },
159
- platforms: ["icqq"],
160
- tags: ["icqq"],
161
- permissions: ["platform(icqq,group_owner)"],
162
- execute: async (args) => {
163
- const endpoint = icqq.endpoints.get(args.endpoint_id);
164
- if (!endpoint)
165
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
166
- const enable = args.enable ?? true;
167
- const resp = await endpoint.ipc.request(Actions.GROUP_ALLOW_ANONY, {
168
- group_id: args.group_id,
169
- enable,
170
- });
171
- return { success: resp.ok, message: resp.ok ? (enable ? "已开启匿名聊天" : "已关闭匿名聊天") : (resp.error ?? "操作失败") };
172
- },
173
- }, pluginName));
174
- // ── 群文件列表 ─────────────────────────────────────────────────────
175
- disposers.push(toolService.addTool({
176
- name: "icqq_group_files",
177
- description: "获取 QQ 群的群文件列表",
178
- parameters: {
179
- type: "object",
180
- properties: {
181
- endpoint_id: { type: "string", description: "Endpoint 名称", contextKey: 'endpointId' },
182
- group_id: { type: "number", description: "群号" },
183
- },
184
- required: ["endpoint_id", "group_id"],
185
- },
186
- platforms: ["icqq"],
187
- tags: ["icqq"],
188
- execute: async (args) => {
189
- const endpoint = icqq.endpoints.get(args.endpoint_id);
190
- if (!endpoint)
191
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
192
- const resp = await endpoint.ipc.request(Actions.GFS_LIST, {
193
- group_id: args.group_id,
194
- });
195
- if (!resp.ok)
196
- throw new Error(resp.error ?? "获取群文件失败");
197
- const files = Array.isArray(resp.data) ? resp.data : [];
198
- if (!files.length)
199
- return { files: [], message: "群文件为空" };
200
- return {
201
- files: files.slice(0, 30).map((f) => ({
202
- name: f.name,
203
- size: f.size,
204
- uploader: f.uploader_uin,
205
- upload_time: f.upload_time,
206
- })),
207
- count: files.length,
208
- };
209
- },
210
- }, pluginName));
211
- // ── 好友列表 ───────────────────────────────────────────────────────
212
- disposers.push(toolService.addTool({
213
- name: "icqq_friend_list",
214
- description: "获取 QQ 好友列表",
215
- parameters: {
216
- type: "object",
217
- properties: {
218
- endpoint_id: { type: "string", description: "Endpoint 名称", contextKey: 'endpointId' },
219
- },
220
- required: ["endpoint_id"],
221
- },
222
- platforms: ["icqq"],
223
- tags: ["icqq"],
224
- execute: async (args) => {
225
- const endpoint = icqq.endpoints.get(args.endpoint_id);
226
- if (!endpoint)
227
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
228
- const friends = Array.from(endpoint.friends.values()).map((f) => ({
229
- user_id: f.user_id,
230
- nickname: f.nickname,
231
- remark: f.remark,
232
- }));
233
- return { friends: friends.slice(0, 50), count: endpoint.friends.size };
234
- },
235
- }, pluginName));
236
- // ── 群列表 ─────────────────────────────────────────────────────────
237
- disposers.push(toolService.addTool({
238
- name: "icqq_group_list",
239
- description: "获取 Endpoint 的 QQ 群列表",
240
- parameters: {
241
- type: "object",
242
- properties: {
243
- endpoint_id: { type: "string", description: "Endpoint 名称", contextKey: 'endpointId' },
244
- },
245
- required: ["endpoint_id"],
246
- },
247
- platforms: ["icqq"],
248
- tags: ["icqq"],
249
- execute: async (args) => {
250
- const endpoint = icqq.endpoints.get(args.endpoint_id);
251
- if (!endpoint)
252
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
253
- const groups = Array.from(endpoint.groups.values()).map((g) => ({
254
- group_id: g.group_id,
255
- group_name: g.group_name,
256
- member_count: g.member_count,
257
- max_member_count: g.max_member_count,
258
- }));
259
- return { groups: groups.slice(0, 50), count: endpoint.groups.size };
260
- },
261
- }, pluginName));
262
- // ── 群签到 ─────────────────────────────────────────────────────────
263
- disposers.push(toolService.addTool({
264
- name: "icqq_group_sign",
265
- description: "QQ 群签到打卡",
266
- parameters: {
267
- type: "object",
268
- properties: {
269
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
270
- group_id: { type: "number", description: "目标群号" },
271
- },
272
- required: ["endpoint_id", "group_id"],
273
- },
274
- platforms: ["icqq"],
275
- tags: ["icqq"],
276
- execute: async (args) => {
277
- const endpoint = icqq.endpoints.get(args.endpoint_id);
278
- if (!endpoint)
279
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
280
- const resp = await endpoint.ipc.request(Actions.GROUP_SIGN, {
281
- group_id: args.group_id,
282
- });
283
- return { success: resp.ok, message: resp.ok ? "群签到成功" : (resp.error ?? "签到失败") };
284
- },
285
- }, pluginName));
286
- // ── 邀请入群 ───────────────────────────────────────────────────────
287
- disposers.push(toolService.addTool({
288
- name: "icqq_group_invite",
289
- description: "邀请好友加入 QQ 群",
290
- parameters: {
291
- type: "object",
292
- properties: {
293
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
294
- group_id: { type: "number", description: "目标群号" },
295
- user_id: { type: "number", description: "要邀请的 QQ号" },
296
- },
297
- required: ["endpoint_id", "group_id", "user_id"],
298
- },
299
- platforms: ["icqq"],
300
- tags: ["icqq"],
301
- execute: async (args) => {
302
- const endpoint = icqq.endpoints.get(args.endpoint_id);
303
- if (!endpoint)
304
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
305
- const resp = await endpoint.ipc.request(Actions.GROUP_INVITE, {
306
- group_id: args.group_id,
307
- user_id: args.user_id,
308
- });
309
- return { success: resp.ok, message: resp.ok ? `已邀请 ${args.user_id} 加入群` : (resp.error ?? "邀请失败") };
310
- },
311
- }, pluginName));
312
- // ── 设为/移除精华消息 ──────────────────────────────────────────────
313
- disposers.push(toolService.addTool({
314
- name: "icqq_essence",
315
- description: "设置或移除 QQ 群精华消息",
316
- parameters: {
317
- type: "object",
318
- properties: {
319
- endpoint_id: { type: "string", description: "Endpoint QQ号", contextKey: 'endpointId' },
320
- message_id: { type: "string", description: "消息 ID" },
321
- action: { type: "string", description: "add=设为精华, remove=移除精华" },
322
- },
323
- required: ["endpoint_id", "message_id", "action"],
324
- },
325
- platforms: ["icqq"],
326
- tags: ["icqq"],
327
- permissions: ["platform(icqq,group_admin)"],
328
- execute: async (args) => {
329
- const endpoint = icqq.endpoints.get(args.endpoint_id);
330
- if (!endpoint)
331
- throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
332
- const action = args.action === "add" ? Actions.GROUP_ESSENCE_ADD : Actions.GROUP_ESSENCE_REMOVE;
333
- const resp = await endpoint.ipc.request(action, {
334
- message_id: args.message_id,
335
- });
336
- return { success: resp.ok, message: resp.ok ? (args.action === "add" ? "已设为精华" : "已移除精华") : (resp.error ?? "操作失败") };
337
- },
338
- }, pluginName));
339
- return () => disposers.forEach((d) => d());
340
- }
341
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts DELETED
@@ -1,117 +0,0 @@
1
- /**
2
- * ICQQ 适配器类型与配置
3
- *
4
- * 不再直接依赖 @icqqjs/icqq,通过 @icqqjs/cli 守护进程 IPC 通信。
5
- */
6
- export type GroupRole = "owner" | "admin" | "member";
7
- export interface IcqqSenderInfo {
8
- id: string;
9
- name: string;
10
- role?: GroupRole;
11
- isOwner?: boolean;
12
- isAdmin?: boolean;
13
- permissions?: string[];
14
- card?: string;
15
- title?: string;
16
- }
17
- /**
18
- * Typing Indicator 配置
19
- */
20
- export interface TypingIndicatorConfig {
21
- /** 是否启用(默认 true) */
22
- enabled?: boolean;
23
- /** 默认表情(默认 '⏳') */
24
- defaultEmoji?: string;
25
- /** 是否在完成后自动移除(默认 true) */
26
- autoRemove?: boolean;
27
- /** 自动移除延迟,毫秒(默认 5000) */
28
- removeDelay?: number;
29
- /** 私聊配置 */
30
- privateConfig?: {
31
- /** 提示类型 */
32
- type: 'message' | 'reaction';
33
- /** 消息内容(type='message' 时使用) */
34
- message?: string;
35
- /** 表情符号(type='reaction' 时使用) */
36
- emoji?: string;
37
- /** 是否自动移除 */
38
- autoRemove?: boolean;
39
- /** 自动移除延迟 */
40
- removeDelay?: number;
41
- };
42
- /** 群聊配置 */
43
- groupConfig?: {
44
- /** 提示类型 */
45
- type: 'message' | 'reaction';
46
- /** 消息内容(type='message' 时使用) */
47
- message?: string;
48
- /** 表情符号(type='reaction' 时使用) */
49
- emoji?: string;
50
- /** 是否自动移除 */
51
- autoRemove?: boolean;
52
- /** 自动移除延迟 */
53
- removeDelay?: number;
54
- };
55
- }
56
- /**
57
- * Endpoint 配置:支持本地 IPC 和远程 RPC 两种连接模式。
58
- *
59
- * - 本地模式(默认):只需 name(QQ号),自动连接 ~/.icqq/<uin>/daemon.sock
60
- * - 远程模式:额外配置 rpc.host / rpc.port / rpc.token
61
- */
62
- export interface IcqqEndpointConfig {
63
- context: "icqq";
64
- /** QQ 号码字符串 */
65
- name: `${number}`;
66
- /** RPC 远程连接配置(不配置则使用本地 IPC) */
67
- rpc?: {
68
- /** 远程主机地址 */
69
- host: string;
70
- /** 远程端口 */
71
- port: number;
72
- /** 认证 token(用于 HMAC-SHA256 挑战-响应,不会明文传输) */
73
- token: string;
74
- };
75
- /**
76
- * IPC/RPC 与守护进程连接意外断开时是否自动重连(指数退避,上限约 30s)。
77
- * 默认 true;设为 false 则断开后仅将 `$connected` 置为 false,需手动重连。
78
- */
79
- autoReconnect?: boolean;
80
- /**
81
- * Typing Indicator 配置
82
- * 用于在 AI 处理消息时提示用户正在处理中
83
- */
84
- typingIndicator?: TypingIndicatorConfig;
85
- /**
86
- * 出站图片/语音/视频:file=本机临时文件路径(需与 icqq 守护进程同机可读);
87
- * base64=经 CQ `base64://` 交给守护进程解码(Zhin 与 icqq 异进程/异机时用,配置 rpc 时默认 base64)。
88
- */
89
- outboundMedia?: "file" | "base64";
90
- }
91
- /** IPC 返回的好友信息 */
92
- export interface IpcFriendInfo {
93
- user_id: number;
94
- nickname: string;
95
- remark?: string;
96
- class_id?: number;
97
- }
98
- /** IPC 返回的群信息 */
99
- export interface IpcGroupInfo {
100
- group_id: number;
101
- group_name: string;
102
- member_count: number;
103
- max_member_count: number;
104
- owner_id?: number;
105
- }
106
- /** IPC 返回的群成员信息 */
107
- export interface IpcMemberInfo {
108
- user_id: number;
109
- nickname: string;
110
- card: string;
111
- role: GroupRole;
112
- title: string;
113
- join_time?: number;
114
- last_sent_time?: number;
115
- shutup_time?: number;
116
- }
117
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/lib/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,108 +0,0 @@
1
- /**
2
- * ICQQ Typing Indicator 使用示例
3
- *
4
- * 展示如何在 ICQQ 适配器中集成消息处理状态提示
5
- */
6
- import type { IcqqEndpoint } from './endpoint.js';
7
- import type { IcqqAdapter } from './adapter.js';
8
- import { ICQQTypingIndicatorManager, type ICQQTypingIndicatorConfig } from './typing-indicator.js';
9
- /**
10
- * 在 ICQQ 适配器初始化时启用 Typing Indicator
11
- */
12
- export declare function enableTypingIndicatorForAdapter(adapter: IcqqAdapter): void;
13
- /**
14
- * 在消息处理流程中使用 Typing Indicator
15
- *
16
- * 使用示例:
17
- * ```typescript
18
- * // 在消息处理开始时
19
- * const indicator = await startTypingIndicator(endpoint, {
20
- * messageId: message.$id,
21
- * sessionId: `${message.$channel.type}:${message.$channel.id}`,
22
- * userId: message.$sender.id,
23
- * groupId: message.$channel.type === 'group' ? message.$channel.id : undefined,
24
- * sceneType: message.$channel.type as 'private' | 'group',
25
- * });
26
- *
27
- * try {
28
- * // 执行 AI 处理
29
- * const result = await processMessage(message);
30
- * return result;
31
- * } finally {
32
- * // 处理完成后停止提示
33
- * await indicator.stop();
34
- * }
35
- * ```
36
- */
37
- export declare function withTypingIndicator<T>(endpoint: IcqqEndpoint, options: {
38
- messageId?: string;
39
- sessionId: string;
40
- userId?: string;
41
- groupId?: string;
42
- sceneType: 'private' | 'group';
43
- }, fn: () => Promise<T>): Promise<T>;
44
- /**
45
- * 自定义 Typing Indicator 配置
46
- */
47
- export declare const customConfigs: Record<string, Partial<ICQQTypingIndicatorConfig>>;
48
- /**
49
- * 在 ICQQ 插件中集成 Typing Indicator
50
- *
51
- * 在 `index.ts` 中添加:
52
- * ```typescript
53
- * import { enableTypingIndicatorForAdapter } from './typing-indicator-example.js';
54
- *
55
- * // 在适配器 mounted 后启用
56
- * provide({
57
- * name: "icqq",
58
- * mounted: async (p: Plugin) => {
59
- * const adapter = new IcqqAdapter(p);
60
- * await adapter.start();
61
- *
62
- * // 启用 Typing Indicator
63
- * enableTypingIndicatorForAdapter(adapter);
64
- *
65
- * return adapter;
66
- * },
67
- * });
68
- * ```
69
- */
70
- /**
71
- * 监听消息事件并自动添加 Typing Indicator
72
- */
73
- export declare function setupTypingIndicatorHooks(adapter: IcqqAdapter): void;
74
- /**
75
- * 批量管理多个 Endpoint 的 Typing Indicator
76
- */
77
- export declare class BatchTypingIndicatorManager {
78
- private managers;
79
- /**
80
- * 注册 Endpoint
81
- */
82
- registerEndpoint(endpoint: IcqqEndpoint, config?: Partial<ICQQTypingIndicatorConfig>): void;
83
- /**
84
- * 开始提示
85
- */
86
- start(endpointId: string, options: {
87
- messageId?: string;
88
- sessionId: string;
89
- userId?: string;
90
- groupId?: string;
91
- sceneType: 'private' | 'group';
92
- }): Promise<void>;
93
- /**
94
- * 停止提示
95
- */
96
- stop(endpointId: string, options: {
97
- sessionId: string;
98
- }): Promise<void>;
99
- /**
100
- * 停止所有提示
101
- */
102
- stopAll(): Promise<void>;
103
- /**
104
- * 获取 Endpoint 的管理器
105
- */
106
- getManager(endpointId: string): ICQQTypingIndicatorManager | undefined;
107
- }
108
- //# sourceMappingURL=typing-indicator-example.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typing-indicator-example.d.ts","sourceRoot":"","sources":["../src/typing-indicator-example.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,0BAA0B,EAG1B,KAAK,yBAAyB,EAC/B,MAAM,uBAAuB,CAAC;AAI/B;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CA0B1E;AAID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC;CAChC,EACD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAkBZ;AAID;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAyC5E,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAwBpE;AAID;;GAEG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAsD;IAEtE;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI;IAK3F;;OAEG;IACG,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;QACP,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,GACA,OAAO,CAAC,IAAI,CAAC;IAOhB;;OAEG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7E;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,0BAA0B,GAAG,SAAS;CAGvE"}