@zhin.js/adapter-discord 1.0.87 → 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 (91) hide show
  1. package/CHANGELOG.md +949 -66
  2. package/PERMITS.md +25 -0
  3. package/README.md +60 -67
  4. package/adapters/discord/index.js +41 -0
  5. package/adapters/discord/index.ts +57 -0
  6. package/agents/discord/agent.json +20 -0
  7. package/agents/discord/boundaries.md +3 -0
  8. package/agents/discord/conventions.md +3 -0
  9. package/agents/discord/skills/discord/SKILL.md +21 -0
  10. package/agents/discord/skills/discord/tools/add_role/index.js +24 -0
  11. package/agents/discord/skills/discord/tools/add_role/index.ts +26 -0
  12. package/agents/discord/skills/discord/tools/create_thread/index.js +29 -0
  13. package/agents/discord/skills/discord/tools/create_thread/index.ts +28 -0
  14. package/agents/discord/skills/discord/tools/forum_post/index.js +33 -0
  15. package/agents/discord/skills/discord/tools/forum_post/index.ts +33 -0
  16. package/agents/discord/skills/discord/tools/list_roles/index.js +28 -0
  17. package/agents/discord/skills/discord/tools/list_roles/index.ts +34 -0
  18. package/agents/discord/skills/discord/tools/react/index.js +24 -0
  19. package/agents/discord/skills/discord/tools/react/index.ts +24 -0
  20. package/agents/discord/skills/discord/tools/remove_role/index.js +24 -0
  21. package/agents/discord/skills/discord/tools/remove_role/index.ts +26 -0
  22. package/agents/discord/skills/discord/tools/send_embed/index.js +43 -0
  23. package/agents/discord/skills/discord/tools/send_embed/index.ts +38 -0
  24. package/agents/discord/system.md +3 -0
  25. package/commands/discord/endpoint/add/[id]/index.js +3 -0
  26. package/commands/discord/endpoint/add/[id]/index.ts +3 -0
  27. package/commands/discord/endpoint/definition.js +19 -0
  28. package/commands/discord/endpoint/definition.ts +19 -0
  29. package/commands/discord/endpoint/list/index.js +3 -0
  30. package/commands/discord/endpoint/list/index.ts +3 -0
  31. package/commands/discord/endpoint/remove/[id]/index.js +3 -0
  32. package/commands/discord/endpoint/remove/[id]/index.ts +3 -0
  33. package/lib/client.d.ts +16 -0
  34. package/lib/client.js +8 -0
  35. package/lib/discord-runtime-state.d.ts +1 -0
  36. package/lib/discord-runtime-state.js +6 -0
  37. package/lib/endpoint.d.ts +72 -0
  38. package/lib/endpoint.js +458 -0
  39. package/lib/gateway.d.ts +144 -0
  40. package/lib/gateway.js +303 -0
  41. package/lib/index.d.ts +6 -18
  42. package/lib/index.js +6 -323
  43. package/lib/platform-permit.d.ts +14 -0
  44. package/lib/platform-permit.js +42 -0
  45. package/lib/protocol.d.ts +145 -0
  46. package/lib/protocol.js +320 -0
  47. package/lib/side-event-dispatch.d.ts +8 -0
  48. package/lib/side-event-dispatch.js +24 -0
  49. package/lib/webhook.d.ts +14 -0
  50. package/lib/webhook.js +88 -0
  51. package/package.json +74 -30
  52. package/plugin.js +19 -0
  53. package/schema.json +205 -0
  54. package/src/client.ts +24 -0
  55. package/src/discord-runtime-state.ts +7 -0
  56. package/src/endpoint.ts +562 -0
  57. package/src/gateway.ts +426 -0
  58. package/src/index.ts +57 -323
  59. package/src/platform-permit.ts +57 -0
  60. package/src/protocol.ts +475 -0
  61. package/src/side-event-dispatch.ts +37 -0
  62. package/src/webhook.ts +123 -0
  63. package/client/Dashboard.tsx +0 -195
  64. package/client/index.tsx +0 -11
  65. package/client/tsconfig.json +0 -7
  66. package/client/utils/api.ts +0 -17
  67. package/dist/index.js +0 -29
  68. package/lib/adapter.d.ts +0 -19
  69. package/lib/adapter.d.ts.map +0 -1
  70. package/lib/adapter.js +0 -90
  71. package/lib/adapter.js.map +0 -1
  72. package/lib/bot-interactions.d.ts +0 -33
  73. package/lib/bot-interactions.d.ts.map +0 -1
  74. package/lib/bot-interactions.js +0 -278
  75. package/lib/bot-interactions.js.map +0 -1
  76. package/lib/bot.d.ts +0 -117
  77. package/lib/bot.d.ts.map +0 -1
  78. package/lib/bot.js +0 -904
  79. package/lib/bot.js.map +0 -1
  80. package/lib/index.d.ts.map +0 -1
  81. package/lib/index.js.map +0 -1
  82. package/lib/types.d.ts +0 -49
  83. package/lib/types.d.ts.map +0 -1
  84. package/lib/types.js +0 -2
  85. package/lib/types.js.map +0 -1
  86. package/plugin.yml +0 -3
  87. package/skills/discord/SKILL.md +0 -104
  88. package/src/adapter.ts +0 -107
  89. package/src/bot-interactions.ts +0 -348
  90. package/src/bot.ts +0 -1037
  91. package/src/types.ts +0 -60
@@ -1,278 +0,0 @@
1
- /**
2
- * Discord Interactions Bot 实现
3
- */
4
- import { Client, GatewayIntentBits, REST, Routes, InteractionType, InteractionResponseType, } from "discord.js";
5
- import nacl from "tweetnacl";
6
- import { Message, segment } from "zhin.js";
7
- export class DiscordInteractionsBot extends Client {
8
- adapter;
9
- $config;
10
- $connected;
11
- router;
12
- slashCommandHandlers = new Map();
13
- get pluginLogger() {
14
- return this.adapter.plugin.logger;
15
- }
16
- get $id() {
17
- return this.$config.name;
18
- }
19
- constructor(adapter, router, $config) {
20
- const intents = $config.intents || [
21
- GatewayIntentBits.Guilds,
22
- GatewayIntentBits.GuildMessages,
23
- GatewayIntentBits.MessageContent,
24
- ];
25
- super({ intents });
26
- this.adapter = adapter;
27
- this.$config = $config;
28
- this.$connected = false;
29
- this.router = router;
30
- // 设置交互端点路由
31
- this.setupInteractionsEndpoint();
32
- }
33
- setupInteractionsEndpoint() {
34
- // 设置路由处理 Discord Interactions
35
- this.router.post(this.$config.interactionsPath, (ctx) => {
36
- this.handleInteraction(ctx);
37
- });
38
- }
39
- async handleInteraction(ctx) {
40
- try {
41
- const signature = ctx.get("x-signature-ed25519");
42
- const timestamp = ctx.get("x-signature-timestamp");
43
- const bodyString = JSON.stringify(ctx.request.body);
44
- // 验证请求签名
45
- if (!this.verifyDiscordSignature(bodyString, signature, timestamp)) {
46
- this.pluginLogger.warn("Invalid Discord signature");
47
- ctx.status = 401;
48
- ctx.body = "Unauthorized";
49
- return;
50
- }
51
- const interaction = ctx.request.body;
52
- // 处理不同类型的交互
53
- if (interaction.type === InteractionType.Ping) {
54
- // PING - Discord 验证端点
55
- ctx.body = { type: InteractionResponseType.Pong };
56
- }
57
- else if (interaction.type === InteractionType.ApplicationCommand) {
58
- // APPLICATION_COMMAND - 应用命令
59
- const response = await this.handleApplicationCommand(interaction);
60
- ctx.body = response;
61
- }
62
- else {
63
- // 其他交互类型
64
- ctx.status = 400;
65
- ctx.body = "Unsupported interaction type";
66
- }
67
- }
68
- catch (error) {
69
- this.pluginLogger.error("Interactions error:", error);
70
- ctx.status = 500;
71
- ctx.body = "Internal Server Error";
72
- }
73
- }
74
- verifyDiscordSignature(body, signature, timestamp) {
75
- try {
76
- const publicKey = Buffer.from(this.$config.publicKey, "hex");
77
- const sig = Buffer.from(signature, "hex");
78
- const message = Buffer.from(timestamp + body, "utf8");
79
- return nacl.sign.detached.verify(message, sig, publicKey);
80
- }
81
- catch (error) {
82
- this.pluginLogger.error("Signature verification error:", error);
83
- return false;
84
- }
85
- }
86
- async handleApplicationCommand(interaction) {
87
- // 处理应用命令
88
- const commandName = interaction.data.name;
89
- // 转换为标准消息格式并分发
90
- const message = this.formatInteractionAsMessage(interaction);
91
- this.adapter.emit("message.receive", message);
92
- // 查找自定义处理器
93
- const handler = this.slashCommandHandlers.get(commandName);
94
- if (handler) {
95
- try {
96
- await handler(interaction);
97
- }
98
- catch (error) {
99
- this.pluginLogger.error(`Error in slash command handler for ${commandName}:`, error);
100
- }
101
- }
102
- // 默认响应
103
- return {
104
- type: InteractionResponseType.ChannelMessageWithSource,
105
- data: {
106
- content: `处理命令: ${commandName}`,
107
- flags: 64, // EPHEMERAL - 只有用户可见
108
- },
109
- };
110
- }
111
- formatInteractionAsMessage(interaction) {
112
- const channelType = interaction.guild_id ? "channel" : "private";
113
- const channelId = interaction.channel_id;
114
- // 解析命令参数为内容
115
- const options = interaction.data.options || [];
116
- const content = [segment.text(`/${interaction.data.name}`)];
117
- for (const option of options) {
118
- content.push(segment.text(` ${option.name}:${option.value}`));
119
- }
120
- return Message.from(interaction, {
121
- $id: interaction.id,
122
- $adapter: "discord",
123
- $bot: this.$config.name,
124
- $sender: {
125
- id: interaction.user?.id || interaction.member?.user?.id,
126
- name: interaction.user?.username || interaction.member?.user?.username,
127
- },
128
- $channel: {
129
- id: channelId,
130
- type: channelType,
131
- },
132
- $raw: JSON.stringify(interaction),
133
- $timestamp: Date.now(),
134
- $content: content,
135
- $recall: async () => {
136
- // Interactions 消息无法撤回
137
- },
138
- $reply: async (content) => {
139
- return this.$sendMessage({
140
- ...this.$formatMessage(interaction),
141
- content: content,
142
- });
143
- },
144
- });
145
- }
146
- formatSendContent(content) {
147
- if (typeof content === "string") {
148
- return { content };
149
- }
150
- if (Array.isArray(content)) {
151
- const textParts = [];
152
- let embed = null;
153
- for (const item of content) {
154
- if (typeof item === "string") {
155
- textParts.push(item);
156
- }
157
- else {
158
- const segment = item;
159
- switch (segment.type) {
160
- case "text":
161
- textParts.push(segment.data.text || segment.data.content || "");
162
- break;
163
- case "embed":
164
- embed = segment.data;
165
- break;
166
- }
167
- }
168
- }
169
- const result = {};
170
- if (textParts.length > 0) {
171
- result.content = textParts.join("");
172
- }
173
- if (embed) {
174
- result.embeds = [embed];
175
- }
176
- return result;
177
- }
178
- return { content: String(content) };
179
- }
180
- async $connect() {
181
- try {
182
- // 注册 Slash Commands
183
- if (this.$config.slashCommands) {
184
- await this.registerSlashCommands();
185
- }
186
- // 如果启用 Gateway,连接 Discord Gateway
187
- if (this.$config.useGateway) {
188
- await this.login(this.$config.token);
189
- // 设置活动状态
190
- if (this.$config.defaultActivity) {
191
- this.user?.setActivity(this.$config.defaultActivity.name, {
192
- type: this.getActivityType(this.$config.defaultActivity.type),
193
- url: this.$config.defaultActivity.url,
194
- });
195
- }
196
- }
197
- this.$connected = true;
198
- this.pluginLogger.info(`Discord interactions bot connected: ${this.$config.name}`);
199
- this.pluginLogger.info(`Interactions endpoint: ${this.$config.interactionsPath}`);
200
- }
201
- catch (error) {
202
- this.pluginLogger.error("Failed to connect Discord interactions bot:", error);
203
- throw error;
204
- }
205
- }
206
- async $disconnect() {
207
- try {
208
- if (this.isReady()) {
209
- await this.destroy();
210
- }
211
- this.$connected = false;
212
- this.pluginLogger.info("Discord interactions bot disconnected");
213
- }
214
- catch (error) {
215
- this.pluginLogger.error("Error disconnecting Discord interactions bot:", error);
216
- }
217
- }
218
- // Slash Commands 管理
219
- async registerSlashCommands() {
220
- if (!this.$config.slashCommands)
221
- return;
222
- try {
223
- const rest = new REST({ version: "10" }).setToken(this.$config.token);
224
- if (this.$config.globalCommands) {
225
- await rest.put(Routes.applicationCommands(this.$config.applicationId), {
226
- body: this.$config.slashCommands,
227
- });
228
- this.pluginLogger.info("Successfully registered global slash commands");
229
- }
230
- else {
231
- this.pluginLogger.info("Note: Guild commands registration requires connecting to Gateway first");
232
- }
233
- }
234
- catch (error) {
235
- this.pluginLogger.error("Failed to register slash commands:", error);
236
- }
237
- }
238
- // 添加 Slash Command 处理器
239
- addSlashCommandHandler(commandName, handler) {
240
- this.slashCommandHandlers.set(commandName, handler);
241
- }
242
- // 移除 Slash Command 处理器
243
- removeSlashCommandHandler(commandName) {
244
- return this.slashCommandHandlers.delete(commandName);
245
- }
246
- // 工具方法
247
- getActivityType(type) {
248
- const activityTypes = {
249
- PLAYING: 0,
250
- STREAMING: 1,
251
- LISTENING: 2,
252
- WATCHING: 3,
253
- COMPETING: 5,
254
- };
255
- return activityTypes[type] || 0;
256
- }
257
- // 简化实现 - 只支持基本消息格式化和发送
258
- $formatMessage(msg) {
259
- return this.formatInteractionAsMessage(msg);
260
- }
261
- async $sendMessage(options) {
262
- // 简化实现 - 通过 REST API 发送消息
263
- try {
264
- const rest = new REST({ version: "10" }).setToken(this.$config.token);
265
- const messageContent = this.formatSendContent(options.content);
266
- await rest.post(Routes.channelMessages(options.id), {
267
- body: messageContent,
268
- });
269
- }
270
- catch (error) {
271
- this.pluginLogger.error("Failed to send message:", error);
272
- }
273
- return "";
274
- }
275
- async $recallMessage(id) { }
276
- }
277
- // 定义 Adapter 类
278
- //# sourceMappingURL=bot-interactions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot-interactions.js","sourceRoot":"","sources":["../src/bot-interactions.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,MAAM,EACN,iBAAiB,EAUjB,IAAI,EACJ,MAAM,EAGN,eAAe,EACf,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAO,OAAO,EAA4C,OAAO,EAAE,MAAM,SAAS,CAAC;AAK1F,MAAM,OAAO,sBACX,SAAQ,MAAM;IAiBK;IAAwE;IAf3F,UAAU,CAAU;IACZ,MAAM,CAAiC;IACvC,oBAAoB,GAGxB,IAAI,GAAG,EAAE,CAAC;IAEd,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,YAAmB,OAAuB,EAAE,MAAsC,EAAS,OAAkC;QAC3H,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI;YACjC,iBAAiB,CAAC,MAAM;YACxB,iBAAiB,CAAC,aAAa;YAC/B,iBAAiB,CAAC,cAAc;SACjC,CAAC;QAEF,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAPF,YAAO,GAAP,OAAO,CAAgB;QAAiD,YAAO,GAAP,OAAO,CAA2B;QAQ3H,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,WAAW;QACX,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAEO,yBAAyB;QAC/B,8BAA8B;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAY,EAAE,EAAE;YAC/D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,GAAY;QAC1C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAE,GAAG,CAAC,OAAe,CAAC,IAAI,CAAC,CAAC;YAE7D,SAAS;YACT,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACpD,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;gBACjB,GAAG,CAAC,IAAI,GAAG,cAAc,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAI,GAAG,CAAC,OAAe,CAAC,IAAI,CAAC;YAE9C,YAAY;YACZ,IAAI,WAAW,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;gBAC9C,sBAAsB;gBACtB,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,uBAAuB,CAAC,IAAI,EAAE,CAAC;YACpD,CAAC;iBAAM,IAAI,WAAW,CAAC,IAAI,KAAK,eAAe,CAAC,kBAAkB,EAAE,CAAC;gBACnE,6BAA6B;gBAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;gBAClE,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,SAAS;gBACT,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;gBACjB,GAAG,CAAC,IAAI,GAAG,8BAA8B,CAAC;YAC5C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YACtD,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,sBAAsB,CAC5B,IAAY,EACZ,SAAiB,EACjB,SAAiB;QAEjB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;YAEtD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YAChE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,WAAgB;QACrD,SAAS;QACT,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAE1C,eAAe;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAE9C,WAAW;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,YAAY,CAAC,KAAK,CACrB,sCAAsC,WAAW,GAAG,EACpD,KAAK,CACN,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;QACP,OAAO;YACL,IAAI,EAAE,uBAAuB,CAAC,wBAAwB;YACtD,IAAI,EAAE;gBACJ,OAAO,EAAE,SAAS,WAAW,EAAE;gBAC/B,KAAK,EAAE,EAAE,EAAE,qBAAqB;aACjC;SACF,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAAC,WAAgB;QACjD,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC;QAEzC,YAAY;QACZ,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAE5D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;YAC/B,GAAG,EAAE,WAAW,CAAC,EAAE;YACnB,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,OAAO,EAAE;gBACP,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBACxD,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;aACvE;YACD,QAAQ,EAAE;gBACR,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,WAAkB;aACzB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;YACjC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACtB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,sBAAsB;YACxB,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,OAAoB,EAAmB,EAAE;gBACtD,OAAO,IAAI,CAAC,YAAY,CAAC;oBACvB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;oBACnC,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,OAAoB;QAC5C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,IAAI,KAAK,GAAQ,IAAI,CAAC;YAEtB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,IAAsB,CAAC;oBACvC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;wBACrB,KAAK,MAAM;4BACT,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;4BAChE,MAAM;wBACR,KAAK,OAAO;4BACV,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;4BACrB,MAAM;oBACV,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAQ,EAAE,CAAC;YACvB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,oBAAoB;YACpB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACrC,CAAC;YAED,kCAAkC;YAClC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAErC,SAAS;gBACT,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;oBACjC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE;wBACxD,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;wBAC7D,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG;qBACtC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,uCAAuC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAC3D,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,0BAA0B,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAC1D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YAC9E,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,KAAK,CACrB,+CAA+C,EAC/C,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oBAAoB;IACZ,KAAK,CAAC,qBAAqB;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;YAAE,OAAO;QAExC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEtE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;oBACrE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;iBACjC,CAAC,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,wEAAwE,CACzE,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,sBAAsB,CACpB,WAAmB,EACnB,OAA4C;QAE5C,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,uBAAuB;IACvB,yBAAyB,CAAC,WAAmB;QAC3C,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,OAAO;IACC,eAAe,CAAC,IAAY;QAClC,MAAM,aAAa,GAAQ;YACzB,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;SACb,CAAC;QACF,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,uBAAuB;IACvB,cAAc,CAAC,GAAQ;QACrB,OAAO,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAoB;QACrC,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtE,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE/D,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBAClD,IAAI,EAAE,cAAc;aACrB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,EAAU,IAAmB,CAAC;CACpD;AAED,eAAe"}
package/lib/bot.d.ts DELETED
@@ -1,117 +0,0 @@
1
- /**
2
- * Discord Bot 实现 (Gateway)
3
- */
4
- import { Client, Message as DiscordMessage, TextChannel, DMChannel, NewsChannel, ThreadChannel, EmbedBuilder, AttachmentBuilder, MessageCreateOptions, ChatInputCommandInteraction } from "discord.js";
5
- import { Bot, Message, SendOptions, SendContent, MessageSegment } from "zhin.js";
6
- import type { DiscordGatewayConfig, DiscordChannelMessage } from "./types.js";
7
- import type { DiscordAdapter } from "./adapter.js";
8
- export declare class DiscordBot extends Client implements Bot<DiscordGatewayConfig, DiscordChannelMessage> {
9
- adapter: DiscordAdapter;
10
- $config: DiscordGatewayConfig;
11
- private slashCommandHandlers;
12
- $connected: boolean;
13
- get pluginLogger(): import("zhin.js").Logger;
14
- get $id(): string;
15
- constructor(adapter: DiscordAdapter, $config: DiscordGatewayConfig);
16
- private handleDiscordMessage;
17
- private handleSlashCommand;
18
- $connect(): Promise<void>;
19
- $disconnect(): Promise<void>;
20
- $formatMessage(msg: DiscordChannelMessage): Message<DiscordChannelMessage>;
21
- parseMessageContent(msg: DiscordChannelMessage): MessageSegment[];
22
- parseTextContent(content: string, msg: DiscordChannelMessage): MessageSegment[];
23
- parseAttachment(attachment: any): MessageSegment[];
24
- $sendMessage(options: SendOptions): Promise<string>;
25
- sendContentToChannel(channel: TextChannel | DMChannel | NewsChannel | ThreadChannel, content: SendContent, extraOptions?: MessageCreateOptions): Promise<DiscordMessage<boolean>>;
26
- $recallMessage(id: string): Promise<void>;
27
- /**
28
- * 踢出成员
29
- * @param guildId 服务器 ID
30
- * @param userId 用户 ID
31
- * @param reason 原因
32
- */
33
- kickMember(guildId: string, userId: string, reason?: string): Promise<boolean>;
34
- /**
35
- * 封禁成员
36
- * @param guildId 服务器 ID
37
- * @param userId 用户 ID
38
- * @param reason 原因
39
- * @param deleteMessageDays 删除消息天数
40
- */
41
- banMember(guildId: string, userId: string, reason?: string, deleteMessageDays?: number): Promise<boolean>;
42
- /**
43
- * 解除封禁
44
- * @param guildId 服务器 ID
45
- * @param userId 用户 ID
46
- * @param reason 原因
47
- */
48
- unbanMember(guildId: string, userId: string, reason?: string): Promise<boolean>;
49
- /**
50
- * 超时(禁言)成员
51
- * @param guildId 服务器 ID
52
- * @param userId 用户 ID
53
- * @param duration 超时时长(秒),0 表示取消超时
54
- * @param reason 原因
55
- */
56
- timeoutMember(guildId: string, userId: string, duration?: number, reason?: string): Promise<boolean>;
57
- /**
58
- * 修改成员昵称
59
- * @param guildId 服务器 ID
60
- * @param userId 用户 ID
61
- * @param nickname 新昵称
62
- */
63
- setNickname(guildId: string, userId: string, nickname: string): Promise<boolean>;
64
- /**
65
- * 添加角色
66
- * @param guildId 服务器 ID
67
- * @param userId 用户 ID
68
- * @param roleId 角色 ID
69
- */
70
- addRole(guildId: string, userId: string, roleId: string): Promise<boolean>;
71
- /**
72
- * 移除角色
73
- * @param guildId 服务器 ID
74
- * @param userId 用户 ID
75
- * @param roleId 角色 ID
76
- */
77
- removeRole(guildId: string, userId: string, roleId: string): Promise<boolean>;
78
- /**
79
- * 获取服务器角色列表
80
- * @param guildId 服务器 ID
81
- */
82
- getRoles(guildId: string): Promise<any[]>;
83
- /**
84
- * 获取成员列表
85
- * @param guildId 服务器 ID
86
- * @param limit 数量限制
87
- */
88
- getMembers(guildId: string, limit?: number): Promise<any[]>;
89
- /**
90
- * 获取服务器信息
91
- * @param guildId 服务器 ID
92
- */
93
- getGuildInfo(guildId: string): Promise<any>;
94
- createThread(channelId: string, name: string, messageId?: string, autoArchiveDuration?: number): Promise<ThreadChannel>;
95
- addReaction(channelId: string, messageId: string, emoji: string): Promise<void>;
96
- sendEmbed(channelId: string, embedData: {
97
- title?: string;
98
- description?: string;
99
- color?: number;
100
- url?: string;
101
- fields?: {
102
- name: string;
103
- value: string;
104
- inline?: boolean;
105
- }[];
106
- }): Promise<DiscordMessage<boolean>>;
107
- createForumPost(channelId: string, name: string, content: string, tags?: string[]): Promise<ThreadChannel>;
108
- handleFileSegment(data: any, files: AttachmentBuilder[], textContent: string): Promise<void>;
109
- createEmbedFromData(data: any): EmbedBuilder;
110
- private getActivityType;
111
- private registerSlashCommands;
112
- addSlashCommandHandler(commandName: string, handler: (interaction: ChatInputCommandInteraction) => Promise<void>): void;
113
- removeSlashCommandHandler(commandName: string): boolean;
114
- private fileExists;
115
- static formatContentToText(content: SendContent): string;
116
- }
117
- //# sourceMappingURL=bot.d.ts.map
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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"}