@zhin.js/adapter-qq 1.0.51 → 1.0.52

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,12 @@
1
1
  # @zhin.js/adapter-qq
2
2
 
3
+ ## 1.0.52
4
+
5
+ ### Patch Changes
6
+
7
+ - zhin.js@1.0.51
8
+ - @zhin.js/logger@0.1.35
9
+
3
10
  ## 1.0.51
4
11
 
5
12
  ### Patch Changes
@@ -0,0 +1,21 @@
1
+ /**
2
+ * QQ 官方适配器
3
+ */
4
+ import { Adapter, Plugin } from "zhin.js";
5
+ import { QQBot } from "./bot.js";
6
+ import type { QQBotConfig, ReceiverMode } from "./types.js";
7
+ export declare class QQAdapter extends Adapter<QQBot<ReceiverMode>> {
8
+ constructor(plugin: Plugin);
9
+ createBot(config: QQBotConfig<ReceiverMode>): QQBot<ReceiverMode>;
10
+ kickMember(botId: string, sceneId: string, userId: string): Promise<boolean>;
11
+ muteMember(botId: string, sceneId: string, userId: string, duration?: number): Promise<boolean>;
12
+ muteAll(botId: string, sceneId: string, enable?: boolean): Promise<boolean>;
13
+ listMembers(botId: string, sceneId: string): Promise<any[]>;
14
+ getGroupInfo(botId: string, sceneId: string): Promise<any>;
15
+ start(): Promise<void>;
16
+ /**
17
+ * 注册 QQ 官方平台特有工具(频道列表等)
18
+ */
19
+ private registerQQPlatformTools;
20
+ }
21
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,OAAO,EACP,MAAM,EAKP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D,qBAAa,SAAU,SAAQ,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC7C,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;IAM3D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMzD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAM;IAMzE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAO;IAMrD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAM1C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQ3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;CA2MhC"}
package/lib/adapter.js ADDED
@@ -0,0 +1,263 @@
1
+ /**
2
+ * QQ 官方适配器
3
+ */
4
+ import { Adapter, createGroupManagementTools, GROUP_MANAGEMENT_SKILL_KEYWORDS, GROUP_MANAGEMENT_SKILL_TAGS, } from "zhin.js";
5
+ import { QQBot } from "./bot.js";
6
+ export class QQAdapter extends Adapter {
7
+ constructor(plugin) {
8
+ super(plugin, "qq", []);
9
+ }
10
+ createBot(config) {
11
+ return new QQBot(this, config);
12
+ }
13
+ // ── IGroupManagement 标准群管方法 ──────────────────────────────────
14
+ async kickMember(botId, sceneId, userId) {
15
+ const bot = this.bots.get(botId);
16
+ if (!bot)
17
+ throw new Error(`Bot ${botId} 不存在`);
18
+ return bot.removeGuildMember(sceneId, userId, false);
19
+ }
20
+ async muteMember(botId, sceneId, userId, duration = 600) {
21
+ const bot = this.bots.get(botId);
22
+ if (!bot)
23
+ throw new Error(`Bot ${botId} 不存在`);
24
+ return bot.muteMembers(sceneId, [userId], duration);
25
+ }
26
+ async muteAll(botId, sceneId, enable = true) {
27
+ const bot = this.bots.get(botId);
28
+ if (!bot)
29
+ throw new Error(`Bot ${botId} 不存在`);
30
+ return bot.muteAll(sceneId, enable ? 600 : 0);
31
+ }
32
+ async listMembers(botId, sceneId) {
33
+ const bot = this.bots.get(botId);
34
+ if (!bot)
35
+ throw new Error(`Bot ${botId} 不存在`);
36
+ return bot.getGuildMembers(sceneId);
37
+ }
38
+ async getGroupInfo(botId, sceneId) {
39
+ const bot = this.bots.get(botId);
40
+ if (!bot)
41
+ throw new Error(`Bot ${botId} 不存在`);
42
+ return bot.getGuildInfo(sceneId);
43
+ }
44
+ // ── 生命周期 ───────────────────────────────────────────────────────
45
+ async start() {
46
+ this.registerQQPlatformTools();
47
+ const groupTools = createGroupManagementTools(this, this.name);
48
+ groupTools.forEach((t) => this.addTool(t));
49
+ this.declareSkill({
50
+ description: 'QQ 官方机器人群管理:踢人、禁言、设管理员、改群名、查成员等。仅有昵称时请先 list_members 查 user_id 再操作。',
51
+ keywords: GROUP_MANAGEMENT_SKILL_KEYWORDS,
52
+ tags: GROUP_MANAGEMENT_SKILL_TAGS,
53
+ });
54
+ await super.start();
55
+ }
56
+ /**
57
+ * 注册 QQ 官方平台特有工具(频道列表等)
58
+ */
59
+ registerQQPlatformTools() {
60
+ // 获取频道列表工具
61
+ this.addTool({
62
+ name: 'qq_list_guilds',
63
+ description: '获取 QQ 频道列表',
64
+ parameters: {
65
+ type: 'object',
66
+ properties: {
67
+ bot: { type: 'string', description: 'Bot 名称' },
68
+ },
69
+ required: ['bot'],
70
+ },
71
+ platforms: ['qq'],
72
+ scopes: ['channel'],
73
+ permissionLevel: 'user',
74
+ execute: async (args) => {
75
+ const { bot: botId } = args;
76
+ const bot = this.bots.get(botId);
77
+ if (!bot)
78
+ throw new Error(`Bot ${botId} 不存在`);
79
+ const guilds = await bot.getGuilds();
80
+ return { guilds, count: guilds.length };
81
+ },
82
+ });
83
+ // 获取子频道列表工具
84
+ this.addTool({
85
+ name: 'qq_list_channels',
86
+ description: '获取 QQ 频道下的子频道列表',
87
+ parameters: {
88
+ type: 'object',
89
+ properties: {
90
+ bot: { type: 'string', description: 'Bot 名称' },
91
+ guild_id: { type: 'string', description: '频道 ID' },
92
+ },
93
+ required: ['bot', 'guild_id'],
94
+ },
95
+ platforms: ['qq'],
96
+ scopes: ['channel'],
97
+ permissionLevel: 'user',
98
+ execute: async (args) => {
99
+ const { bot: botId, guild_id } = args;
100
+ const bot = this.bots.get(botId);
101
+ if (!bot)
102
+ throw new Error(`Bot ${botId} 不存在`);
103
+ const channels = await bot.getChannels(guild_id);
104
+ return { channels, count: channels.length };
105
+ },
106
+ });
107
+ // 获取角色列表工具
108
+ this.addTool({
109
+ name: 'qq_list_roles',
110
+ description: '获取 QQ 频道角色列表',
111
+ parameters: {
112
+ type: 'object',
113
+ properties: {
114
+ bot: { type: 'string', description: 'Bot 名称' },
115
+ guild_id: { type: 'string', description: '频道 ID' },
116
+ },
117
+ required: ['bot', 'guild_id'],
118
+ },
119
+ platforms: ['qq'],
120
+ scopes: ['channel'],
121
+ permissionLevel: 'user',
122
+ execute: async (args) => {
123
+ const { bot: botId, guild_id } = args;
124
+ const bot = this.bots.get(botId);
125
+ if (!bot)
126
+ throw new Error(`Bot ${botId} 不存在`);
127
+ const roles = await bot.getGuildRoles(guild_id);
128
+ return { roles, count: roles.length };
129
+ },
130
+ });
131
+ // 创建角色工具
132
+ this.addTool({
133
+ name: 'qq_create_role',
134
+ description: '创建 QQ 频道角色',
135
+ parameters: {
136
+ type: 'object',
137
+ properties: {
138
+ bot: { type: 'string', description: 'Bot 名称' },
139
+ guild_id: { type: 'string', description: '频道 ID' },
140
+ name: { type: 'string', description: '角色名称' },
141
+ color: { type: 'number', description: '颜色(RGB 十进制数值)' },
142
+ },
143
+ required: ['bot', 'guild_id', 'name'],
144
+ },
145
+ platforms: ['qq'],
146
+ scopes: ['channel'],
147
+ permissionLevel: 'group_admin',
148
+ execute: async (args) => {
149
+ const { bot: botId, guild_id, name, color } = args;
150
+ const bot = this.bots.get(botId);
151
+ if (!bot)
152
+ throw new Error(`Bot ${botId} 不存在`);
153
+ const role = await bot.createGuildRole(guild_id, name, color);
154
+ return { success: !!role, role, message: role ? `角色 "${name}" 创建成功` : '创建失败' };
155
+ },
156
+ });
157
+ // 添加角色工具
158
+ this.addTool({
159
+ name: 'qq_add_role',
160
+ description: '给成员添加 QQ 频道角色',
161
+ parameters: {
162
+ type: 'object',
163
+ properties: {
164
+ bot: { type: 'string', description: 'Bot 名称' },
165
+ guild_id: { type: 'string', description: '频道 ID' },
166
+ channel_id: { type: 'string', description: '子频道 ID' },
167
+ user_id: { type: 'string', description: '用户 ID' },
168
+ role_id: { type: 'string', description: '角色 ID' },
169
+ },
170
+ required: ['bot', 'guild_id', 'channel_id', 'user_id', 'role_id'],
171
+ },
172
+ platforms: ['qq'],
173
+ scopes: ['channel'],
174
+ permissionLevel: 'group_admin',
175
+ execute: async (args) => {
176
+ const { bot: botId, guild_id, channel_id, user_id, role_id } = args;
177
+ const bot = this.bots.get(botId);
178
+ if (!bot)
179
+ throw new Error(`Bot ${botId} 不存在`);
180
+ const success = await bot.addMemberRole(guild_id, channel_id, user_id, role_id);
181
+ return { success, message: success ? `已给成员添加角色` : '操作失败' };
182
+ },
183
+ });
184
+ // 移除角色工具
185
+ this.addTool({
186
+ name: 'qq_remove_role',
187
+ description: '移除成员的 QQ 频道角色',
188
+ parameters: {
189
+ type: 'object',
190
+ properties: {
191
+ bot: { type: 'string', description: 'Bot 名称' },
192
+ guild_id: { type: 'string', description: '频道 ID' },
193
+ channel_id: { type: 'string', description: '子频道 ID' },
194
+ user_id: { type: 'string', description: '用户 ID' },
195
+ role_id: { type: 'string', description: '角色 ID' },
196
+ },
197
+ required: ['bot', 'guild_id', 'channel_id', 'user_id', 'role_id'],
198
+ },
199
+ platforms: ['qq'],
200
+ scopes: ['channel'],
201
+ permissionLevel: 'group_admin',
202
+ execute: async (args) => {
203
+ const { bot: botId, guild_id, channel_id, user_id, role_id } = args;
204
+ const bot = this.bots.get(botId);
205
+ if (!bot)
206
+ throw new Error(`Bot ${botId} 不存在`);
207
+ const success = await bot.removeMemberRole(guild_id, channel_id, user_id, role_id);
208
+ return { success, message: success ? `已移除成员的角色` : '操作失败' };
209
+ },
210
+ });
211
+ // 子频道详情
212
+ this.addTool({
213
+ name: 'qq_channel_info',
214
+ description: '获取 QQ 频道中指定子频道的详细信息',
215
+ parameters: {
216
+ type: 'object',
217
+ properties: {
218
+ bot: { type: 'string', description: 'Bot 名称' },
219
+ channel_id: { type: 'string', description: '子频道 ID' },
220
+ },
221
+ required: ['bot', 'channel_id'],
222
+ },
223
+ platforms: ['qq'],
224
+ scopes: ['channel'],
225
+ permissionLevel: 'user',
226
+ execute: async (args) => {
227
+ const { bot: botId, channel_id } = args;
228
+ const bot = this.bots.get(botId);
229
+ if (!bot)
230
+ throw new Error(`Bot ${botId} 不存在`);
231
+ const info = await bot.getChannelInfo(channel_id);
232
+ return info;
233
+ },
234
+ });
235
+ // 单成员详情
236
+ this.addTool({
237
+ name: 'qq_member_detail',
238
+ description: '获取 QQ 频道中指定成员的详细信息',
239
+ parameters: {
240
+ type: 'object',
241
+ properties: {
242
+ bot: { type: 'string', description: 'Bot 名称' },
243
+ guild_id: { type: 'string', description: '频道 ID' },
244
+ user_id: { type: 'string', description: '用户 ID' },
245
+ },
246
+ required: ['bot', 'guild_id', 'user_id'],
247
+ },
248
+ platforms: ['qq'],
249
+ scopes: ['channel'],
250
+ permissionLevel: 'user',
251
+ execute: async (args) => {
252
+ const { bot: botId, guild_id, user_id } = args;
253
+ const bot = this.bots.get(botId);
254
+ if (!bot)
255
+ throw new Error(`Bot ${botId} 不存在`);
256
+ const member = await bot.getGuildMember(guild_id, user_id);
257
+ return member;
258
+ },
259
+ });
260
+ this.plugin.logger.debug('已注册 QQ 官方平台频道管理工具');
261
+ }
262
+ }
263
+ //# 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,102 @@
1
+ /**
2
+ * QQ 官方 Bot 实现
3
+ */
4
+ import { Bot, PrivateMessageEvent, GroupMessageEvent } from "qq-official-bot";
5
+ import { Bot as ZhinBot, Message, SendOptions } from "zhin.js";
6
+ import type { QQBotConfig, ReceiverMode, ApplicationPlatform } from "./types.js";
7
+ import type { QQAdapter } from "./adapter.js";
8
+ export declare class QQBot<T extends ReceiverMode, M extends ApplicationPlatform = ApplicationPlatform> extends Bot implements ZhinBot<QQBotConfig<T, M>, PrivateMessageEvent | GroupMessageEvent> {
9
+ adapter: QQAdapter;
10
+ $connected: boolean;
11
+ $config: QQBotConfig<T, M>;
12
+ get pluginLogger(): import("zhin.js").Logger;
13
+ get $id(): string;
14
+ constructor(adapter: QQAdapter, config: QQBotConfig<T, M>);
15
+ private handleQQMessage;
16
+ $connect(): Promise<void>;
17
+ $disconnect(): Promise<void>;
18
+ $formatMessage(msg: PrivateMessageEvent | GroupMessageEvent): Message<PrivateMessageEvent | GroupMessageEvent>;
19
+ $sendMessage(options: SendOptions): Promise<string>;
20
+ $recallMessage(id: string): Promise<void>;
21
+ /**
22
+ * 获取频道列表
23
+ */
24
+ getGuilds(): Promise<any[]>;
25
+ /**
26
+ * 获取频道详情
27
+ * @param guildId 频道 ID
28
+ */
29
+ getGuildInfo(guildId: string): Promise<any>;
30
+ /**
31
+ * 获取子频道列表
32
+ * @param guildId 频道 ID
33
+ */
34
+ getChannels(guildId: string): Promise<any[]>;
35
+ /**
36
+ * 获取子频道详情
37
+ * @param channelId 子频道 ID
38
+ */
39
+ getChannelInfo(channelId: string): Promise<any>;
40
+ /**
41
+ * 获取频道成员列表
42
+ * @param guildId 频道 ID
43
+ */
44
+ getGuildMembers(guildId: string): Promise<any[]>;
45
+ /**
46
+ * 获取频道成员详情
47
+ * @param guildId 频道 ID
48
+ * @param userId 用户 ID
49
+ */
50
+ getGuildMember(guildId: string, userId: string): Promise<any>;
51
+ /**
52
+ * 删除频道成员(踢出)
53
+ * @param guildId 频道 ID
54
+ * @param userId 用户 ID
55
+ * @param addBlacklist 是否加入黑名单
56
+ * @param deleteHistoryMsg 删除历史消息天数 (-1不删除,0全部删除,3/7/15/30)
57
+ */
58
+ removeGuildMember(guildId: string, userId: string, addBlacklist?: boolean, deleteHistoryMsg?: -1 | 0 | 3 | 7 | 15 | 30): Promise<boolean>;
59
+ /**
60
+ * 获取频道角色列表
61
+ * @param guildId 频道 ID
62
+ */
63
+ getGuildRoles(guildId: string): Promise<any[]>;
64
+ /**
65
+ * 创建频道角色
66
+ * @param guildId 频道 ID
67
+ * @param name 角色名
68
+ * @param color 颜色
69
+ * @param hoist 是否在成员列表中单独展示 (0 或 1)
70
+ */
71
+ createGuildRole(guildId: string, name: string, color?: number, hoist?: 0 | 1): Promise<any>;
72
+ /**
73
+ * 给成员添加角色
74
+ * @param guildId 频道 ID
75
+ * @param channelId 子频道 ID
76
+ * @param userId 用户 ID
77
+ * @param roleId 角色 ID
78
+ */
79
+ addMemberRole(guildId: string, channelId: string, userId: string, roleId: string): Promise<boolean>;
80
+ /**
81
+ * 移除成员角色
82
+ * @param guildId 频道 ID
83
+ * @param channelId 子频道 ID
84
+ * @param userId 用户 ID
85
+ * @param roleId 角色 ID
86
+ */
87
+ removeMemberRole(guildId: string, channelId: string, userId: string, roleId: string): Promise<boolean>;
88
+ /**
89
+ * 禁言成员(批量)
90
+ * @param guildId 频道 ID
91
+ * @param userIds 用户 ID 列表
92
+ * @param muteSeconds 禁言时长(秒),0 表示解除禁言
93
+ */
94
+ muteMembers(guildId: string, userIds: string[], muteSeconds: number): Promise<boolean>;
95
+ /**
96
+ * 全员禁言
97
+ * @param guildId 频道 ID
98
+ * @param muteSeconds 禁言时长(秒),0 表示解除禁言
99
+ */
100
+ muteAll(guildId: string, muteSeconds: number): Promise<boolean>;
101
+ }
102
+ //# 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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"}