@zhin.js/adapter-icqq 1.0.60 → 1.0.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @zhin.js/adapter-icqq
2
2
 
3
+ ## 1.0.62
4
+
5
+ ### Patch Changes
6
+
7
+ - 607acc4: fix: 视觉模型处理
8
+ - zhin.js@1.0.51
9
+ - @zhin.js/console@1.0.50
10
+ - @zhin.js/http@1.0.45
11
+ - @zhin.js/core@1.0.51
12
+
13
+ ## 1.0.61
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies [353de3d]
18
+ - @zhin.js/client@1.0.12
19
+ - @zhin.js/console@1.0.49
20
+
3
21
  ## 1.0.60
4
22
 
5
23
  ### Patch Changes
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{addPage as t}from"@zhin.js/client";import{Bot as m}from"lucide-react";function n(){return e("div",{children:"ICQQManagement"})}t({key:"icqq-management",path:"/icqq",title:"ICQQ管理",icon:e(m,{className:"w-5 h-5"}),element:e(n,{})});
1
+ import{addPage as e}from"@zhin.js/client";import{Bot as t}from"lucide-react";import{jsx as n}from"react/jsx-runtime";function r(){return n("div",{children:"ICQQManagement"})}e({key:"icqq-management",path:"/icqq",title:"ICQQ管理",icon:n(t,{className:"w-5 h-5"}),element:n(r,{})});
@@ -0,0 +1,34 @@
1
+ import { Adapter, Plugin } from "zhin.js";
2
+ import { IcqqBot } from "./bot.js";
3
+ import type { IcqqBotConfig } from "./types.js";
4
+ export declare class IcqqAdapter extends Adapter<IcqqBot> {
5
+ constructor(plugin: Plugin);
6
+ createBot(config: IcqqBotConfig): IcqqBot;
7
+ kickMember(botId: string, sceneId: string, userId: string): Promise<boolean>;
8
+ muteMember(botId: string, sceneId: string, userId: string, duration?: number): Promise<boolean>;
9
+ muteAll(botId: string, sceneId: string, enable?: boolean): Promise<boolean>;
10
+ setAdmin(botId: string, sceneId: string, userId: string, enable?: boolean): Promise<boolean>;
11
+ setMemberNickname(botId: string, sceneId: string, userId: string, nickname: string): Promise<boolean>;
12
+ setGroupName(botId: string, sceneId: string, name: string): Promise<boolean>;
13
+ listMembers(botId: string, sceneId: string): Promise<{
14
+ members: {
15
+ user_id: number;
16
+ nickname: string;
17
+ card: string;
18
+ role: import("@icqqjs/icqq").GroupRole;
19
+ title: string;
20
+ }[];
21
+ count: number;
22
+ }>;
23
+ start(): Promise<void>;
24
+ /**
25
+ * 注册 ICQQ 平台特有工具(头衔、戳一戳、群公告等)
26
+ */
27
+ private registerIcqqPlatformTools;
28
+ /**
29
+ * 检查执行上下文中的权限
30
+ * 双重验证:优先从 ToolContext 获取权限级别,其次从消息发送者信息获取
31
+ */
32
+ private checkPermission;
33
+ }
34
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,OAAO,EACP,MAAM,EAMP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,YAAY,CAAC;AAEhE,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;IAa5B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAuSjC;;;OAGG;IACH,OAAO,CAAC,eAAe;CA8CxB"}
package/lib/adapter.js ADDED
@@ -0,0 +1,401 @@
1
+ import { Adapter, createGroupManagementTools, GROUP_MANAGEMENT_SKILL_KEYWORDS, GROUP_MANAGEMENT_SKILL_TAGS, } from "zhin.js";
2
+ import { IcqqBot } from "./bot.js";
3
+ export class IcqqAdapter extends Adapter {
4
+ constructor(plugin) {
5
+ super(plugin, "icqq", []);
6
+ }
7
+ createBot(config) {
8
+ return new IcqqBot(this, config);
9
+ }
10
+ // ── IGroupManagement 标准群管方法 ──────────────────────────────────
11
+ async kickMember(botId, sceneId, userId) {
12
+ const bot = this.bots.get(botId);
13
+ if (!bot)
14
+ throw new Error(`Bot ${botId} 不存在`);
15
+ return bot.kickMember(Number(sceneId), Number(userId), false);
16
+ }
17
+ 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);
22
+ }
23
+ 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);
28
+ }
29
+ 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);
34
+ }
35
+ 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);
40
+ }
41
+ 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);
46
+ }
47
+ 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) => ({
53
+ user_id: m.user_id,
54
+ nickname: m.nickname,
55
+ card: m.card,
56
+ role: m.role,
57
+ title: m.title,
58
+ }));
59
+ return { members, count: members.length };
60
+ }
61
+ // ── 生命周期 ───────────────────────────────────────────────────────
62
+ async start() {
63
+ this.registerIcqqPlatformTools();
64
+ const groupTools = createGroupManagementTools(this, this.name);
65
+ groupTools.forEach((t) => this.addTool(t));
66
+ this.declareSkill({
67
+ description: 'ICQQ(QQ 协议)群管理:踢人、禁言、设管理员、改名片、头衔、群公告等。只有昵称时请先调用 list_members 查 QQ 号再操作。',
68
+ keywords: GROUP_MANAGEMENT_SKILL_KEYWORDS,
69
+ tags: GROUP_MANAGEMENT_SKILL_TAGS,
70
+ });
71
+ await super.start();
72
+ }
73
+ /**
74
+ * 注册 ICQQ 平台特有工具(头衔、戳一戳、群公告等)
75
+ */
76
+ registerIcqqPlatformTools() {
77
+ const CTX_BOT = {
78
+ type: "string",
79
+ description: "执行操作的 Bot QQ号",
80
+ contextKey: "botId",
81
+ };
82
+ const CTX_GROUP = {
83
+ type: "number",
84
+ description: "目标群号",
85
+ contextKey: "sceneId",
86
+ };
87
+ // 设置头衔工具
88
+ this.addTool({
89
+ name: "icqq_set_title",
90
+ description: "设置 QQ 群成员的专属头衔(显示在群昵称旁边的标签)。只有群主才能操作。可设置持续时间或永久。如果只有昵称没有 QQ号,请先调用 list_members 查询。",
91
+ tags: ["群管理", "成员管理", "头衔"],
92
+ keywords: ["头衔", "专属头衔", "设置头衔", "给头衔", "加头衔", "称号"],
93
+ parameters: {
94
+ type: "object",
95
+ properties: {
96
+ bot: CTX_BOT,
97
+ group_id: CTX_GROUP,
98
+ user_id: {
99
+ type: "number",
100
+ description: "目标成员 QQ号",
101
+ },
102
+ title: {
103
+ type: "string",
104
+ description: "头衔文字内容",
105
+ },
106
+ duration: {
107
+ type: "number",
108
+ description: "持续时间(秒),-1 表示永久,默认永久",
109
+ },
110
+ },
111
+ required: ["bot", "group_id", "user_id", "title"],
112
+ },
113
+ platforms: ["icqq"],
114
+ scopes: ["group"],
115
+ permissionLevel: "group_owner",
116
+ execute: async (args, context) => {
117
+ const { bot: botId, group_id, user_id, title, duration = -1 } = args;
118
+ const bot = this.bots.get(botId);
119
+ if (!bot)
120
+ throw new Error(`Bot ${botId} 不存在`);
121
+ this.checkPermission(context, "group_owner");
122
+ const success = await bot.setTitle(group_id, user_id, title, duration);
123
+ return {
124
+ success,
125
+ message: success
126
+ ? `已将 ${user_id} 的头衔设为 "${title}"`
127
+ : "设置失败",
128
+ };
129
+ },
130
+ });
131
+ // 发送群公告工具
132
+ this.addTool({
133
+ name: "icqq_announce",
134
+ description: "发送 QQ 群公告(需要管理员权限)",
135
+ parameters: {
136
+ type: "object",
137
+ properties: {
138
+ bot: CTX_BOT,
139
+ group_id: CTX_GROUP,
140
+ content: {
141
+ type: "string",
142
+ description: "公告内容",
143
+ },
144
+ },
145
+ required: ["bot", "group_id", "content"],
146
+ },
147
+ platforms: ["icqq"],
148
+ scopes: ["group"],
149
+ permissionLevel: "group_admin",
150
+ execute: async (args, context) => {
151
+ const { bot: botId, group_id, content } = args;
152
+ const bot = this.bots.get(botId);
153
+ if (!bot)
154
+ throw new Error(`Bot ${botId} 不存在`);
155
+ this.checkPermission(context, "group_admin");
156
+ const success = await bot.sendAnnounce(group_id, content);
157
+ return { success, message: success ? "群公告已发送" : "发送失败" };
158
+ },
159
+ });
160
+ // 戳一戳工具
161
+ this.addTool({
162
+ name: "icqq_poke",
163
+ description: '在 QQ 群中对某个成员执行"戳一戳"互动操作(类似拍一拍)。任何人都可以使用。注意:每次请求只戳一次,不要重复调用此工具。如果只有昵称没有 QQ号,请先调用 list_members 查询。',
164
+ tags: ["互动", "趣味", "戳一戳"],
165
+ keywords: ["戳", "戳一戳", "拍一拍", "拍", "碰一碰", "poke"],
166
+ parameters: {
167
+ type: "object",
168
+ properties: {
169
+ bot: CTX_BOT,
170
+ group_id: CTX_GROUP,
171
+ user_id: {
172
+ type: "number",
173
+ description: "要戳的目标成员 QQ号",
174
+ },
175
+ },
176
+ required: ["bot", "group_id", "user_id"],
177
+ },
178
+ platforms: ["icqq"],
179
+ scopes: ["group"],
180
+ permissionLevel: "user",
181
+ execute: async (args) => {
182
+ const { bot: botId, group_id, user_id } = args;
183
+ const bot = this.bots.get(botId);
184
+ if (!bot)
185
+ throw new Error(`Bot ${botId} 不存在`);
186
+ const success = await bot.pokeMember(group_id, user_id);
187
+ return {
188
+ success,
189
+ message: success ? `已戳了戳 ${user_id}` : "戳一戳失败",
190
+ };
191
+ },
192
+ });
193
+ // 获取被禁言列表工具
194
+ this.addTool({
195
+ name: "icqq_list_muted",
196
+ description: "查询 QQ 群中当前被禁言的成员列表,返回被禁言成员的 QQ号和剩余禁言时间。此工具仅用于查询,不会执行禁言操作。如需禁言或解除禁言,请使用 icqq_mute_member 工具。",
197
+ tags: ["群查询", "禁言查询", "列表"],
198
+ keywords: ["禁言列表", "被禁言", "谁被禁言", "查看禁言", "禁言名单"],
199
+ parameters: {
200
+ type: "object",
201
+ properties: {
202
+ bot: CTX_BOT,
203
+ group_id: CTX_GROUP,
204
+ },
205
+ required: ["bot", "group_id"],
206
+ },
207
+ platforms: ["icqq"],
208
+ scopes: ["group"],
209
+ permissionLevel: "user",
210
+ execute: async (args) => {
211
+ const { bot: botId, group_id } = args;
212
+ const bot = this.bots.get(botId);
213
+ if (!bot)
214
+ throw new Error(`Bot ${botId} 不存在`);
215
+ const mutedList = await bot.getMutedMembers(group_id);
216
+ return {
217
+ muted_members: mutedList.filter((m) => m !== null),
218
+ count: mutedList.filter((m) => m !== null).length,
219
+ };
220
+ },
221
+ });
222
+ this.addTool({
223
+ name: "icqq_send_user_like",
224
+ description: "给用户点赞(竖大拇指)。每人每天最多点赞 20 次,超出无效。如果只有昵称没有 QQ号,请先调用 list_members 查询。",
225
+ tags: ["互动", "趣味", "点赞"],
226
+ keywords: ["点赞", "赞我", "赞一下", "大拇指"],
227
+ parameters: {
228
+ type: "object",
229
+ properties: {
230
+ bot: CTX_BOT,
231
+ user_id: {
232
+ type: "number",
233
+ description: "要点赞的目标用户 QQ号(如果只有昵称,先用 list_members 查询获取)",
234
+ },
235
+ times: {
236
+ type: "number",
237
+ description: "点赞次数(1-20),默认 1 次,每人每天上限 20 次",
238
+ default: 1,
239
+ },
240
+ },
241
+ required: ["bot", "user_id"],
242
+ },
243
+ platforms: ["icqq"],
244
+ scopes: ["group", "private"],
245
+ permissionLevel: "user",
246
+ execute: async (args) => {
247
+ const { bot: botId, user_id, times = 1 } = args;
248
+ const bot = this.bots.get(botId);
249
+ if (!bot)
250
+ throw new Error(`Bot ${botId} 不存在`);
251
+ const success = await bot.sendLike(user_id, Math.min(times, 20));
252
+ return {
253
+ success,
254
+ message: success ? `已发送用户点赞消息给 ${user_id}` : "发送失败",
255
+ };
256
+ },
257
+ });
258
+ // 设置匿名状态工具
259
+ this.addTool({
260
+ name: "icqq_set_anonymous",
261
+ description: "开启或关闭 QQ 群的匿名聊天功能。开启后群成员可以匿名发言。需要 Bot 拥有管理员权限。",
262
+ tags: ["群管理", "群设置", "匿名"],
263
+ keywords: ["匿名", "匿名聊天", "开启匿名", "关闭匿名", "允许匿名"],
264
+ parameters: {
265
+ type: "object",
266
+ properties: {
267
+ bot: CTX_BOT,
268
+ group_id: CTX_GROUP,
269
+ enable: {
270
+ type: "boolean",
271
+ description: "true=开启匿名聊天,false=关闭匿名聊天,默认 true",
272
+ },
273
+ },
274
+ required: ["bot", "group_id"],
275
+ },
276
+ platforms: ["icqq"],
277
+ scopes: ["group"],
278
+ permissionLevel: "group_admin",
279
+ execute: async (args, context) => {
280
+ const { bot: botId, group_id, enable = true } = args;
281
+ const bot = this.bots.get(botId);
282
+ if (!bot)
283
+ throw new Error(`Bot ${botId} 不存在`);
284
+ this.checkPermission(context, "group_admin");
285
+ const success = await bot.setAnonymous(group_id, enable);
286
+ return {
287
+ success,
288
+ message: success
289
+ ? enable
290
+ ? "已开启匿名聊天"
291
+ : "已关闭匿名聊天"
292
+ : "操作失败",
293
+ };
294
+ },
295
+ });
296
+ // 群文件列表
297
+ this.addTool({
298
+ name: "icqq_group_files",
299
+ description: "获取 QQ 群的群文件列表",
300
+ parameters: {
301
+ type: "object",
302
+ properties: {
303
+ bot: { type: "string", description: "Bot 名称" },
304
+ group_id: { type: "number", description: "群号" },
305
+ },
306
+ required: ["bot", "group_id"],
307
+ },
308
+ platforms: ["icqq"],
309
+ scopes: ["group"],
310
+ permissionLevel: "user",
311
+ execute: async (args) => {
312
+ const { bot: botId, group_id } = args;
313
+ const bot = this.bots.get(botId);
314
+ if (!bot)
315
+ throw new Error(`Bot ${botId} 不存在`);
316
+ const files = await bot.getGroupFiles(group_id);
317
+ if (!files?.length)
318
+ return { files: [], message: "群文件为空" };
319
+ return {
320
+ files: files.slice(0, 30).map((f) => ({
321
+ name: f.name,
322
+ size: f.size,
323
+ uploader: f.uploader_uin,
324
+ upload_time: f.upload_time,
325
+ })),
326
+ count: files.length,
327
+ };
328
+ },
329
+ });
330
+ // 好友列表
331
+ this.addTool({
332
+ name: "icqq_friend_list",
333
+ description: "获取 QQ 好友列表",
334
+ parameters: {
335
+ type: "object",
336
+ properties: {
337
+ bot: { type: "string", description: "Bot 名称" },
338
+ },
339
+ required: ["bot"],
340
+ },
341
+ platforms: ["icqq"],
342
+ scopes: ["group", "private"],
343
+ permissionLevel: "user",
344
+ execute: async (args) => {
345
+ const { bot: botId } = args;
346
+ const bot = this.bots.get(botId);
347
+ if (!bot)
348
+ throw new Error(`Bot ${botId} 不存在`);
349
+ const fl = bot.fl;
350
+ const friends = Array.from(fl.values()).map((f) => ({
351
+ user_id: f.user_id,
352
+ nickname: f.nickname,
353
+ remark: f.remark,
354
+ }));
355
+ return { friends: friends.slice(0, 50), count: fl.size };
356
+ },
357
+ });
358
+ this.plugin.logger.debug("已注册 ICQQ 平台群管理工具");
359
+ }
360
+ /**
361
+ * 检查执行上下文中的权限
362
+ * 双重验证:优先从 ToolContext 获取权限级别,其次从消息发送者信息获取
363
+ */
364
+ checkPermission(context, required) {
365
+ const permissionLevels = {
366
+ user: 0,
367
+ group_admin: 1,
368
+ group_owner: 2,
369
+ bot_admin: 3,
370
+ owner: 4,
371
+ };
372
+ const requiredLevel = permissionLevels[required] ?? 0;
373
+ if (requiredLevel === 0)
374
+ return; // user 级别无需检查
375
+ // 1. 优先从 ToolContext.senderPermissionLevel 获取(AI Agent 路径注入)
376
+ if (context?.senderPermissionLevel) {
377
+ const ctxLevel = permissionLevels[context.senderPermissionLevel] ?? 0;
378
+ if (ctxLevel < requiredLevel) {
379
+ throw new Error(`权限不足:需要 ${required} 权限,当前为 ${context.senderPermissionLevel}`);
380
+ }
381
+ return; // 检查通过
382
+ }
383
+ // 2. 从消息的 $sender 获取权限(命令行/中间件路径)
384
+ const sender = context?.message?.$sender;
385
+ if (!sender) {
386
+ // 无上下文且无发送者信息 → 拒绝高权限操作
387
+ throw new Error(`权限不足:无法验证身份,拒绝执行需要 ${required} 权限的操作`);
388
+ }
389
+ let senderLevel = "user";
390
+ if (sender.isOwner || sender.role === "owner") {
391
+ senderLevel = "group_owner";
392
+ }
393
+ else if (sender.isAdmin || sender.role === "admin") {
394
+ senderLevel = "group_admin";
395
+ }
396
+ if (permissionLevels[senderLevel] < requiredLevel) {
397
+ throw new Error(`权限不足:需要 ${required} 权限,当前为 ${senderLevel}`);
398
+ }
399
+ }
400
+ }
401
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/lib/bot.d.ts ADDED
@@ -0,0 +1,46 @@
1
+ /**
2
+ * ICQQ Bot:继承 icqq Client,实现 zhin Bot 接口
3
+ */
4
+ import { Client, PrivateMessageEvent, GroupMessageEvent, Sendable, MemberInfo } from "@icqqjs/icqq";
5
+ import { Bot, Message, SendOptions, MessageSegment, SendContent } from "zhin.js";
6
+ import type { IcqqBotConfig } from "./types.js";
7
+ import type { IcqqAdapter } from "./adapter.js";
8
+ export declare class IcqqBot extends Client implements Bot<IcqqBotConfig, PrivateMessageEvent | GroupMessageEvent> {
9
+ adapter: IcqqAdapter;
10
+ $connected: boolean;
11
+ $config: IcqqBotConfig;
12
+ get pluginLogger(): import("zhin.js").Logger;
13
+ get $id(): `${number}`;
14
+ constructor(adapter: IcqqAdapter, config: IcqqBotConfig);
15
+ private handleIcqqMessage;
16
+ $connect(): Promise<void>;
17
+ $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>;
37
+ $recallMessage(id: string): Promise<void>;
38
+ $sendMessage(options: SendOptions): Promise<string>;
39
+ }
40
+ export declare namespace IcqqBot {
41
+ function toSegments(message: Sendable): MessageSegment[];
42
+ }
43
+ export declare namespace IcqqBot {
44
+ function toSendable(content: SendContent): Sendable;
45
+ }
46
+ //# sourceMappingURL=bot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}