@zhin.js/adapter-kook 2.0.12 → 3.0.1

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/src/index.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  import path from "node:path";
5
5
  import { usePlugin, type Plugin, type IGroupManagement, createGroupManagementTools, type ToolFeature } from "zhin.js";
6
6
  import { KookAdapter } from "./adapter.js";
7
+ import { kookGroupPermitResolver, platformPermit, registerKookPlatformPermitChecker } from "./platform-permit.js";
7
8
  import { PageManager } from "@zhin.js/host-api";
8
9
 
9
10
  declare module "zhin.js" {
@@ -21,7 +22,7 @@ declare module "zhin.js" {
21
22
  }
22
23
 
23
24
  export * from "./types.js";
24
- export { KookBot } from "./bot.js";
25
+ export { KookEndpoint } from "./endpoint.js";
25
26
  export { KookAdapter } from "./adapter.js";
26
27
 
27
28
  const plugin = usePlugin();
@@ -41,11 +42,14 @@ provide({
41
42
  });
42
43
 
43
44
  useContext('tool', 'kook', (toolService: ToolFeature, kook: KookAdapter) => {
45
+ const disposers: (() => void)[] = [];
46
+ disposers.push(registerKookPlatformPermitChecker());
44
47
  const groupTools = createGroupManagementTools(
45
48
  kook as unknown as IGroupManagement,
46
49
  'kook',
50
+ { permitResolver: kookGroupPermitResolver, registerChecker: false },
47
51
  );
48
- const disposers: (() => void)[] = groupTools.map(t => toolService.addTool(t, plugin.name));
52
+ disposers.push(...groupTools.map(t => toolService.addTool(t, plugin.name)));
49
53
 
50
54
  disposers.push(toolService.addTool({
51
55
  name: 'kook_grant_role',
@@ -53,19 +57,20 @@ useContext('tool', 'kook', (toolService: ToolFeature, kook: KookAdapter) => {
53
57
  parameters: {
54
58
  type: 'object',
55
59
  properties: {
56
- bot: { type: 'string', description: 'Bot 名称' },
60
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
57
61
  guild_id: { type: 'string', description: '服务器 ID' },
58
62
  user_id: { type: 'string', description: '用户 ID' },
59
63
  role_id: { type: 'string', description: '角色 ID' },
60
64
  },
61
- required: ['bot', 'guild_id', 'user_id', 'role_id'],
65
+ required: ['endpoint_id', 'guild_id', 'user_id', 'role_id'],
62
66
  },
63
67
  platforms: ['kook'],
64
68
  tags: ['kook'],
69
+ permissions: [platformPermit('manage_roles')],
65
70
  execute: async (args: Record<string, any>) => {
66
- const bot = kook.bots.get(args.bot);
67
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
68
- const success = await bot.grantRole(args.guild_id, args.user_id, args.role_id);
71
+ const endpoint = kook.endpoints.get(args.endpoint_id);
72
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
73
+ const success = await endpoint.grantRole(args.guild_id, args.user_id, args.role_id);
69
74
  return { success, message: success ? `已授予用户 ${args.user_id} 角色 ${args.role_id}` : '授予角色失败' };
70
75
  },
71
76
  }, plugin.name));
@@ -76,19 +81,20 @@ useContext('tool', 'kook', (toolService: ToolFeature, kook: KookAdapter) => {
76
81
  parameters: {
77
82
  type: 'object',
78
83
  properties: {
79
- bot: { type: 'string', description: 'Bot 名称' },
84
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
80
85
  guild_id: { type: 'string', description: '服务器 ID' },
81
86
  user_id: { type: 'string', description: '用户 ID' },
82
87
  role_id: { type: 'string', description: '角色 ID' },
83
88
  },
84
- required: ['bot', 'guild_id', 'user_id', 'role_id'],
89
+ required: ['endpoint_id', 'guild_id', 'user_id', 'role_id'],
85
90
  },
86
91
  platforms: ['kook'],
87
92
  tags: ['kook'],
93
+ permissions: [platformPermit('manage_roles')],
88
94
  execute: async (args: Record<string, any>) => {
89
- const bot = kook.bots.get(args.bot);
90
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
91
- const success = await bot.revokeRole(args.guild_id, args.user_id, args.role_id);
95
+ const endpoint = kook.endpoints.get(args.endpoint_id);
96
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
97
+ const success = await endpoint.revokeRole(args.guild_id, args.user_id, args.role_id);
92
98
  return { success, message: success ? `已撤销用户 ${args.user_id} 的角色 ${args.role_id}` : '撤销角色失败' };
93
99
  },
94
100
  }, plugin.name));
@@ -99,17 +105,17 @@ useContext('tool', 'kook', (toolService: ToolFeature, kook: KookAdapter) => {
99
105
  parameters: {
100
106
  type: 'object',
101
107
  properties: {
102
- bot: { type: 'string', description: 'Bot 名称' },
108
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
103
109
  guild_id: { type: 'string', description: '服务器 ID' },
104
110
  },
105
- required: ['bot', 'guild_id'],
111
+ required: ['endpoint_id', 'guild_id'],
106
112
  },
107
113
  platforms: ['kook'],
108
114
  tags: ['kook'],
109
115
  execute: async (args: Record<string, any>) => {
110
- const bot = kook.bots.get(args.bot);
111
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
112
- const roles = await bot.getRoleList(args.guild_id);
116
+ const endpoint = kook.endpoints.get(args.endpoint_id);
117
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
118
+ const roles = await endpoint.getRoleList(args.guild_id);
113
119
  return {
114
120
  roles: roles.map((r: any) => ({
115
121
  id: r.role_id,
@@ -129,18 +135,19 @@ useContext('tool', 'kook', (toolService: ToolFeature, kook: KookAdapter) => {
129
135
  parameters: {
130
136
  type: 'object',
131
137
  properties: {
132
- bot: { type: 'string', description: 'Bot 名称' },
138
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
133
139
  guild_id: { type: 'string', description: '服务器 ID' },
134
140
  name: { type: 'string', description: '角色名称' },
135
141
  },
136
- required: ['bot', 'guild_id', 'name'],
142
+ required: ['endpoint_id', 'guild_id', 'name'],
137
143
  },
138
144
  platforms: ['kook'],
139
145
  tags: ['kook'],
146
+ permissions: [platformPermit('guild_owner')],
140
147
  execute: async (args: Record<string, any>) => {
141
- const bot = kook.bots.get(args.bot);
142
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
143
- const role = await bot.createRole(args.guild_id, args.name);
148
+ const endpoint = kook.endpoints.get(args.endpoint_id);
149
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
150
+ const role = await endpoint.createRole(args.guild_id, args.name);
144
151
  return {
145
152
  success: true,
146
153
  message: `已创建角色 "${args.name}"`,
@@ -155,18 +162,19 @@ useContext('tool', 'kook', (toolService: ToolFeature, kook: KookAdapter) => {
155
162
  parameters: {
156
163
  type: 'object',
157
164
  properties: {
158
- bot: { type: 'string', description: 'Bot 名称' },
165
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
159
166
  guild_id: { type: 'string', description: '服务器 ID' },
160
167
  role_id: { type: 'string', description: '角色 ID' },
161
168
  },
162
- required: ['bot', 'guild_id', 'role_id'],
169
+ required: ['endpoint_id', 'guild_id', 'role_id'],
163
170
  },
164
171
  platforms: ['kook'],
165
172
  tags: ['kook'],
173
+ permissions: [platformPermit('guild_owner')],
166
174
  execute: async (args: Record<string, any>) => {
167
- const bot = kook.bots.get(args.bot);
168
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
169
- const success = await bot.deleteRole(args.guild_id, args.role_id);
175
+ const endpoint = kook.endpoints.get(args.endpoint_id);
176
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
177
+ const success = await endpoint.deleteRole(args.guild_id, args.role_id);
170
178
  return { success, message: success ? `已删除角色 ${args.role_id}` : '删除角色失败' };
171
179
  },
172
180
  }, plugin.name));
@@ -177,26 +185,27 @@ useContext('tool', 'kook', (toolService: ToolFeature, kook: KookAdapter) => {
177
185
  parameters: {
178
186
  type: 'object',
179
187
  properties: {
180
- bot: { type: 'string', description: 'Bot 名称' },
188
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
181
189
  guild_id: { type: 'string', description: '服务器 ID' },
182
190
  action: { type: 'string', description: 'add|remove', enum: ['add', 'remove'] },
183
191
  user_id: { type: 'string', description: '用户 ID' },
184
192
  remark: { type: 'string', description: '备注(add 可选)' },
185
193
  },
186
- required: ['bot', 'guild_id', 'action', 'user_id'],
194
+ required: ['endpoint_id', 'guild_id', 'action', 'user_id'],
187
195
  },
188
196
  platforms: ['kook'],
189
197
  tags: ['kook'],
198
+ permissions: [platformPermit('guild_admin')],
190
199
  execute: async (args: Record<string, any>) => {
191
- const bot = kook.bots.get(args.bot);
192
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
200
+ const endpoint = kook.endpoints.get(args.endpoint_id);
201
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
193
202
  switch (args.action) {
194
203
  case 'add': {
195
- const success = await bot.addToBlacklist(args.guild_id, args.user_id, args.remark);
204
+ const success = await endpoint.addToBlacklist(args.guild_id, args.user_id, args.remark);
196
205
  return { success, message: success ? `已将 ${args.user_id} 加入黑名单` : '操作失败' };
197
206
  }
198
207
  case 'remove': {
199
- const success = await bot.removeFromBlacklist(args.guild_id, args.user_id);
208
+ const success = await endpoint.removeFromBlacklist(args.guild_id, args.user_id);
200
209
  return { success, message: success ? `已将 ${args.user_id} 从黑名单移除` : '操作失败' };
201
210
  }
202
211
  default:
@@ -219,62 +228,62 @@ useContext("web", (pageManager) => {
219
228
  });
220
229
 
221
230
  useContext("router", "kook", (router: any, kook: KookAdapter) => {
222
- router.get("/api/kook/bots", async (ctx: any) => {
231
+ router.get("/api/kook/endpoints", async (ctx: any) => {
223
232
  try {
224
- const bots = Array.from(kook.bots.values());
225
- const result = bots.map((bot: any) => {
233
+ const endpoints = Array.from(kook.endpoints.values());
234
+ const result = endpoints.map((endpoint: any) => {
226
235
  try {
227
236
  return {
228
- name: bot.$config.name,
229
- connected: bot.$connected || false,
230
- guildCount: bot.guilds?.size || 0,
231
- status: bot.$connected ? "online" : "offline",
237
+ name: endpoint.$config.name,
238
+ connected: endpoint.$connected || false,
239
+ guildCount: endpoint.guilds?.size || 0,
240
+ status: endpoint.$connected ? "online" : "offline",
232
241
  };
233
242
  } catch {
234
- return { name: bot.$config.name, connected: false, guildCount: 0, status: "error" };
243
+ return { name: endpoint.$config.name, connected: false, guildCount: 0, status: "error" };
235
244
  }
236
245
  });
237
246
  ctx.body = { success: true, data: result };
238
247
  } catch {
239
248
  ctx.status = 500;
240
- ctx.body = { success: false, error: "获取机器人数据失败" };
249
+ ctx.body = { success: false, error: "获取 Endpoint 数据失败" };
241
250
  }
242
251
  });
243
252
 
244
- // Bot 连接/断开
245
- router.post("/api/kook/bots/:name/connect", async (ctx: any) => {
253
+ // Endpoint 连接/断开
254
+ router.post("/api/kook/endpoints/:name/connect", async (ctx: any) => {
246
255
  try {
247
- const bot = kook.bots.get(ctx.params.name);
248
- if (!bot) { ctx.status = 404; ctx.body = { success: false, error: "Bot 不存在" }; return; }
249
- if (bot.$connected) { ctx.body = { success: true, message: "已经在线" }; return; }
250
- await bot.$connect();
256
+ const endpoint = kook.endpoints.get(ctx.params.name);
257
+ if (!endpoint) { ctx.status = 404; ctx.body = { success: false, error: "Endpoint 不存在" }; return; }
258
+ if (endpoint.$connected) { ctx.body = { success: true, message: "已经在线" }; return; }
259
+ await endpoint.$connect();
251
260
  ctx.body = { success: true, message: "连接成功" };
252
- } catch (e: any) {
261
+ } catch (e: unknown) {
253
262
  ctx.status = 500;
254
- ctx.body = { success: false, error: e?.message || "连接失败" };
263
+ ctx.body = { success: false, error: e instanceof Error ? e.message : "连接失败" };
255
264
  }
256
265
  });
257
266
 
258
- router.post("/api/kook/bots/:name/disconnect", async (ctx: any) => {
267
+ router.post("/api/kook/endpoints/:name/disconnect", async (ctx: any) => {
259
268
  try {
260
- const bot = kook.bots.get(ctx.params.name);
261
- if (!bot) { ctx.status = 404; ctx.body = { success: false, error: "Bot 不存在" }; return; }
262
- if (!bot.$connected) { ctx.body = { success: true, message: "已经离线" }; return; }
263
- await bot.$disconnect();
269
+ const endpoint = kook.endpoints.get(ctx.params.name);
270
+ if (!endpoint) { ctx.status = 404; ctx.body = { success: false, error: "Endpoint 不存在" }; return; }
271
+ if (!endpoint.$connected) { ctx.body = { success: true, message: "已经离线" }; return; }
272
+ await endpoint.$disconnect();
264
273
  ctx.body = { success: true, message: "已断开" };
265
- } catch (e: any) {
274
+ } catch (e: unknown) {
266
275
  ctx.status = 500;
267
- ctx.body = { success: false, error: e?.message || "断开失败" };
276
+ ctx.body = { success: false, error: e instanceof Error ? e.message : "断开失败" };
268
277
  }
269
278
  });
270
279
 
271
280
  // 角色列表
272
- router.get("/api/kook/bots/:name/guilds/:guildId/roles", async (ctx: any) => {
281
+ router.get("/api/kook/endpoints/:name/guilds/:guildId/roles", async (ctx: any) => {
273
282
  try {
274
- const bot: any = kook.bots.get(ctx.params.name);
275
- if (!bot) { ctx.status = 404; ctx.body = { success: false, error: "Bot 不存在" }; return; }
276
- if (!bot.$connected) { ctx.status = 400; ctx.body = { success: false, error: "Bot 未连接" }; return; }
277
- const roles = await bot.getRoleList(ctx.params.guildId);
283
+ const endpoint: any = kook.endpoints.get(ctx.params.name);
284
+ if (!endpoint) { ctx.status = 404; ctx.body = { success: false, error: "Endpoint 不存在" }; return; }
285
+ if (!endpoint.$connected) { ctx.status = 400; ctx.body = { success: false, error: "Endpoint 未连接" }; return; }
286
+ const roles = await endpoint.getRoleList(ctx.params.guildId);
278
287
  ctx.body = {
279
288
  success: true,
280
289
  data: roles.map((r: any) => ({
@@ -284,39 +293,39 @@ useContext("router", "kook", (router: any, kook: KookAdapter) => {
284
293
  position: r.position,
285
294
  })),
286
295
  };
287
- } catch (e: any) {
296
+ } catch (e: unknown) {
288
297
  ctx.status = 500;
289
- ctx.body = { success: false, error: e?.message || "获取角色列表失败" };
298
+ ctx.body = { success: false, error: e instanceof Error ? e.message : "获取角色列表失败" };
290
299
  }
291
300
  });
292
301
 
293
302
  // 创建角色
294
- router.post("/api/kook/bots/:name/guilds/:guildId/roles", async (ctx: any) => {
303
+ router.post("/api/kook/endpoints/:name/guilds/:guildId/roles", async (ctx: any) => {
295
304
  try {
296
- const bot: any = kook.bots.get(ctx.params.name);
297
- if (!bot) { ctx.status = 404; ctx.body = { success: false, error: "Bot 不存在" }; return; }
298
- if (!bot.$connected) { ctx.status = 400; ctx.body = { success: false, error: "Bot 未连接" }; return; }
305
+ const endpoint: any = kook.endpoints.get(ctx.params.name);
306
+ if (!endpoint) { ctx.status = 404; ctx.body = { success: false, error: "Endpoint 不存在" }; return; }
307
+ if (!endpoint.$connected) { ctx.status = 400; ctx.body = { success: false, error: "Endpoint 未连接" }; return; }
299
308
  const { name } = ctx.request.body || {};
300
309
  if (!name) { ctx.status = 400; ctx.body = { success: false, error: "缺少角色名称" }; return; }
301
- const role = await bot.createRole(ctx.params.guildId, name);
310
+ const role = await endpoint.createRole(ctx.params.guildId, name);
302
311
  ctx.body = { success: true, data: { id: role.role_id, name: role.name } };
303
- } catch (e: any) {
312
+ } catch (e: unknown) {
304
313
  ctx.status = 500;
305
- ctx.body = { success: false, error: e?.message || "创建角色失败" };
314
+ ctx.body = { success: false, error: e instanceof Error ? e.message : "创建角色失败" };
306
315
  }
307
316
  });
308
317
 
309
318
  // 删除角色
310
- router.delete("/api/kook/bots/:name/guilds/:guildId/roles/:roleId", async (ctx: any) => {
319
+ router.delete("/api/kook/endpoints/:name/guilds/:guildId/roles/:roleId", async (ctx: any) => {
311
320
  try {
312
- const bot: any = kook.bots.get(ctx.params.name);
313
- if (!bot) { ctx.status = 404; ctx.body = { success: false, error: "Bot 不存在" }; return; }
314
- if (!bot.$connected) { ctx.status = 400; ctx.body = { success: false, error: "Bot 未连接" }; return; }
315
- const success = await bot.deleteRole(ctx.params.guildId, ctx.params.roleId);
321
+ const endpoint: any = kook.endpoints.get(ctx.params.name);
322
+ if (!endpoint) { ctx.status = 404; ctx.body = { success: false, error: "Endpoint 不存在" }; return; }
323
+ if (!endpoint.$connected) { ctx.status = 400; ctx.body = { success: false, error: "Endpoint 未连接" }; return; }
324
+ const success = await endpoint.deleteRole(ctx.params.guildId, ctx.params.roleId);
316
325
  ctx.body = { success, message: success ? "角色已删除" : "删除失败" };
317
- } catch (e: any) {
326
+ } catch (e: unknown) {
318
327
  ctx.status = 500;
319
- ctx.body = { success: false, error: e?.message || "删除角色失败" };
328
+ ctx.body = { success: false, error: e instanceof Error ? e.message : "删除角色失败" };
320
329
  }
321
330
  });
322
331
  });
@@ -160,7 +160,7 @@ export function enrichKookGatewayForPlugins(event: KookGatewayEvent): KookGatewa
160
160
 
161
161
  export function formatKookNotice(
162
162
  event: KookGatewayEvent,
163
- botName: string,
163
+ endpointName: string,
164
164
  ): ReturnType<typeof Notice.from<KookGatewayEvent>> {
165
165
  const extra = event.extra ?? {};
166
166
  const body = extra.body ?? {};
@@ -182,7 +182,7 @@ export function formatKookNotice(
182
182
  return Notice.from(event, {
183
183
  $id: resolveKookSideEventDedupeKey(event, "notice"),
184
184
  $adapter: "kook",
185
- $bot: botName,
185
+ $endpoint: endpointName,
186
186
  $type,
187
187
  $subType: mapped ? rawType : undefined,
188
188
  $channel: channel,
@@ -197,6 +197,6 @@ export function formatKookNoticeLog(notice: ReturnType<typeof formatKookNotice>)
197
197
  notice: notice.$type,
198
198
  kook_type: notice.$subType,
199
199
  channel: `${notice.$channel.type}(${notice.$channel.id})`,
200
- bot: notice.$bot,
200
+ endpoint: notice.$endpoint,
201
201
  });
202
202
  }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * KOOK platform permit — guild / channel 差异化门禁
3
+ */
4
+ import type { Message } from 'zhin.js';
5
+ import { registerPlatformPermitChecker } from 'zhin.js';
6
+ import { KookPermission } from './types.js';
7
+ import type { KookSenderInfo } from './types.js';
8
+
9
+ const ADAPTER = 'kook';
10
+
11
+ export function platformPermit(perm: string): string {
12
+ return `platform(${ADAPTER},${perm})`;
13
+ }
14
+
15
+ const FACTORY_PERM_MAP: Record<string, string> = {
16
+ group_admin: 'guild_admin',
17
+ group_owner: 'guild_owner',
18
+ };
19
+
20
+ export function kookGroupPermitResolver(logicalPerm: string): string {
21
+ return platformPermit(FACTORY_PERM_MAP[logicalPerm] ?? logicalPerm);
22
+ }
23
+
24
+ export function normalizeKookSenderForPermit(
25
+ info: KookSenderInfo,
26
+ isChannel: boolean,
27
+ ): { role?: string; permissions?: string[] } {
28
+ const permissions: string[] = [];
29
+ if (info.roles?.length) {
30
+ permissions.push(...info.roles.map((r) => `role:${r}`));
31
+ }
32
+
33
+ if (info.isGuildOwner || info.permission === KookPermission.Owner) {
34
+ permissions.push('guild_owner', 'guild_admin');
35
+ return { role: 'owner', permissions };
36
+ }
37
+ if (info.permission === KookPermission.ChannelAdmin && isChannel) {
38
+ permissions.push('channel_admin', 'guild_admin');
39
+ return { role: 'channel_admin', permissions };
40
+ }
41
+ if (info.isAdmin || info.permission === KookPermission.Admin) {
42
+ permissions.push('guild_admin');
43
+ return { role: 'admin', permissions };
44
+ }
45
+ return { role: 'member', permissions };
46
+ }
47
+
48
+ function senderPermits(message: Message<any>): { role?: string; permissions: string[] } {
49
+ const sender = message.$sender as KookSenderInfo & { role?: string; permissions?: string[] };
50
+ const permissions = [...(sender.permissions ?? [])];
51
+ if (sender.isGuildOwner) permissions.push('guild_owner');
52
+ if (sender.isAdmin) permissions.push('guild_admin');
53
+ if (sender.permission === KookPermission.ChannelAdmin) permissions.push('channel_admin');
54
+ return { role: sender.role, permissions };
55
+ }
56
+
57
+ export function checkKookPlatformPermit(perm: string, message: Message<any>): boolean {
58
+ const { role, permissions } = senderPermits(message);
59
+ const has = (t: string) => permissions.includes(t);
60
+
61
+ switch (perm) {
62
+ case 'guild_owner':
63
+ return role === 'owner' || has('guild_owner');
64
+ case 'guild_admin':
65
+ return role === 'owner' || role === 'admin' || role === 'channel_admin' || has('guild_admin') || has('channel_admin');
66
+ case 'channel_admin':
67
+ return role === 'owner' || role === 'admin' || role === 'channel_admin' || has('channel_admin') || has('guild_admin');
68
+ case 'manage_roles':
69
+ return role === 'owner' || role === 'admin' || has('guild_owner') || has('guild_admin');
70
+ default:
71
+ return false;
72
+ }
73
+ }
74
+
75
+ export function registerKookPlatformPermitChecker(): () => void {
76
+ return registerPlatformPermitChecker(ADAPTER, checkKookPlatformPermit);
77
+ }
package/src/types.ts CHANGED
@@ -20,6 +20,9 @@ export interface KookSenderInfo {
20
20
  roles?: number[];
21
21
  isGuildOwner?: boolean;
22
22
  isAdmin?: boolean;
23
+ /** 归一化平台身份(供 platform checker) */
24
+ role?: string;
25
+ permissions?: string[];
23
26
  }
24
27
 
25
28
  export interface KookTypingIndicatorConfig {
@@ -40,7 +43,7 @@ export interface KookTypingIndicatorConfig {
40
43
  };
41
44
  }
42
45
 
43
- export interface KookBotConfig {
46
+ export interface KookEndpointConfig {
44
47
  context: "kook";
45
48
  name: string;
46
49
  token: string;
package/lib/bot.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
package/lib/bot.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}