@zhin.js/adapter-kook 1.0.84 → 1.1.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 (84) hide show
  1. package/CHANGELOG.md +898 -17
  2. package/PERMITS.md +23 -0
  3. package/README.md +73 -374
  4. package/adapters/kook/index.js +41 -0
  5. package/adapters/kook/index.ts +56 -0
  6. package/agents/kook/agent.json +20 -0
  7. package/agents/kook/boundaries.md +3 -0
  8. package/agents/kook/conventions.md +3 -0
  9. package/agents/kook/skills/kook/SKILL.md +20 -0
  10. package/agents/kook/skills/kook/tools/blacklist/index.js +31 -0
  11. package/agents/kook/skills/kook/tools/blacklist/index.ts +31 -0
  12. package/agents/kook/skills/kook/tools/create_role/index.js +23 -0
  13. package/agents/kook/skills/kook/tools/create_role/index.ts +23 -0
  14. package/agents/kook/skills/kook/tools/delete_role/index.js +19 -0
  15. package/agents/kook/skills/kook/tools/delete_role/index.ts +19 -0
  16. package/agents/kook/skills/kook/tools/grant_role/index.js +20 -0
  17. package/agents/kook/skills/kook/tools/grant_role/index.ts +20 -0
  18. package/agents/kook/skills/kook/tools/list_roles/index.js +25 -0
  19. package/agents/kook/skills/kook/tools/list_roles/index.ts +25 -0
  20. package/agents/kook/skills/kook/tools/revoke_role/index.js +20 -0
  21. package/agents/kook/skills/kook/tools/revoke_role/index.ts +20 -0
  22. package/agents/kook/system.md +3 -0
  23. package/commands/kook/endpoint/add/[id]/index.js +3 -0
  24. package/commands/kook/endpoint/add/[id]/index.ts +3 -0
  25. package/commands/kook/endpoint/definition.js +19 -0
  26. package/commands/kook/endpoint/definition.ts +19 -0
  27. package/commands/kook/endpoint/list/index.js +3 -0
  28. package/commands/kook/endpoint/list/index.ts +3 -0
  29. package/commands/kook/endpoint/remove/[id]/index.js +3 -0
  30. package/commands/kook/endpoint/remove/[id]/index.ts +3 -0
  31. package/lib/client.d.ts +11 -0
  32. package/lib/client.js +2 -0
  33. package/lib/endpoint.d.ts +59 -0
  34. package/lib/endpoint.js +374 -0
  35. package/lib/index.d.ts +6 -18
  36. package/lib/index.js +6 -342
  37. package/lib/kook-runtime-state.d.ts +1 -0
  38. package/lib/kook-runtime-state.js +6 -0
  39. package/lib/platform-permit.d.ts +22 -0
  40. package/lib/platform-permit.js +48 -0
  41. package/lib/protocol.d.ts +126 -0
  42. package/lib/protocol.js +300 -0
  43. package/lib/side-event-dispatch.d.ts +3 -0
  44. package/lib/side-event-dispatch.js +49 -0
  45. package/lib/webhook.d.ts +16 -0
  46. package/lib/webhook.js +71 -0
  47. package/lib/ws.d.ts +56 -0
  48. package/lib/ws.js +63 -0
  49. package/package.json +73 -29
  50. package/plugin.js +19 -0
  51. package/schema.json +171 -0
  52. package/src/client.ts +15 -0
  53. package/src/endpoint.ts +433 -0
  54. package/src/index.ts +45 -322
  55. package/src/kook-runtime-state.ts +7 -0
  56. package/src/platform-permit.ts +75 -0
  57. package/src/protocol.ts +433 -0
  58. package/src/side-event-dispatch.ts +54 -0
  59. package/src/webhook.ts +114 -0
  60. package/src/ws.ts +131 -0
  61. package/client/Dashboard.tsx +0 -255
  62. package/client/index.tsx +0 -11
  63. package/client/tsconfig.json +0 -7
  64. package/client/utils/api.ts +0 -17
  65. package/dist/index.js +0 -31
  66. package/lib/adapter.d.ts +0 -26
  67. package/lib/adapter.d.ts.map +0 -1
  68. package/lib/adapter.js +0 -61
  69. package/lib/adapter.js.map +0 -1
  70. package/lib/bot.d.ts +0 -122
  71. package/lib/bot.d.ts.map +0 -1
  72. package/lib/bot.js +0 -608
  73. package/lib/bot.js.map +0 -1
  74. package/lib/index.d.ts.map +0 -1
  75. package/lib/index.js.map +0 -1
  76. package/lib/types.d.ts +0 -32
  77. package/lib/types.d.ts.map +0 -1
  78. package/lib/types.js +0 -8
  79. package/lib/types.js.map +0 -1
  80. package/plugin.yml +0 -3
  81. package/skills/kook/SKILL.md +0 -80
  82. package/src/adapter.ts +0 -71
  83. package/src/bot.ts +0 -693
  84. package/src/types.ts +0 -36
package/lib/types.d.ts DELETED
@@ -1,32 +0,0 @@
1
- /**
2
- * KOOK 适配器类型与配置
3
- */
4
- import type { PrivateMessageEvent, ChannelMessageEvent } from "kook-client";
5
- import type { LogLevel } from "kook-client";
6
- export type { LogLevel };
7
- export declare enum KookPermission {
8
- Normal = 1,
9
- Admin = 2,
10
- Owner = 4,
11
- ChannelAdmin = 5
12
- }
13
- export interface KookSenderInfo {
14
- id: string;
15
- name: string;
16
- permission?: KookPermission;
17
- roles?: number[];
18
- isGuildOwner?: boolean;
19
- isAdmin?: boolean;
20
- }
21
- export interface KookBotConfig {
22
- context: "kook";
23
- name: string;
24
- token: string;
25
- data_dir?: string;
26
- timeout?: number;
27
- max_retry?: number;
28
- ignore?: "bot" | "self";
29
- logLevel?: LogLevel;
30
- }
31
- export type KookRawMessage = PrivateMessageEvent | ChannelMessageEvent;
32
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,YAAY,EAAE,QAAQ,EAAE,CAAC;AAEzB,oBAAY,cAAc;IACxB,MAAM,IAAI;IACV,KAAK,IAAI;IACT,KAAK,IAAI;IACT,YAAY,IAAI;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,mBAAmB,CAAC"}
package/lib/types.js DELETED
@@ -1,8 +0,0 @@
1
- export var KookPermission;
2
- (function (KookPermission) {
3
- KookPermission[KookPermission["Normal"] = 1] = "Normal";
4
- KookPermission[KookPermission["Admin"] = 2] = "Admin";
5
- KookPermission[KookPermission["Owner"] = 4] = "Owner";
6
- KookPermission[KookPermission["ChannelAdmin"] = 5] = "ChannelAdmin";
7
- })(KookPermission || (KookPermission = {}));
8
- //# sourceMappingURL=types.js.map
package/lib/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAQA,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,uDAAU,CAAA;IACV,qDAAS,CAAA;IACT,qDAAS,CAAA;IACT,mEAAgB,CAAA;AAClB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB"}
package/plugin.yml DELETED
@@ -1,3 +0,0 @@
1
- name: adapter-kook
2
- description: KOOK 适配器:服务器管理、角色管理、黑名单
3
- version: 1.0.59
@@ -1,80 +0,0 @@
1
- ---
2
- name: kook
3
- platforms:
4
- - kook
5
- description: >-
6
- KOOK 服务器管理能力。当用户在 KOOK 中请求群管(踢人、封禁、解封、改昵称)、
7
- 角色管理(创建/删除/授予/撤销角色)、黑名单操作或查询成员列表时使用。
8
- 即使用户没有提到 KOOK,只要上下文是 KOOK 场景且涉及上述操作,就应触发。
9
- 仅有昵称时必须先 list_members 获取 user_id。
10
- keywords:
11
- - kook
12
- - KOOK
13
- - adapter:kook
14
- - 群管理
15
- - 角色
16
- - 黑名单
17
- - 封禁
18
- - list_members
19
- tags:
20
- - group
21
- - management
22
- - im
23
- tools:
24
- - kook_grant_role
25
- - kook_revoke_role
26
- - kook_list_roles
27
- - kook_create_role
28
- - kook_delete_role
29
- - kook_blacklist
30
- - kook_kick_member
31
- - kook_ban_member
32
- - kook_unban_member
33
- - kook_set_nickname
34
- - kook_list_members
35
- ---
36
-
37
- # KOOK 服务器管理技能
38
-
39
- KOOK 的管理模型类似 Discord,以角色为核心。此技能覆盖成员管理和角色系统。
40
-
41
- ## 核心原则
42
-
43
- ### ID 获取链
44
-
45
- 操作成员需要 KOOK 用户 ID,操作角色需要角色 ID:
46
- - `kook_list_members` → 获取用户 ID
47
- - `kook_list_roles` → 获取角色 ID
48
-
49
- ### 黑名单 ≠ 踢人
50
-
51
- `kook_blacklist` 是永久性封禁,被拉黑的用户无法再加入服务器。`kook_kick_member` 只是移除,用户可以通过邀请重新加入。
52
-
53
- ## 工具详解
54
-
55
- ### 成员管理
56
-
57
- | 工具 | 用途 | 说明 |
58
- |------|------|------|
59
- | `kook_kick_member` | 踢出 | 可重新加入 |
60
- | `kook_ban_member` | 封禁 | 阻止重新加入 |
61
- | `kook_unban_member` | 解除封禁 | — |
62
- | `kook_set_nickname` | 改昵称 | 服务器内昵称 |
63
- | `kook_list_members` | 成员列表 | — |
64
- | `kook_blacklist` | 黑名单操作 | **不可逆,谨慎使用** |
65
-
66
- ### 角色管理
67
-
68
- | 工具 | 用途 | 说明 |
69
- |------|------|------|
70
- | `kook_create_role` | 创建角色 | — |
71
- | `kook_delete_role` | 删除角色 | — |
72
- | `kook_grant_role` | 授予角色 | 需 user_id + role_id |
73
- | `kook_revoke_role` | 撤销角色 | 需 user_id + role_id |
74
- | `kook_list_roles` | 角色列表 | 获取所有角色及 ID |
75
-
76
- ## 易错点
77
-
78
- 1. **黑名单是永久封禁**,与普通踢人(kick)不同。用户说「把他踢了」用 kick,说「永久拉黑」才用 blacklist。
79
- 2. **角色操作需要 role_id**,先 `kook_list_roles` 查询。
80
- 3. **创建角色后还需要 grant_role 才能给成员分配**,创建 ≠ 分配。
package/src/adapter.ts DELETED
@@ -1,71 +0,0 @@
1
- /**
2
- * KOOK 适配器
3
- */
4
- import {
5
- Adapter,
6
- Plugin,
7
- } from "zhin.js";
8
- import { KookBot } from "./bot.js";
9
- import type { KookBotConfig } from "./types.js";
10
-
11
- export class KookAdapter extends Adapter<KookBot> {
12
- constructor(plugin: Plugin) {
13
- super(plugin, "kook", []);
14
- }
15
-
16
- createBot(config: KookBotConfig): KookBot {
17
- return new KookBot(this, config);
18
- }
19
-
20
- // ── IGroupManagement 标准群管方法 ──────────────────────────────────
21
-
22
- async kickMember(botId: string, sceneId: string, userId: string) {
23
- const bot = this.bots.get(botId);
24
- if (!bot) throw new Error(`Bot ${botId} 不存在`);
25
- return bot.kickUser(sceneId, userId);
26
- }
27
-
28
- async banMember(botId: string, sceneId: string, userId: string, reason?: string) {
29
- const bot = this.bots.get(botId);
30
- if (!bot) throw new Error(`Bot ${botId} 不存在`);
31
- return bot.addToBlacklist(sceneId, userId, reason);
32
- }
33
-
34
- async unbanMember(botId: string, sceneId: string, userId: string) {
35
- const bot = this.bots.get(botId);
36
- if (!bot) throw new Error(`Bot ${botId} 不存在`);
37
- return bot.removeFromBlacklist(sceneId, userId);
38
- }
39
-
40
- async setMemberNickname(botId: string, sceneId: string, userId: string, nickname: string) {
41
- const bot = this.bots.get(botId);
42
- if (!bot) throw new Error(`Bot ${botId} 不存在`);
43
- return bot.setNickname(sceneId, userId, nickname);
44
- }
45
-
46
- async listMembers(botId: string, sceneId: string) {
47
- const bot = this.bots.get(botId);
48
- if (!bot) throw new Error(`Bot ${botId} 不存在`);
49
- const members = await bot.getGuildMembers(sceneId);
50
- return {
51
- members: members.map(m => ({
52
- id: m.id, username: m.username,
53
- nickname: m.nickname, roles: m.roles,
54
- })),
55
- count: members.length,
56
- };
57
- }
58
-
59
- // ── 生命周期 ───────────────────────────────────────────────────────
60
-
61
- async start(): Promise<void> {
62
- await super.start();
63
- this.plugin.logger.info("KOOK 适配器已启动");
64
- }
65
-
66
- async stop(): Promise<void> {
67
- await super.stop();
68
- this.plugin.logger.info("KOOK 适配器已停止");
69
- }
70
- }
71
-