@discord-flow/multibots 1.0.1 → 1.0.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.
@@ -0,0 +1,3 @@
1
+ export { createMultiBotServer } from './server.js';
2
+ export type { BotConfig, MultiBotServerOptions, MultiBotServer } from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,SAAS,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { createMultiBotServer } from './server.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { MultiBotServerOptions, MultiBotServer } from './types.js';
2
+ export declare function createMultiBotServer(options: MultiBotServerOptions): MultiBotServer;
3
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,qBAAqB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkBnF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAiNnF"}
package/dist/server.js ADDED
@@ -0,0 +1,188 @@
1
+ import { DiscordAPI, parseInteraction } from '@discord-flow/adapter-discord-http';
2
+ import { InteractionType } from '@discord-flow/types';
3
+ import chalk from 'chalk';
4
+ import nacl from 'tweetnacl';
5
+ function verifySignature(publicKey, signature, timestamp, body) {
6
+ try {
7
+ return nacl.sign.detached.verify(new TextEncoder().encode(timestamp + body), Buffer.from(signature, 'hex'), Buffer.from(publicKey, 'hex'));
8
+ }
9
+ catch {
10
+ return false;
11
+ }
12
+ }
13
+ export function createMultiBotServer(options) {
14
+ const { port = 3000, bots: initialBots, autoRegisterCommands = true } = options;
15
+ const bots = new Map();
16
+ initialBots.forEach(bot => bots.set(bot.applicationId, bot));
17
+ const handler = async (request) => {
18
+ const url = new URL(request.url);
19
+ if (request.method === 'GET' && url.pathname === '/health') {
20
+ return new Response('OK', { status: 200 });
21
+ }
22
+ if (request.method === 'GET' && url.pathname === '/') {
23
+ return new Response(JSON.stringify({
24
+ status: 'running',
25
+ bots: Array.from(bots.keys())
26
+ }), {
27
+ status: 200,
28
+ headers: { 'Content-Type': 'application/json' }
29
+ });
30
+ }
31
+ if (request.method !== 'POST' || url.pathname !== '/interactions') {
32
+ return new Response('Not Found', { status: 404 });
33
+ }
34
+ const signature = request.headers.get('x-signature-ed25519');
35
+ const timestamp = request.headers.get('x-signature-timestamp');
36
+ const body = await request.text();
37
+ if (!signature || !timestamp) {
38
+ return new Response('Missing headers', { status: 401 });
39
+ }
40
+ let interaction;
41
+ try {
42
+ interaction = JSON.parse(body);
43
+ }
44
+ catch {
45
+ return new Response('Invalid JSON', { status: 400 });
46
+ }
47
+ const applicationId = interaction.application_id;
48
+ if (!applicationId) {
49
+ return new Response('Missing application_id', { status: 400 });
50
+ }
51
+ const bot = bots.get(applicationId);
52
+ if (!bot) {
53
+ return new Response(`Bot not found for application: ${applicationId}`, { status: 404 });
54
+ }
55
+ if (!verifySignature(bot.publicKey, signature, timestamp, body)) {
56
+ return new Response('Invalid signature', { status: 401 });
57
+ }
58
+ if (interaction.type === InteractionType.PING) {
59
+ return new Response(JSON.stringify({ type: 1 }), {
60
+ headers: { 'Content-Type': 'application/json' }
61
+ });
62
+ }
63
+ try {
64
+ const event = parseInteraction(interaction);
65
+ if (!event) {
66
+ return new Response(JSON.stringify({
67
+ type: 4,
68
+ data: { content: 'Unknown interaction type', flags: 64 }
69
+ }), {
70
+ headers: { 'Content-Type': 'application/json' }
71
+ });
72
+ }
73
+ const result = await bot.engine.process(event);
74
+ if (!result) {
75
+ return new Response(JSON.stringify({
76
+ type: 4,
77
+ data: { content: 'No handler found', flags: 64 }
78
+ }), {
79
+ headers: { 'Content-Type': 'application/json' }
80
+ });
81
+ }
82
+ const responseType = event.type === 'command' ? 4 : 7;
83
+ return new Response(JSON.stringify({
84
+ type: responseType,
85
+ data: result
86
+ }), {
87
+ headers: { 'Content-Type': 'application/json' }
88
+ });
89
+ }
90
+ catch (error) {
91
+ console.error(`[${applicationId}] Error:`, error);
92
+ return new Response(JSON.stringify({
93
+ type: 4,
94
+ data: { content: 'Internal error', flags: 64 }
95
+ }), {
96
+ headers: { 'Content-Type': 'application/json' }
97
+ });
98
+ }
99
+ };
100
+ return {
101
+ addBot(config) {
102
+ bots.set(config.applicationId, config);
103
+ },
104
+ removeBot(applicationId) {
105
+ return bots.delete(applicationId);
106
+ },
107
+ getBots() {
108
+ return new Map(bots);
109
+ },
110
+ async start() {
111
+ const globalObj = globalThis;
112
+ if (globalObj.Bun) {
113
+ globalObj.Bun.serve({ port, hostname: '0.0.0.0', fetch: handler });
114
+ }
115
+ else {
116
+ const { createServer: createHttpServer } = await import('node:http');
117
+ const httpServer = createHttpServer(async (req, res) => {
118
+ const chunks = [];
119
+ for await (const chunk of req) {
120
+ chunks.push(chunk);
121
+ }
122
+ const body = Buffer.concat(chunks).toString();
123
+ const url = `http://0.0.0.0:${port}${req.url ?? '/'}`;
124
+ const headers = new Headers();
125
+ for (const [key, value] of Object.entries(req.headers)) {
126
+ if (value)
127
+ headers.set(key, Array.isArray(value) ? value[0] : value);
128
+ }
129
+ const method = req.method ?? 'GET';
130
+ const hasBody = method !== 'GET' && method !== 'HEAD';
131
+ const request = new Request(url, {
132
+ method,
133
+ headers,
134
+ body: hasBody ? body : null
135
+ });
136
+ const response = await handler(request);
137
+ const responseBody = await response.text();
138
+ res.writeHead(response.status, Object.fromEntries(response.headers.entries()));
139
+ res.end(responseBody);
140
+ });
141
+ httpServer.listen(port, '0.0.0.0');
142
+ }
143
+ console.log();
144
+ console.log(` ${chalk.bold.hex('#5865F2')('discord-flow')} ${chalk.bold.hex('#1EBE38')('multibots')}`);
145
+ console.log();
146
+ console.log(` ${chalk.green('➜')} ${chalk.bold('Local:')} ${chalk.cyan(`http://localhost:${port}/interactions`)}`);
147
+ console.log(` ${chalk.green('➜')} ${chalk.bold('Bots:')} ${chalk.white(bots.size)}`);
148
+ console.log();
149
+ if (autoRegisterCommands) {
150
+ for (const [appId, bot] of bots) {
151
+ try {
152
+ const discord = new DiscordAPI({ token: bot.token });
153
+ const commandsMeta = bot.engine.getRegistry().getCommandsMetadata();
154
+ if (commandsMeta.length > 0) {
155
+ const commands = commandsMeta.map(cmd => {
156
+ const command = {
157
+ name: cmd.name,
158
+ description: cmd.description
159
+ };
160
+ if (cmd.options) {
161
+ command.options = cmd.options;
162
+ }
163
+ return command;
164
+ });
165
+ if (bot.guildId) {
166
+ await discord.registerGuildCommands(appId, bot.guildId, commands);
167
+ }
168
+ else {
169
+ await discord.registerCommands(appId, commands);
170
+ }
171
+ console.log(` ${chalk.green('✓')} ${chalk.bold(appId.slice(-6))} ${chalk.dim(`${commands.length} comando(s)`)}`);
172
+ commands.forEach(cmd => {
173
+ console.log(chalk.gray(` /${cmd.name}`));
174
+ });
175
+ }
176
+ }
177
+ catch (error) {
178
+ console.log(chalk.red(` ✗ ${appId.slice(-6)}: ${error}`));
179
+ }
180
+ }
181
+ console.log();
182
+ }
183
+ console.log(chalk.dim(' Pressione Ctrl+C para parar'));
184
+ console.log();
185
+ }
186
+ };
187
+ }
188
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAA2B,MAAM,oCAAoC,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,SAAS,eAAe,CAAC,SAAiB,EAAE,SAAiB,EAAE,SAAiB,EAAE,IAAY;IAC1F,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAC5B,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,EAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAC7B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAChC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IAC/D,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAChF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE1C,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,KAAK,EAAE,OAAgB,EAAqB,EAAE;QAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;YACnD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC/B,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAChC,CAAC,EAAE;gBACA,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;YAChE,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAElC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,IAAI,QAAQ,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,WAQH,CAAC;QAEF,IAAI,CAAC;YACD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO,IAAI,QAAQ,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,IAAI,QAAQ,CAAC,kCAAkC,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO,IAAI,QAAQ,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;YAC5C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;gBAC7C,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,WAAqD,CAAC,CAAC;YACtF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;oBAC/B,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,KAAK,EAAE,EAAE,EAAE;iBAC3D,CAAC,EAAE;oBACA,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAC,CAAC;YACP,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;oBAC/B,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,EAAE;iBACnD,CAAC,EAAE;oBACA,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAClD,CAAC,CAAC;YACP,CAAC;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC/B,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,MAAM;aACf,CAAC,EAAE;gBACA,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,IAAI,aAAa,UAAU,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC/B,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE;aACjD,CAAC,EAAE;gBACA,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACH,MAAM,CAAC,MAAiB;YACpB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,SAAS,CAAC,aAAqB;YAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACtC,CAAC;QAED,OAAO;YACH,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,CAAC,KAAK;YACP,MAAM,SAAS,GAAG,UAA6D,CAAC;YAEhF,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;gBAChB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACJ,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBACrE,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;oBACnD,MAAM,MAAM,GAAa,EAAE,CAAC;oBAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;wBAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACvB,CAAC;oBACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAE9C,MAAM,GAAG,GAAG,kBAAkB,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;oBACtD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;oBAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;wBACrD,IAAI,KAAK;4BAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBACzE,CAAC;oBAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;oBACnC,MAAM,OAAO,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC;oBAEtD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;wBAC7B,MAAM;wBACN,OAAO;wBACP,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;qBAC9B,CAAC,CAAC;oBAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;oBACxC,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAE3C,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAC/E,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;gBAEH,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACvC,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACxG,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;YACtH,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,IAAI,oBAAoB,EAAE,CAAC;gBACvB,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC9B,IAAI,CAAC;wBACD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;wBACrD,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,mBAAmB,EAAE,CAAC;wBAEpE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC1B,MAAM,QAAQ,GAAyB,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gCAC1D,MAAM,OAAO,GAAuB;oCAChC,IAAI,EAAE,GAAG,CAAC,IAAI;oCACd,WAAW,EAAE,GAAG,CAAC,WAAW;iCAC/B,CAAC;gCACF,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oCACd,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;gCAClC,CAAC;gCACD,OAAO,OAAO,CAAC;4BACnB,CAAC,CAAC,CAAC;4BAEH,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gCACd,MAAM,OAAO,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;4BACtE,CAAC;iCAAM,CAAC;gCACJ,MAAM,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;4BACpD,CAAC;4BAED,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC;4BAClH,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gCACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;4BAClD,CAAC,CAAC,CAAC;wBACP,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;oBAC/D,CAAC;gBACL,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { FlowEngine } from '@discord-flow/core';
2
+ export interface BotConfig {
3
+ applicationId: string;
4
+ publicKey: string;
5
+ token: string;
6
+ engine: FlowEngine;
7
+ guildId?: string;
8
+ }
9
+ export interface MultiBotServerOptions {
10
+ port?: number;
11
+ bots: BotConfig[];
12
+ autoRegisterCommands?: boolean;
13
+ }
14
+ export interface MultiBotServer {
15
+ start(): Promise<void>;
16
+ addBot(config: BotConfig): void;
17
+ removeBot(applicationId: string): boolean;
18
+ getBots(): Map<string, BotConfig>;
19
+ }
20
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,SAAS;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1C,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACrC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@discord-flow/multibots",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Multi-bot server for discord-flow - run multiple bots on a single HTTP server",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -39,4 +39,4 @@
39
39
  "url": "https://github.com/discord-flow/discord-flow.git",
40
40
  "directory": "packages/multibots"
41
41
  }
42
- }
42
+ }