@zhin.js/adapter-kook 1.0.17 → 1.0.19
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 +18 -0
- package/README.md +30 -0
- package/lib/index.d.ts +78 -18
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +204 -75
- package/lib/index.js.map +1 -1
- package/package.json +7 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @zhin.js/adapter-kook
|
|
2
2
|
|
|
3
|
+
## 1.0.19
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f9faa1d: fix: test release
|
|
8
|
+
- Updated dependencies [f9faa1d]
|
|
9
|
+
- @zhin.js/logger@0.1.3
|
|
10
|
+
- zhin.js@1.0.19
|
|
11
|
+
|
|
12
|
+
## 1.0.18
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- d16a69c: fix: test trust publish
|
|
17
|
+
- Updated dependencies [d16a69c]
|
|
18
|
+
- @zhin.js/logger@0.1.2
|
|
19
|
+
- zhin.js@1.0.18
|
|
20
|
+
|
|
3
21
|
## 1.0.17
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -139,6 +139,36 @@ addCommand(new MessageCommand('md')
|
|
|
139
139
|
})
|
|
140
140
|
)
|
|
141
141
|
```
|
|
142
|
+
### Card 消息 (卡片消息)
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
addCommand(new MessageCommand('card')
|
|
146
|
+
.action(async (message) => {
|
|
147
|
+
logger.info(message);
|
|
148
|
+
if (message.$adapter === 'icqq') {
|
|
149
|
+
return "暂未适配平台!";
|
|
150
|
+
} else if (message.$adapter === 'kook') {
|
|
151
|
+
const cardMessage = [{
|
|
152
|
+
type: 'card',
|
|
153
|
+
theme: "secondary",
|
|
154
|
+
size: "lg",
|
|
155
|
+
modules: [
|
|
156
|
+
msgMod.section(
|
|
157
|
+
element.markdown("(font) 卡片信息(font)[purple](font) Card信息(font)[warning]")
|
|
158
|
+
),
|
|
159
|
+
msgMod.container(
|
|
160
|
+
[
|
|
161
|
+
element.image('https://api.owii.cn/gif/cache/2026-01-03_07-17-15.gif')
|
|
162
|
+
]
|
|
163
|
+
)
|
|
164
|
+
]
|
|
165
|
+
}];
|
|
166
|
+
return cardMessage;
|
|
167
|
+
}
|
|
168
|
+
return `当前平台:${message.adapter}`;
|
|
169
|
+
})
|
|
170
|
+
)
|
|
171
|
+
```
|
|
142
172
|
|
|
143
173
|
## 消息类型支持
|
|
144
174
|
|
package/lib/index.d.ts
CHANGED
|
@@ -1,29 +1,89 @@
|
|
|
1
|
-
import { Client
|
|
2
|
-
import { Bot, Adapter, Message, SendOptions,
|
|
3
|
-
declare module
|
|
1
|
+
import { Client } from "kook-client";
|
|
2
|
+
import { Bot, Adapter, Plugin, Message, SendOptions, MessageType } from "zhin.js";
|
|
3
|
+
declare module "zhin.js" {
|
|
4
|
+
namespace Plugin {
|
|
5
|
+
interface Contexts {
|
|
6
|
+
kook: KookAdapter;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
4
9
|
interface RegisteredAdapters {
|
|
5
|
-
kook:
|
|
10
|
+
kook: KookAdapter;
|
|
6
11
|
}
|
|
7
12
|
}
|
|
8
|
-
export interface KookBotConfig
|
|
9
|
-
context:
|
|
10
|
-
name:
|
|
13
|
+
export interface KookBotConfig {
|
|
14
|
+
context: "kook";
|
|
15
|
+
name: string;
|
|
16
|
+
token: string;
|
|
17
|
+
data_dir?: string;
|
|
18
|
+
timeout?: number;
|
|
19
|
+
max_retry?: number;
|
|
20
|
+
ignore?: string;
|
|
21
|
+
logLevel?: string;
|
|
11
22
|
}
|
|
12
|
-
|
|
13
|
-
|
|
23
|
+
interface KookRawMessage {
|
|
24
|
+
message_id: string;
|
|
25
|
+
author_id: string;
|
|
26
|
+
author: {
|
|
27
|
+
info: {
|
|
28
|
+
nickname: string;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
channel_id: string;
|
|
32
|
+
message_type: MessageType;
|
|
33
|
+
message: string;
|
|
34
|
+
raw_message: string;
|
|
35
|
+
timestamp: number;
|
|
14
36
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
37
|
+
/**
|
|
38
|
+
* KOOK Bot 实现
|
|
39
|
+
*/
|
|
40
|
+
export declare class KookBot extends Client implements Bot<KookBotConfig, KookRawMessage> {
|
|
41
|
+
$config: KookBotConfig;
|
|
42
|
+
$connected: boolean;
|
|
43
|
+
adapter: KookAdapter;
|
|
44
|
+
get $id(): string;
|
|
45
|
+
constructor(adapter: KookAdapter, $config: KookBotConfig);
|
|
46
|
+
/**
|
|
47
|
+
* 设置事件监听器
|
|
48
|
+
*/
|
|
49
|
+
private setupEventListeners;
|
|
50
|
+
/**
|
|
51
|
+
* 将 KOOK 消息转换为标准消息格式
|
|
52
|
+
*/
|
|
53
|
+
$formatMessage(msg: KookRawMessage): Message<KookRawMessage>;
|
|
54
|
+
/**
|
|
55
|
+
* 解析消息内容为消息段数组
|
|
56
|
+
*/
|
|
57
|
+
private parseMessageContent;
|
|
58
|
+
/**
|
|
59
|
+
* 连接到 KOOK
|
|
60
|
+
*/
|
|
19
61
|
$connect(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* 断开连接
|
|
64
|
+
*/
|
|
20
65
|
$disconnect(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* 发送消息
|
|
68
|
+
*/
|
|
21
69
|
$sendMessage(options: SendOptions): Promise<string>;
|
|
22
|
-
|
|
23
|
-
|
|
70
|
+
/**
|
|
71
|
+
* 撤回消息
|
|
72
|
+
*/
|
|
73
|
+
$recallMessage(messageId: string): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* 将消息段转换为 KOOK 格式
|
|
76
|
+
*/
|
|
77
|
+
private convertToKookFormat;
|
|
24
78
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
79
|
+
/**
|
|
80
|
+
* KOOK 适配器
|
|
81
|
+
*/
|
|
82
|
+
export declare class KookAdapter extends Adapter<KookBot> {
|
|
83
|
+
constructor(plugin: Plugin);
|
|
84
|
+
createBot(config: KookBotConfig): KookBot;
|
|
85
|
+
start(): Promise<void>;
|
|
86
|
+
stop(): Promise<void>;
|
|
28
87
|
}
|
|
88
|
+
export {};
|
|
29
89
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EACL,GAAG,EACH,OAAO,EACP,MAAM,EACN,OAAO,EACP,WAAW,EAKX,WAAW,EACZ,MAAM,SAAS,CAAC;AAGjB,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,IAAI,EAAE,WAAW,CAAC;SACnB;KACF;IAED,UAAU,kBAAkB;QAC1B,IAAI,EAAE,WAAW,CAAC;KACnB;CACF;AAGD,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,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;GAEG;AACH,qBAAa,OAAQ,SAAQ,MAAO,YAAW,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC;IAQtC,OAAO,EAAE,aAAa;IAP/D,UAAU,EAAE,OAAO,CAAS;IAC5B,OAAO,EAAE,WAAW,CAAC;IAErB,IAAI,GAAG,IAAI,MAAM,CAEhB;gBAEW,OAAO,EAAE,WAAW,EAAS,OAAO,EAAE,aAAa;IAc/D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyC3B;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAqD5D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzD;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtD;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAa5B;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,OAAO,CAAC,OAAO,CAAC;gBACnC,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAMnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAO5B"}
|
package/lib/index.js
CHANGED
|
@@ -1,116 +1,245 @@
|
|
|
1
1
|
import { Client } from "kook-client";
|
|
2
2
|
import path from "path";
|
|
3
|
-
import { Adapter,
|
|
3
|
+
import { Adapter, Message, usePlugin, } from "zhin.js";
|
|
4
4
|
const plugin = usePlugin();
|
|
5
|
+
const { provide } = plugin;
|
|
6
|
+
const logger = plugin.logger;
|
|
7
|
+
/**
|
|
8
|
+
* KOOK Bot 实现
|
|
9
|
+
*/
|
|
5
10
|
export class KookBot extends Client {
|
|
6
|
-
$
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
this.$config = config;
|
|
11
|
+
$config;
|
|
12
|
+
$connected = false;
|
|
13
|
+
adapter;
|
|
14
|
+
get $id() {
|
|
15
|
+
return this.$config.name;
|
|
12
16
|
}
|
|
17
|
+
constructor(adapter, $config) {
|
|
18
|
+
super({
|
|
19
|
+
token: $config.token,
|
|
20
|
+
mode: "ws", // KOOK 默认使用 WebSocket 模式
|
|
21
|
+
data_dir: $config.data_dir || path.join(process.cwd(), "data", "kook"),
|
|
22
|
+
timeout: $config.timeout || 10000,
|
|
23
|
+
max_retry: $config.max_retry || 3,
|
|
24
|
+
ignore: ($config.ignore || "bot"),
|
|
25
|
+
logLevel: ($config.logLevel || "info"),
|
|
26
|
+
});
|
|
27
|
+
this.$config = $config;
|
|
28
|
+
this.adapter = adapter;
|
|
29
|
+
this.setupEventListeners();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 设置事件监听器
|
|
33
|
+
*/
|
|
34
|
+
setupEventListeners() {
|
|
35
|
+
// 监听消息事件
|
|
36
|
+
this.on("message", (msg) => {
|
|
37
|
+
try {
|
|
38
|
+
const message = this.$formatMessage(msg);
|
|
39
|
+
this.adapter.emit("message.receive", message);
|
|
40
|
+
// 根据消息类型触发特定事件
|
|
41
|
+
const eventMap = {
|
|
42
|
+
private: "message.private.receive",
|
|
43
|
+
group: "message.group.receive",
|
|
44
|
+
channel: "message.channel.receive",
|
|
45
|
+
};
|
|
46
|
+
const specificEvent = eventMap[msg.message_type];
|
|
47
|
+
if (specificEvent) {
|
|
48
|
+
this.adapter.emit(specificEvent, message);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
logger.error(`处理 KOOK 消息失败:`, error);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
// 监听连接事件
|
|
56
|
+
this.on("connect", () => {
|
|
57
|
+
this.$connected = true;
|
|
58
|
+
logger.info(`KOOK Bot ${this.$id} 已连接`);
|
|
59
|
+
});
|
|
60
|
+
// 监听断开事件
|
|
61
|
+
this.on("disconnect", () => {
|
|
62
|
+
this.$connected = false;
|
|
63
|
+
logger.warn(`KOOK Bot ${this.$id} 已断开`);
|
|
64
|
+
});
|
|
65
|
+
// 监听错误事件
|
|
66
|
+
this.on("error", (error) => {
|
|
67
|
+
logger.error(`KOOK Bot ${this.$id} 错误:`, error);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 将 KOOK 消息转换为标准消息格式
|
|
72
|
+
*/
|
|
13
73
|
$formatMessage(msg) {
|
|
14
74
|
const message = Message.from(msg, {
|
|
15
75
|
$id: msg.message_id.toString(),
|
|
16
|
-
$adapter:
|
|
17
|
-
$bot:
|
|
76
|
+
$adapter: "kook",
|
|
77
|
+
$bot: this.$id,
|
|
18
78
|
$sender: {
|
|
19
79
|
id: msg.author_id.toString(),
|
|
20
80
|
name: msg.author.info.nickname.toString(),
|
|
21
81
|
},
|
|
22
82
|
$channel: {
|
|
23
|
-
id: msg.message_type ===
|
|
24
|
-
type: msg.message_type
|
|
83
|
+
id: msg.message_type === "channel" ? msg.channel_id.toString() : msg.author_id.toString(),
|
|
84
|
+
type: msg.message_type,
|
|
25
85
|
},
|
|
26
|
-
$content:
|
|
86
|
+
$content: this.parseMessageContent(msg.message),
|
|
27
87
|
$raw: msg.raw_message,
|
|
28
88
|
$timestamp: msg.timestamp,
|
|
29
89
|
$recall: async () => {
|
|
30
90
|
await this.$recallMessage(message.$id);
|
|
31
91
|
},
|
|
32
92
|
$reply: async (content, quote) => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (quote)
|
|
36
|
-
|
|
93
|
+
const elements = Array.isArray(content) ? content : [content];
|
|
94
|
+
const finalContent = [];
|
|
95
|
+
if (quote) {
|
|
96
|
+
finalContent.push({
|
|
97
|
+
type: "reply",
|
|
98
|
+
data: {
|
|
99
|
+
id: typeof quote === "boolean" ? message.$id : quote,
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
finalContent.push(...elements.map(el => typeof el === 'string' ? { type: 'text', data: { text: el } } : el));
|
|
37
104
|
return await this.$sendMessage({
|
|
38
105
|
...message.$channel,
|
|
39
|
-
context:
|
|
40
|
-
bot:
|
|
41
|
-
content
|
|
106
|
+
context: "kook",
|
|
107
|
+
bot: this.$id,
|
|
108
|
+
content: finalContent,
|
|
42
109
|
});
|
|
43
|
-
}
|
|
110
|
+
},
|
|
44
111
|
});
|
|
45
112
|
return message;
|
|
46
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* 解析消息内容为消息段数组
|
|
116
|
+
*/
|
|
117
|
+
parseMessageContent(content) {
|
|
118
|
+
// 简化的消息解析,实际应该根据 KOOK 的消息格式解析
|
|
119
|
+
// TODO: 实现完整的 KOOK 消息格式解析
|
|
120
|
+
return [{ type: "text", data: { text: content } }];
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* 连接到 KOOK
|
|
124
|
+
*/
|
|
47
125
|
async $connect() {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
126
|
+
try {
|
|
127
|
+
await this.connect();
|
|
128
|
+
this.$connected = true;
|
|
129
|
+
logger.info(`KOOK Bot ${this.$id} 连接成功`);
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
logger.error(`KOOK Bot ${this.$id} 连接失败:`, error);
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
51
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* 断开连接
|
|
138
|
+
*/
|
|
52
139
|
async $disconnect() {
|
|
53
|
-
|
|
54
|
-
|
|
140
|
+
try {
|
|
141
|
+
await this.disconnect();
|
|
142
|
+
this.$connected = false;
|
|
143
|
+
logger.info(`KOOK Bot ${this.$id} 已断开连接`);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
logger.error(`KOOK Bot ${this.$id} 断开连接失败:`, error);
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
55
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* 发送消息
|
|
152
|
+
*/
|
|
56
153
|
async $sendMessage(options) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
154
|
+
try {
|
|
155
|
+
const { id, type, content } = options;
|
|
156
|
+
// 将消息段转换为 KOOK 格式
|
|
157
|
+
const elements = Array.isArray(content)
|
|
158
|
+
? content.map(el => typeof el === 'string' ? { type: 'text', data: { text: el } } : el)
|
|
159
|
+
: [typeof content === 'string' ? { type: 'text', data: { text: content } } : content];
|
|
160
|
+
const kookContent = this.convertToKookFormat(elements);
|
|
161
|
+
// 根据消息类型发送
|
|
162
|
+
let result;
|
|
163
|
+
if (type === "private") {
|
|
164
|
+
result = await this.sendPrivateMsg(id, kookContent);
|
|
64
165
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
plugin.logger.info(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
|
|
68
|
-
return `channel-${options.id}:${result.msg_id.toString()}`;
|
|
69
|
-
break;
|
|
166
|
+
else {
|
|
167
|
+
result = await this.sendChannelMsg(id, kookContent);
|
|
70
168
|
}
|
|
71
|
-
|
|
72
|
-
|
|
169
|
+
return result?.msg_id || "";
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
logger.error(`KOOK Bot ${this.$id} 发送消息失败:`, error);
|
|
173
|
+
throw error;
|
|
73
174
|
}
|
|
74
175
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
await this.
|
|
81
|
-
|
|
82
|
-
|
|
176
|
+
/**
|
|
177
|
+
* 撤回消息
|
|
178
|
+
*/
|
|
179
|
+
async $recallMessage(messageId) {
|
|
180
|
+
try {
|
|
181
|
+
await this.deleteMsg(messageId);
|
|
182
|
+
logger.debug(`KOOK Bot ${this.$id} 撤回消息: ${messageId}`);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
logger.error(`KOOK Bot ${this.$id} 撤回消息失败:`, error);
|
|
186
|
+
throw error;
|
|
187
|
+
}
|
|
83
188
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
189
|
+
/**
|
|
190
|
+
* 将消息段转换为 KOOK 格式
|
|
191
|
+
*/
|
|
192
|
+
convertToKookFormat(content) {
|
|
193
|
+
// 简化的转换,实际应该根据 KOOK 的消息格式转换
|
|
194
|
+
// TODO: 实现完整的消息段到 KOOK 格式的转换
|
|
195
|
+
return content
|
|
196
|
+
.map((el) => {
|
|
197
|
+
if (el.type === "text") {
|
|
198
|
+
return el.data.text;
|
|
199
|
+
}
|
|
200
|
+
// 处理其他类型的消息段
|
|
201
|
+
return "";
|
|
202
|
+
})
|
|
203
|
+
.join("");
|
|
89
204
|
}
|
|
90
205
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
return { type: 'text', data: { text: item } };
|
|
98
|
-
const { type, ...data } = item;
|
|
99
|
-
return { type: type === 'markdown' ? 'text' : type, data };
|
|
100
|
-
});
|
|
206
|
+
/**
|
|
207
|
+
* KOOK 适配器
|
|
208
|
+
*/
|
|
209
|
+
export class KookAdapter extends Adapter {
|
|
210
|
+
constructor(plugin) {
|
|
211
|
+
super(plugin, "kook", []);
|
|
101
212
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const { type, data } = segment;
|
|
110
|
-
return { type, ...data };
|
|
111
|
-
});
|
|
213
|
+
createBot(config) {
|
|
214
|
+
const bot = new KookBot(this, config);
|
|
215
|
+
this.bots.set(bot.$id, bot);
|
|
216
|
+
return bot;
|
|
217
|
+
}
|
|
218
|
+
async start() {
|
|
219
|
+
logger.info("KOOK 适配器已启动");
|
|
112
220
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
221
|
+
async stop() {
|
|
222
|
+
// 断开所有 bot 连接
|
|
223
|
+
for (const bot of this.bots.values()) {
|
|
224
|
+
await bot.$disconnect();
|
|
225
|
+
}
|
|
226
|
+
logger.info("KOOK 适配器已停止");
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* 注册 KOOK 适配器
|
|
231
|
+
*/
|
|
232
|
+
provide({
|
|
233
|
+
name: "kook",
|
|
234
|
+
description: "KOOK Adapter",
|
|
235
|
+
mounted: async (p) => {
|
|
236
|
+
const adapter = new KookAdapter(p);
|
|
237
|
+
await adapter.start();
|
|
238
|
+
return adapter;
|
|
239
|
+
},
|
|
240
|
+
dispose: async (adapter) => {
|
|
241
|
+
await adapter.stop();
|
|
242
|
+
},
|
|
243
|
+
});
|
|
244
|
+
logger.info("✅ KOOK 适配器已加载");
|
|
116
245
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/adapter-kook",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.19",
|
|
4
4
|
"description": "zhin adapter for kook",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -30,13 +30,8 @@
|
|
|
30
30
|
"typescript": "^5.3.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"zhin.js": "1.
|
|
34
|
-
"
|
|
35
|
-
},
|
|
36
|
-
"peerDependenciesMeta": {
|
|
37
|
-
"@zhin.js/types": {
|
|
38
|
-
"optional": true
|
|
39
|
-
}
|
|
33
|
+
"@zhin.js/logger": "0.1.3",
|
|
34
|
+
"zhin.js": "1.0.19"
|
|
40
35
|
},
|
|
41
36
|
"files": [
|
|
42
37
|
"lib",
|
|
@@ -44,6 +39,10 @@
|
|
|
44
39
|
"README.md",
|
|
45
40
|
"CHANGELOG.md"
|
|
46
41
|
],
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public",
|
|
44
|
+
"registry": "https://registry.npmjs.org"
|
|
45
|
+
},
|
|
47
46
|
"scripts": {
|
|
48
47
|
"build": "pnpm build:node",
|
|
49
48
|
"clean": "rm -rf lib",
|