@zhin.js/adapter-icqq 2.0.5 → 2.0.7

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 +18 -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 +11 -12
  39. package/plugin.yml +3 -0
  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/lib/routes.js ADDED
@@ -0,0 +1,67 @@
1
+ import { Actions } from "./protocol.js";
2
+ export function registerRoutes(router, icqq, _root) {
3
+ router.get("/api/icqq/bots", async (ctx) => {
4
+ try {
5
+ const bots = Array.from(icqq.bots.values());
6
+ if (bots.length === 0) {
7
+ ctx.body = { success: true, data: [], message: "暂无ICQQ机器人实例" };
8
+ return;
9
+ }
10
+ const result = await Promise.all(bots.map(async (bot) => {
11
+ try {
12
+ const base = {
13
+ name: bot.$config.name,
14
+ connected: bot.$connected || false,
15
+ groupCount: bot.groups.size,
16
+ friendCount: bot.friends.size,
17
+ status: bot.$connected ? "online" : "offline",
18
+ lastActivity: new Date().toISOString(),
19
+ };
20
+ // 尝试从守护进程获取详细状态
21
+ if (bot.$connected && bot.ipc && !bot.ipc.closed) {
22
+ try {
23
+ const statusResp = await bot.ipc.request(Actions.GET_STATUS, {}, 5000);
24
+ if (statusResp.ok && statusResp.data) {
25
+ const stat = statusResp.data;
26
+ base.receiveCount = stat.recv_msg_cnt ?? 0;
27
+ base.sendCount = stat.sent_msg_cnt ?? 0;
28
+ }
29
+ }
30
+ catch {
31
+ // status 查询超时,忽略
32
+ }
33
+ }
34
+ return base;
35
+ }
36
+ catch {
37
+ return {
38
+ name: bot.$config.name,
39
+ connected: false,
40
+ groupCount: 0,
41
+ friendCount: 0,
42
+ status: "error",
43
+ error: "数据获取失败",
44
+ };
45
+ }
46
+ }));
47
+ ctx.body = {
48
+ success: true,
49
+ data: result,
50
+ timestamp: new Date().toISOString(),
51
+ };
52
+ }
53
+ catch (error) {
54
+ ctx.status = 500;
55
+ ctx.body = {
56
+ success: false,
57
+ error: "ICQQ_API_ERROR",
58
+ message: "获取机器人数据失败",
59
+ details: process.env.NODE_ENV === "development"
60
+ ? error.message
61
+ : undefined,
62
+ timestamp: new Date().toISOString(),
63
+ };
64
+ }
65
+ });
66
+ }
67
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * ICQQ 平台特有工具注册 — 通过 IPC 调用守护进程 Actions
3
+ *
4
+ * 通用群管理工具由 createGroupManagementTools() 自动生成;
5
+ * 本模块注册 ICQQ 独有的扩展工具。
6
+ */
7
+ import type { ToolFeature } from "zhin.js";
8
+ import type { IcqqAdapter } from "../adapter.js";
9
+ export declare function registerTools(toolService: ToolFeature, icqq: IcqqAdapter, pluginName: string): () => void;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,wBAAgB,aAAa,CAC3B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,IAAI,CAuYZ"}
@@ -0,0 +1,336 @@
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
+ bot: { type: "string", description: "Bot QQ号" },
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: ["bot", "group_id", "user_id", "title"],
22
+ },
23
+ platforms: ["icqq"],
24
+ tags: ["icqq"],
25
+ execute: async (args) => {
26
+ const bot = icqq.bots.get(args.bot);
27
+ if (!bot)
28
+ throw new Error(`Bot ${args.bot} 不存在`);
29
+ const resp = await bot.ipc.request(Actions.SET_GROUP_TITLE, {
30
+ group_id: args.group_id,
31
+ user_id: args.user_id,
32
+ title: args.title,
33
+ duration: args.duration ?? -1,
34
+ });
35
+ return { success: resp.ok, message: resp.ok ? `已将 ${args.user_id} 的头衔设为 "${args.title}"` : (resp.error ?? "设置失败") };
36
+ },
37
+ }, pluginName));
38
+ // ── 发送群公告 ─────────────────────────────────────────────────────
39
+ disposers.push(toolService.addTool({
40
+ name: "icqq_announce",
41
+ description: "发送 QQ 群公告(需要管理员权限)",
42
+ parameters: {
43
+ type: "object",
44
+ properties: {
45
+ bot: { type: "string", description: "Bot QQ号" },
46
+ group_id: { type: "number", description: "目标群号" },
47
+ content: { type: "string", description: "公告内容" },
48
+ },
49
+ required: ["bot", "group_id", "content"],
50
+ },
51
+ platforms: ["icqq"],
52
+ tags: ["icqq"],
53
+ execute: async (args) => {
54
+ const bot = icqq.bots.get(args.bot);
55
+ if (!bot)
56
+ throw new Error(`Bot ${args.bot} 不存在`);
57
+ const resp = await bot.ipc.request(Actions.GROUP_ANNOUNCE, {
58
+ group_id: args.group_id,
59
+ content: args.content,
60
+ });
61
+ return { success: resp.ok, message: resp.ok ? "群公告已发送" : (resp.error ?? "发送失败") };
62
+ },
63
+ }, pluginName));
64
+ // ── 戳一戳 ─────────────────────────────────────────────────────────
65
+ disposers.push(toolService.addTool({
66
+ name: "icqq_poke",
67
+ description: "在 QQ 群中对某个成员执行戳一戳互动操作",
68
+ parameters: {
69
+ type: "object",
70
+ properties: {
71
+ bot: { type: "string", description: "Bot QQ号" },
72
+ group_id: { type: "number", description: "目标群号" },
73
+ user_id: { type: "number", description: "要戳的目标成员 QQ号" },
74
+ },
75
+ required: ["bot", "group_id", "user_id"],
76
+ },
77
+ platforms: ["icqq"],
78
+ tags: ["icqq"],
79
+ execute: async (args) => {
80
+ const bot = icqq.bots.get(args.bot);
81
+ if (!bot)
82
+ throw new Error(`Bot ${args.bot} 不存在`);
83
+ const resp = await bot.ipc.request(Actions.GROUP_POKE, {
84
+ group_id: args.group_id,
85
+ user_id: args.user_id,
86
+ });
87
+ return { success: resp.ok, message: resp.ok ? `已戳了戳 ${args.user_id}` : (resp.error ?? "戳一戳失败") };
88
+ },
89
+ }, pluginName));
90
+ // ── 获取被禁言列表 ─────────────────────────────────────────────────
91
+ disposers.push(toolService.addTool({
92
+ name: "icqq_list_muted",
93
+ description: "查询 QQ 群中当前被禁言的成员列表",
94
+ parameters: {
95
+ type: "object",
96
+ properties: {
97
+ bot: { type: "string", description: "Bot QQ号" },
98
+ group_id: { type: "number", description: "目标群号" },
99
+ },
100
+ required: ["bot", "group_id"],
101
+ },
102
+ platforms: ["icqq"],
103
+ tags: ["icqq"],
104
+ execute: async (args) => {
105
+ const bot = icqq.bots.get(args.bot);
106
+ if (!bot)
107
+ throw new Error(`Bot ${args.bot} 不存在`);
108
+ const resp = await bot.ipc.request(Actions.GROUP_MUTED_LIST, {
109
+ group_id: args.group_id,
110
+ });
111
+ if (!resp.ok)
112
+ throw new Error(resp.error ?? "获取禁言列表失败");
113
+ const list = Array.isArray(resp.data) ? resp.data : [];
114
+ return { muted_members: list, count: list.length };
115
+ },
116
+ }, pluginName));
117
+ // ── 给用户点赞 ─────────────────────────────────────────────────────
118
+ disposers.push(toolService.addTool({
119
+ name: "icqq_send_user_like",
120
+ description: "给用户点赞(竖大拇指),每人每天最多 20 次",
121
+ parameters: {
122
+ type: "object",
123
+ properties: {
124
+ bot: { type: "string", description: "Bot QQ号" },
125
+ user_id: { type: "number", description: "要点赞的目标用户 QQ号" },
126
+ times: { type: "number", description: "点赞次数(1-20),默认 1" },
127
+ },
128
+ required: ["bot", "user_id"],
129
+ },
130
+ platforms: ["icqq"],
131
+ tags: ["icqq"],
132
+ execute: async (args) => {
133
+ const bot = icqq.bots.get(args.bot);
134
+ if (!bot)
135
+ throw new Error(`Bot ${args.bot} 不存在`);
136
+ const resp = await bot.ipc.request(Actions.FRIEND_LIKE, {
137
+ user_id: args.user_id,
138
+ times: Math.min(args.times ?? 1, 20),
139
+ });
140
+ return { success: resp.ok, message: resp.ok ? `已给 ${args.user_id} 点赞` : (resp.error ?? "点赞失败") };
141
+ },
142
+ }, pluginName));
143
+ // ── 设置匿名聊天 ───────────────────────────────────────────────────
144
+ disposers.push(toolService.addTool({
145
+ name: "icqq_set_anonymous",
146
+ description: "开启或关闭 QQ 群的匿名聊天功能",
147
+ parameters: {
148
+ type: "object",
149
+ properties: {
150
+ bot: { type: "string", description: "Bot QQ号" },
151
+ group_id: { type: "number", description: "目标群号" },
152
+ enable: { type: "boolean", description: "true=开启,false=关闭,默认 true" },
153
+ },
154
+ required: ["bot", "group_id"],
155
+ },
156
+ platforms: ["icqq"],
157
+ tags: ["icqq"],
158
+ execute: async (args) => {
159
+ const bot = icqq.bots.get(args.bot);
160
+ if (!bot)
161
+ throw new Error(`Bot ${args.bot} 不存在`);
162
+ const enable = args.enable ?? true;
163
+ const resp = await bot.ipc.request(Actions.GROUP_ALLOW_ANONY, {
164
+ group_id: args.group_id,
165
+ enable,
166
+ });
167
+ return { success: resp.ok, message: resp.ok ? (enable ? "已开启匿名聊天" : "已关闭匿名聊天") : (resp.error ?? "操作失败") };
168
+ },
169
+ }, pluginName));
170
+ // ── 群文件列表 ─────────────────────────────────────────────────────
171
+ disposers.push(toolService.addTool({
172
+ name: "icqq_group_files",
173
+ description: "获取 QQ 群的群文件列表",
174
+ parameters: {
175
+ type: "object",
176
+ properties: {
177
+ bot: { type: "string", description: "Bot 名称" },
178
+ group_id: { type: "number", description: "群号" },
179
+ },
180
+ required: ["bot", "group_id"],
181
+ },
182
+ platforms: ["icqq"],
183
+ tags: ["icqq"],
184
+ execute: async (args) => {
185
+ const bot = icqq.bots.get(args.bot);
186
+ if (!bot)
187
+ throw new Error(`Bot ${args.bot} 不存在`);
188
+ const resp = await bot.ipc.request(Actions.GFS_LIST, {
189
+ group_id: args.group_id,
190
+ });
191
+ if (!resp.ok)
192
+ throw new Error(resp.error ?? "获取群文件失败");
193
+ const files = Array.isArray(resp.data) ? resp.data : [];
194
+ if (!files.length)
195
+ return { files: [], message: "群文件为空" };
196
+ return {
197
+ files: files.slice(0, 30).map((f) => ({
198
+ name: f.name,
199
+ size: f.size,
200
+ uploader: f.uploader_uin,
201
+ upload_time: f.upload_time,
202
+ })),
203
+ count: files.length,
204
+ };
205
+ },
206
+ }, pluginName));
207
+ // ── 好友列表 ───────────────────────────────────────────────────────
208
+ disposers.push(toolService.addTool({
209
+ name: "icqq_friend_list",
210
+ description: "获取 QQ 好友列表",
211
+ parameters: {
212
+ type: "object",
213
+ properties: {
214
+ bot: { type: "string", description: "Bot 名称" },
215
+ },
216
+ required: ["bot"],
217
+ },
218
+ platforms: ["icqq"],
219
+ tags: ["icqq"],
220
+ execute: async (args) => {
221
+ const bot = icqq.bots.get(args.bot);
222
+ if (!bot)
223
+ throw new Error(`Bot ${args.bot} 不存在`);
224
+ const friends = Array.from(bot.friends.values()).map((f) => ({
225
+ user_id: f.user_id,
226
+ nickname: f.nickname,
227
+ remark: f.remark,
228
+ }));
229
+ return { friends: friends.slice(0, 50), count: bot.friends.size };
230
+ },
231
+ }, pluginName));
232
+ // ── 群列表 ─────────────────────────────────────────────────────────
233
+ disposers.push(toolService.addTool({
234
+ name: "icqq_group_list",
235
+ description: "获取 Bot 的 QQ 群列表",
236
+ parameters: {
237
+ type: "object",
238
+ properties: {
239
+ bot: { type: "string", description: "Bot 名称" },
240
+ },
241
+ required: ["bot"],
242
+ },
243
+ platforms: ["icqq"],
244
+ tags: ["icqq"],
245
+ execute: async (args) => {
246
+ const bot = icqq.bots.get(args.bot);
247
+ if (!bot)
248
+ throw new Error(`Bot ${args.bot} 不存在`);
249
+ const groups = Array.from(bot.groups.values()).map((g) => ({
250
+ group_id: g.group_id,
251
+ group_name: g.group_name,
252
+ member_count: g.member_count,
253
+ max_member_count: g.max_member_count,
254
+ }));
255
+ return { groups: groups.slice(0, 50), count: bot.groups.size };
256
+ },
257
+ }, pluginName));
258
+ // ── 群签到 ─────────────────────────────────────────────────────────
259
+ disposers.push(toolService.addTool({
260
+ name: "icqq_group_sign",
261
+ description: "QQ 群签到打卡",
262
+ parameters: {
263
+ type: "object",
264
+ properties: {
265
+ bot: { type: "string", description: "Bot QQ号" },
266
+ group_id: { type: "number", description: "目标群号" },
267
+ },
268
+ required: ["bot", "group_id"],
269
+ },
270
+ platforms: ["icqq"],
271
+ tags: ["icqq"],
272
+ execute: async (args) => {
273
+ const bot = icqq.bots.get(args.bot);
274
+ if (!bot)
275
+ throw new Error(`Bot ${args.bot} 不存在`);
276
+ const resp = await bot.ipc.request(Actions.GROUP_SIGN, {
277
+ group_id: args.group_id,
278
+ });
279
+ return { success: resp.ok, message: resp.ok ? "群签到成功" : (resp.error ?? "签到失败") };
280
+ },
281
+ }, pluginName));
282
+ // ── 邀请入群 ───────────────────────────────────────────────────────
283
+ disposers.push(toolService.addTool({
284
+ name: "icqq_group_invite",
285
+ description: "邀请好友加入 QQ 群",
286
+ parameters: {
287
+ type: "object",
288
+ properties: {
289
+ bot: { type: "string", description: "Bot QQ号" },
290
+ group_id: { type: "number", description: "目标群号" },
291
+ user_id: { type: "number", description: "要邀请的 QQ号" },
292
+ },
293
+ required: ["bot", "group_id", "user_id"],
294
+ },
295
+ platforms: ["icqq"],
296
+ tags: ["icqq"],
297
+ execute: async (args) => {
298
+ const bot = icqq.bots.get(args.bot);
299
+ if (!bot)
300
+ throw new Error(`Bot ${args.bot} 不存在`);
301
+ const resp = await bot.ipc.request(Actions.GROUP_INVITE, {
302
+ group_id: args.group_id,
303
+ user_id: args.user_id,
304
+ });
305
+ return { success: resp.ok, message: resp.ok ? `已邀请 ${args.user_id} 加入群` : (resp.error ?? "邀请失败") };
306
+ },
307
+ }, pluginName));
308
+ // ── 设为/移除精华消息 ──────────────────────────────────────────────
309
+ disposers.push(toolService.addTool({
310
+ name: "icqq_essence",
311
+ description: "设置或移除 QQ 群精华消息",
312
+ parameters: {
313
+ type: "object",
314
+ properties: {
315
+ bot: { type: "string", description: "Bot QQ号" },
316
+ message_id: { type: "string", description: "消息 ID" },
317
+ action: { type: "string", description: "add=设为精华, remove=移除精华" },
318
+ },
319
+ required: ["bot", "message_id", "action"],
320
+ },
321
+ platforms: ["icqq"],
322
+ tags: ["icqq"],
323
+ execute: async (args) => {
324
+ const bot = icqq.bots.get(args.bot);
325
+ if (!bot)
326
+ throw new Error(`Bot ${args.bot} 不存在`);
327
+ const action = args.action === "add" ? Actions.GROUP_ESSENCE_ADD : Actions.GROUP_ESSENCE_REMOVE;
328
+ const resp = await bot.ipc.request(action, {
329
+ message_id: args.message_id,
330
+ });
331
+ return { success: resp.ok, message: resp.ok ? (args.action === "add" ? "已设为精华" : "已移除精华") : (resp.error ?? "操作失败") };
332
+ },
333
+ }, pluginName));
334
+ return () => disposers.forEach((d) => d());
335
+ }
336
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * ICQQ 适配器类型与配置
3
+ *
4
+ * 不再直接依赖 @icqqjs/icqq,通过 @icqqjs/cli 守护进程 IPC 通信。
3
5
  */
4
- import type { Config, GroupRole, MemberInfo } from "@icqqjs/icqq";
5
- export type { Config, GroupRole, MemberInfo };
6
+ export type GroupRole = "owner" | "admin" | "member";
6
7
  export interface IcqqSenderInfo {
7
8
  id: string;
8
9
  name: string;
@@ -13,13 +14,50 @@ export interface IcqqSenderInfo {
13
14
  card?: string;
14
15
  title?: string;
15
16
  }
16
- export interface IcqqBotConfig extends Config {
17
+ /**
18
+ * Bot 配置:支持本地 IPC 和远程 RPC 两种连接模式。
19
+ *
20
+ * - 本地模式(默认):只需 name(QQ号),自动连接 ~/.icqq/<uin>/daemon.sock
21
+ * - 远程模式:额外配置 rpc.host / rpc.port / rpc.token
22
+ */
23
+ export interface IcqqBotConfig {
17
24
  context: "icqq";
25
+ /** QQ 号码字符串 */
18
26
  name: `${number}`;
19
- password?: string;
20
- scope?: string;
27
+ /** RPC 远程连接配置(不配置则使用本地 IPC) */
28
+ rpc?: {
29
+ /** 远程主机地址 */
30
+ host: string;
31
+ /** 远程端口 */
32
+ port: number;
33
+ /** 认证 token(用于 HMAC-SHA256 挑战-响应,不会明文传输) */
34
+ token: string;
35
+ };
36
+ }
37
+ /** IPC 返回的好友信息 */
38
+ export interface IpcFriendInfo {
39
+ user_id: number;
40
+ nickname: string;
41
+ remark?: string;
42
+ class_id?: number;
43
+ }
44
+ /** IPC 返回的群信息 */
45
+ export interface IpcGroupInfo {
46
+ group_id: number;
47
+ group_name: string;
48
+ member_count: number;
49
+ max_member_count: number;
50
+ owner_id?: number;
21
51
  }
22
- export interface IcqqBot {
23
- $config: IcqqBotConfig;
52
+ /** IPC 返回的群成员信息 */
53
+ export interface IpcMemberInfo {
54
+ user_id: number;
55
+ nickname: string;
56
+ card: string;
57
+ role: GroupRole;
58
+ title: string;
59
+ join_time?: number;
60
+ last_sent_time?: number;
61
+ shutup_time?: number;
24
62
  }
25
63
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAElE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,aAAa,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAClB,+BAA+B;IAC/B,GAAG,CAAC,EAAE;QACJ,aAAa;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW;QACX,IAAI,EAAE,MAAM,CAAC;QACb,4CAA4C;QAC5C,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,kBAAkB;AAClB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,iBAAiB;AACjB,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mBAAmB;AACnB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
package/lib/types.js CHANGED
@@ -1,2 +1,7 @@
1
+ /**
2
+ * ICQQ 适配器类型与配置
3
+ *
4
+ * 不再直接依赖 @icqqjs/icqq,通过 @icqqjs/cli 守护进程 IPC 通信。
5
+ */
1
6
  export {};
2
7
  //# sourceMappingURL=types.js.map
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
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": "2.0.5",
3
+ "version": "2.0.7",
4
4
  "description": "Zhin.js adapter for ICQQ (QQ Bot)",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -39,28 +39,27 @@
39
39
  "client",
40
40
  "dist",
41
41
  "skills",
42
+ "plugin.yml",
42
43
  "README.md",
43
44
  "CHANGELOG.md"
44
45
  ],
45
- "dependencies": {
46
- "@icqqjs/icqq": "^1.10.18"
47
- },
46
+ "dependencies": {},
48
47
  "devDependencies": {
49
48
  "@radix-ui/themes": "^3.2.1",
50
49
  "@types/react": "^19.2.2",
51
50
  "@types/react-dom": "^19.2.1",
52
51
  "lucide-react": "^0.469.0",
53
52
  "radix-ui": "^1.4.3",
54
- "typescript": "^5.9.3",
55
- "@zhin.js/console": "2.0.5",
56
- "zhin.js": "1.0.63"
53
+ "typescript": "^6.0.0",
54
+ "@zhin.js/console": "2.0.6",
55
+ "zhin.js": "1.0.64"
57
56
  },
58
57
  "peerDependencies": {
59
- "@zhin.js/client": "1.0.15",
60
- "@zhin.js/console": "2.0.5",
61
- "@zhin.js/core": "1.1.5",
62
- "zhin.js": "1.0.63",
63
- "@zhin.js/http": "1.0.58"
58
+ "@zhin.js/client": "1.0.16",
59
+ "@zhin.js/core": "1.1.6",
60
+ "@zhin.js/console": "2.0.6",
61
+ "@zhin.js/http": "1.0.59",
62
+ "zhin.js": "1.0.64"
64
63
  },
65
64
  "peerDependenciesMeta": {
66
65
  "@zhin.js/client": {
package/plugin.yml ADDED
@@ -0,0 +1,3 @@
1
+ name: adapter-icqq
2
+ description: ICQQ 适配器:QQ 群管理、好友操作、群文件、头衔、群公告、戳一戳、点赞、精华、签到、邀请
3
+ version: 1.0.71