@discord-flow/adapter-discord-http 1.0.0
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/dist/adapter.d.ts +19 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +92 -0
- package/dist/adapter.js.map +1 -0
- package/dist/api.d.ts +275 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +207 -0
- package/dist/api.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.d.ts +37 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +74 -0
- package/dist/parser.js.map +1 -0
- package/dist/response.d.ts +16 -0
- package/dist/response.d.ts.map +1 -0
- package/dist/response.js +64 -0
- package/dist/response.js.map +1 -0
- package/dist/server.d.ts +18 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +126 -0
- package/dist/server.js.map +1 -0
- package/dist/signature.d.ts +2 -0
- package/dist/signature.d.ts.map +1 -0
- package/dist/signature.js +28 -0
- package/dist/signature.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { FlowEngine } from '@discord-flow/core';
|
|
2
|
+
export interface DiscordAdapterConfig {
|
|
3
|
+
publicKey: string;
|
|
4
|
+
engine: FlowEngine;
|
|
5
|
+
onError?: (error: Error) => void;
|
|
6
|
+
}
|
|
7
|
+
declare function logError(message: string, error?: unknown): void;
|
|
8
|
+
declare function logInfo(message: string): void;
|
|
9
|
+
declare function logSuccess(message: string): void;
|
|
10
|
+
export declare class DiscordHttpAdapter {
|
|
11
|
+
private readonly publicKey;
|
|
12
|
+
private readonly engine;
|
|
13
|
+
private readonly onError;
|
|
14
|
+
constructor(config: DiscordAdapterConfig);
|
|
15
|
+
handleRequest(request: Request): Promise<Response>;
|
|
16
|
+
private processInteraction;
|
|
17
|
+
}
|
|
18
|
+
export { logError, logInfo, logSuccess };
|
|
19
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOrD,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACpC;AAED,iBAAS,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAOxD;AAED,iBAAS,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGtC;AAED,iBAAS,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGzC;AAED,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,MAAM,EAAE,oBAAoB;IAMlC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;YA2B1C,kBAAkB;CA8BnC;AAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/adapter.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DiscordHttpAdapter = void 0;
|
|
7
|
+
exports.logError = logError;
|
|
8
|
+
exports.logInfo = logInfo;
|
|
9
|
+
exports.logSuccess = logSuccess;
|
|
10
|
+
const types_1 = require("@discord-flow/types");
|
|
11
|
+
const signature_js_1 = require("./signature.js");
|
|
12
|
+
const parser_js_1 = require("./parser.js");
|
|
13
|
+
const response_js_1 = require("./response.js");
|
|
14
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
15
|
+
function logError(message, error) {
|
|
16
|
+
const timestamp = new Date().toLocaleTimeString();
|
|
17
|
+
console.log(`${chalk_1.default.gray(timestamp)} ${chalk_1.default.red('✗')} ${message}`);
|
|
18
|
+
if (error) {
|
|
19
|
+
const errorStr = error instanceof Error ? error.message : String(error);
|
|
20
|
+
console.log(chalk_1.default.dim(` ${errorStr}`));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function logInfo(message) {
|
|
24
|
+
const timestamp = new Date().toLocaleTimeString();
|
|
25
|
+
console.log(`${chalk_1.default.gray(timestamp)} ${chalk_1.default.blue('→')} ${message}`);
|
|
26
|
+
}
|
|
27
|
+
function logSuccess(message) {
|
|
28
|
+
const timestamp = new Date().toLocaleTimeString();
|
|
29
|
+
console.log(`${chalk_1.default.gray(timestamp)} ${chalk_1.default.green('✓')} ${message}`);
|
|
30
|
+
}
|
|
31
|
+
class DiscordHttpAdapter {
|
|
32
|
+
publicKey;
|
|
33
|
+
engine;
|
|
34
|
+
onError;
|
|
35
|
+
constructor(config) {
|
|
36
|
+
this.publicKey = config.publicKey;
|
|
37
|
+
this.engine = config.engine;
|
|
38
|
+
this.onError = config.onError ?? ((e) => logError('Error', e));
|
|
39
|
+
}
|
|
40
|
+
async handleRequest(request) {
|
|
41
|
+
const signature = request.headers.get('x-signature-ed25519');
|
|
42
|
+
const timestamp = request.headers.get('x-signature-timestamp');
|
|
43
|
+
if (!signature || !timestamp) {
|
|
44
|
+
logError('Request sem assinatura');
|
|
45
|
+
return new Response('Unauthorized', { status: 401 });
|
|
46
|
+
}
|
|
47
|
+
const body = await request.text();
|
|
48
|
+
const isValid = await (0, signature_js_1.verifySignature)(body, signature, timestamp, this.publicKey);
|
|
49
|
+
if (!isValid) {
|
|
50
|
+
logError('Assinatura inválida');
|
|
51
|
+
return new Response('Invalid signature', { status: 401 });
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const interaction = JSON.parse(body);
|
|
55
|
+
return await this.processInteraction(interaction);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
logError('Erro ao processar interação', error);
|
|
59
|
+
this.onError(error instanceof Error ? error : new Error(String(error)));
|
|
60
|
+
return Response.json((0, response_js_1.buildError)('Internal error'));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async processInteraction(interaction) {
|
|
64
|
+
if (interaction.type === types_1.InteractionType.PING) {
|
|
65
|
+
logSuccess('PING recebido - Endpoint verificado!');
|
|
66
|
+
return Response.json((0, response_js_1.buildPong)());
|
|
67
|
+
}
|
|
68
|
+
const event = (0, parser_js_1.parseInteraction)(interaction);
|
|
69
|
+
if (!event) {
|
|
70
|
+
logError(`Tipo de interação desconhecido: ${interaction.type}`);
|
|
71
|
+
return Response.json((0, response_js_1.buildError)('Unknown interaction type'));
|
|
72
|
+
}
|
|
73
|
+
const key = interaction.data?.name ?? interaction.data?.custom_id ?? event.key;
|
|
74
|
+
logInfo(`${event.type.toUpperCase()} → ${key}`);
|
|
75
|
+
try {
|
|
76
|
+
const flowResponse = await this.engine.process(event);
|
|
77
|
+
if (!flowResponse) {
|
|
78
|
+
logError(`Nenhum handler para: ${event.type}/${event.key}`);
|
|
79
|
+
return Response.json((0, response_js_1.buildError)('No handler found'));
|
|
80
|
+
}
|
|
81
|
+
logSuccess(`Resposta enviada`);
|
|
82
|
+
const isUpdate = event.type !== 'command';
|
|
83
|
+
return Response.json((0, response_js_1.buildResponse)(flowResponse, isUpdate));
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
logError(`Erro no handler: ${event.type}/${event.key}`, error);
|
|
87
|
+
return Response.json((0, response_js_1.buildError)('Handler error'));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.DiscordHttpAdapter = DiscordHttpAdapter;
|
|
92
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
export interface DiscordAPIConfig {
|
|
2
|
+
token: string;
|
|
3
|
+
applicationId?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class DiscordAPI {
|
|
6
|
+
private readonly token;
|
|
7
|
+
constructor(config: DiscordAPIConfig);
|
|
8
|
+
private request;
|
|
9
|
+
getApplicationInfo(): Promise<{
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
}>;
|
|
13
|
+
createChannel(guildId: string, options: CreateChannelOptions): Promise<Channel>;
|
|
14
|
+
deleteChannel(channelId: string): Promise<void>;
|
|
15
|
+
editChannel(channelId: string, options: EditChannelOptions): Promise<Channel>;
|
|
16
|
+
addRole(guildId: string, userId: string, roleId: string): Promise<void>;
|
|
17
|
+
removeRole(guildId: string, userId: string, roleId: string): Promise<void>;
|
|
18
|
+
createRole(guildId: string, options?: CreateRoleOptions): Promise<Role>;
|
|
19
|
+
deleteRole(guildId: string, roleId: string): Promise<void>;
|
|
20
|
+
editRole(guildId: string, roleId: string, options: EditRoleOptions): Promise<Role>;
|
|
21
|
+
kickMember(guildId: string, userId: string, reason?: string): Promise<void>;
|
|
22
|
+
banMember(guildId: string, userId: string, options?: BanOptions): Promise<void>;
|
|
23
|
+
unbanMember(guildId: string, userId: string): Promise<void>;
|
|
24
|
+
timeoutMember(guildId: string, userId: string, until: Date | null): Promise<void>;
|
|
25
|
+
sendMessage(channelId: string, content: MessagePayload): Promise<Message>;
|
|
26
|
+
editMessage(channelId: string, messageId: string, content: MessagePayload): Promise<Message>;
|
|
27
|
+
deleteMessage(channelId: string, messageId: string): Promise<void>;
|
|
28
|
+
addReaction(channelId: string, messageId: string, emoji: string): Promise<void>;
|
|
29
|
+
removeReaction(channelId: string, messageId: string, emoji: string): Promise<void>;
|
|
30
|
+
pinMessage(channelId: string, messageId: string): Promise<void>;
|
|
31
|
+
unpinMessage(channelId: string, messageId: string): Promise<void>;
|
|
32
|
+
createThread(channelId: string, options: CreateThreadOptions): Promise<Channel>;
|
|
33
|
+
getUser(userId: string): Promise<User>;
|
|
34
|
+
getMember(guildId: string, userId: string): Promise<Member>;
|
|
35
|
+
getGuild(guildId: string): Promise<Guild>;
|
|
36
|
+
getChannel(channelId: string): Promise<Channel>;
|
|
37
|
+
getRoles(guildId: string): Promise<Role[]>;
|
|
38
|
+
getChannels(guildId: string): Promise<Channel[]>;
|
|
39
|
+
createInvite(channelId: string, options?: CreateInviteOptions): Promise<Invite>;
|
|
40
|
+
setNickname(guildId: string, userId: string, nickname: string | null): Promise<void>;
|
|
41
|
+
moveMember(guildId: string, userId: string, channelId: string | null): Promise<void>;
|
|
42
|
+
setChannelPermissions(channelId: string, overwriteId: string, options: PermissionOverwrite): Promise<void>;
|
|
43
|
+
deleteChannelPermissions(channelId: string, overwriteId: string): Promise<void>;
|
|
44
|
+
followupMessage(applicationId: string, interactionToken: string, content: MessagePayload): Promise<Message>;
|
|
45
|
+
editOriginalResponse(applicationId: string, interactionToken: string, content: MessagePayload): Promise<Message>;
|
|
46
|
+
deleteOriginalResponse(applicationId: string, interactionToken: string): Promise<void>;
|
|
47
|
+
registerCommands(applicationId: string, commands: ApplicationCommand[]): Promise<void>;
|
|
48
|
+
registerGuildCommands(applicationId: string, guildId: string, commands: ApplicationCommand[]): Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
export interface CreateChannelOptions {
|
|
51
|
+
name: string;
|
|
52
|
+
type?: number;
|
|
53
|
+
topic?: string;
|
|
54
|
+
bitrate?: number;
|
|
55
|
+
user_limit?: number;
|
|
56
|
+
rate_limit_per_user?: number;
|
|
57
|
+
position?: number;
|
|
58
|
+
permission_overwrites?: PermissionOverwrite[];
|
|
59
|
+
parent_id?: string;
|
|
60
|
+
nsfw?: boolean;
|
|
61
|
+
}
|
|
62
|
+
export interface EditChannelOptions {
|
|
63
|
+
name?: string;
|
|
64
|
+
type?: number;
|
|
65
|
+
position?: number;
|
|
66
|
+
topic?: string;
|
|
67
|
+
nsfw?: boolean;
|
|
68
|
+
rate_limit_per_user?: number;
|
|
69
|
+
bitrate?: number;
|
|
70
|
+
user_limit?: number;
|
|
71
|
+
permission_overwrites?: PermissionOverwrite[];
|
|
72
|
+
parent_id?: string;
|
|
73
|
+
}
|
|
74
|
+
export interface CreateRoleOptions {
|
|
75
|
+
name?: string;
|
|
76
|
+
permissions?: string;
|
|
77
|
+
color?: number;
|
|
78
|
+
hoist?: boolean;
|
|
79
|
+
mentionable?: boolean;
|
|
80
|
+
}
|
|
81
|
+
export interface EditRoleOptions {
|
|
82
|
+
name?: string;
|
|
83
|
+
permissions?: string;
|
|
84
|
+
color?: number;
|
|
85
|
+
hoist?: boolean;
|
|
86
|
+
mentionable?: boolean;
|
|
87
|
+
}
|
|
88
|
+
export interface BanOptions {
|
|
89
|
+
delete_message_seconds?: number;
|
|
90
|
+
}
|
|
91
|
+
export interface MessagePayload {
|
|
92
|
+
content?: string;
|
|
93
|
+
embeds?: unknown[];
|
|
94
|
+
components?: unknown[];
|
|
95
|
+
flags?: number;
|
|
96
|
+
tts?: boolean;
|
|
97
|
+
allowed_mentions?: {
|
|
98
|
+
parse?: string[];
|
|
99
|
+
users?: string[];
|
|
100
|
+
roles?: string[];
|
|
101
|
+
replied_user?: boolean;
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export interface CreateThreadOptions {
|
|
105
|
+
name: string;
|
|
106
|
+
auto_archive_duration?: number;
|
|
107
|
+
type?: number;
|
|
108
|
+
invitable?: boolean;
|
|
109
|
+
rate_limit_per_user?: number;
|
|
110
|
+
}
|
|
111
|
+
export interface CreateInviteOptions {
|
|
112
|
+
max_age?: number;
|
|
113
|
+
max_uses?: number;
|
|
114
|
+
temporary?: boolean;
|
|
115
|
+
unique?: boolean;
|
|
116
|
+
}
|
|
117
|
+
export interface PermissionOverwrite {
|
|
118
|
+
id: string;
|
|
119
|
+
type: 0 | 1;
|
|
120
|
+
allow?: string;
|
|
121
|
+
deny?: string;
|
|
122
|
+
}
|
|
123
|
+
export interface ApplicationCommand {
|
|
124
|
+
name: string;
|
|
125
|
+
description: string;
|
|
126
|
+
type?: number;
|
|
127
|
+
options?: ApplicationCommandOption[];
|
|
128
|
+
default_member_permissions?: string;
|
|
129
|
+
dm_permission?: boolean;
|
|
130
|
+
}
|
|
131
|
+
export interface ApplicationCommandOption {
|
|
132
|
+
type: number;
|
|
133
|
+
name: string;
|
|
134
|
+
description: string;
|
|
135
|
+
required?: boolean;
|
|
136
|
+
choices?: {
|
|
137
|
+
name: string;
|
|
138
|
+
value: string | number;
|
|
139
|
+
}[];
|
|
140
|
+
options?: ApplicationCommandOption[];
|
|
141
|
+
channel_types?: number[];
|
|
142
|
+
min_value?: number;
|
|
143
|
+
max_value?: number;
|
|
144
|
+
min_length?: number;
|
|
145
|
+
max_length?: number;
|
|
146
|
+
autocomplete?: boolean;
|
|
147
|
+
}
|
|
148
|
+
export interface Channel {
|
|
149
|
+
id: string;
|
|
150
|
+
type: number;
|
|
151
|
+
guild_id?: string;
|
|
152
|
+
name?: string;
|
|
153
|
+
topic?: string;
|
|
154
|
+
position?: number;
|
|
155
|
+
permission_overwrites?: PermissionOverwrite[];
|
|
156
|
+
parent_id?: string;
|
|
157
|
+
nsfw?: boolean;
|
|
158
|
+
}
|
|
159
|
+
export interface Role {
|
|
160
|
+
id: string;
|
|
161
|
+
name: string;
|
|
162
|
+
color: number;
|
|
163
|
+
hoist: boolean;
|
|
164
|
+
position: number;
|
|
165
|
+
permissions: string;
|
|
166
|
+
managed: boolean;
|
|
167
|
+
mentionable: boolean;
|
|
168
|
+
}
|
|
169
|
+
export interface User {
|
|
170
|
+
id: string;
|
|
171
|
+
username: string;
|
|
172
|
+
discriminator: string;
|
|
173
|
+
global_name?: string;
|
|
174
|
+
avatar?: string;
|
|
175
|
+
bot?: boolean;
|
|
176
|
+
}
|
|
177
|
+
export interface Member {
|
|
178
|
+
user?: User;
|
|
179
|
+
nick?: string;
|
|
180
|
+
roles: string[];
|
|
181
|
+
joined_at: string;
|
|
182
|
+
premium_since?: string;
|
|
183
|
+
deaf: boolean;
|
|
184
|
+
mute: boolean;
|
|
185
|
+
pending?: boolean;
|
|
186
|
+
communication_disabled_until?: string;
|
|
187
|
+
}
|
|
188
|
+
export interface Guild {
|
|
189
|
+
id: string;
|
|
190
|
+
name: string;
|
|
191
|
+
icon?: string;
|
|
192
|
+
owner_id: string;
|
|
193
|
+
member_count?: number;
|
|
194
|
+
}
|
|
195
|
+
export interface Message {
|
|
196
|
+
id: string;
|
|
197
|
+
channel_id: string;
|
|
198
|
+
author: User;
|
|
199
|
+
content: string;
|
|
200
|
+
timestamp: string;
|
|
201
|
+
}
|
|
202
|
+
export interface Invite {
|
|
203
|
+
code: string;
|
|
204
|
+
channel: {
|
|
205
|
+
id: string;
|
|
206
|
+
name: string;
|
|
207
|
+
};
|
|
208
|
+
guild?: {
|
|
209
|
+
id: string;
|
|
210
|
+
name: string;
|
|
211
|
+
};
|
|
212
|
+
inviter?: User;
|
|
213
|
+
uses?: number;
|
|
214
|
+
max_uses?: number;
|
|
215
|
+
max_age?: number;
|
|
216
|
+
temporary?: boolean;
|
|
217
|
+
}
|
|
218
|
+
export declare const ChannelType: {
|
|
219
|
+
readonly GUILD_TEXT: 0;
|
|
220
|
+
readonly DM: 1;
|
|
221
|
+
readonly GUILD_VOICE: 2;
|
|
222
|
+
readonly GROUP_DM: 3;
|
|
223
|
+
readonly GUILD_CATEGORY: 4;
|
|
224
|
+
readonly GUILD_ANNOUNCEMENT: 5;
|
|
225
|
+
readonly ANNOUNCEMENT_THREAD: 10;
|
|
226
|
+
readonly PUBLIC_THREAD: 11;
|
|
227
|
+
readonly PRIVATE_THREAD: 12;
|
|
228
|
+
readonly GUILD_STAGE_VOICE: 13;
|
|
229
|
+
readonly GUILD_DIRECTORY: 14;
|
|
230
|
+
readonly GUILD_FORUM: 15;
|
|
231
|
+
};
|
|
232
|
+
export declare const Permissions: {
|
|
233
|
+
readonly CREATE_INSTANT_INVITE: bigint;
|
|
234
|
+
readonly KICK_MEMBERS: bigint;
|
|
235
|
+
readonly BAN_MEMBERS: bigint;
|
|
236
|
+
readonly ADMINISTRATOR: bigint;
|
|
237
|
+
readonly MANAGE_CHANNELS: bigint;
|
|
238
|
+
readonly MANAGE_GUILD: bigint;
|
|
239
|
+
readonly ADD_REACTIONS: bigint;
|
|
240
|
+
readonly VIEW_AUDIT_LOG: bigint;
|
|
241
|
+
readonly PRIORITY_SPEAKER: bigint;
|
|
242
|
+
readonly STREAM: bigint;
|
|
243
|
+
readonly VIEW_CHANNEL: bigint;
|
|
244
|
+
readonly SEND_MESSAGES: bigint;
|
|
245
|
+
readonly SEND_TTS_MESSAGES: bigint;
|
|
246
|
+
readonly MANAGE_MESSAGES: bigint;
|
|
247
|
+
readonly EMBED_LINKS: bigint;
|
|
248
|
+
readonly ATTACH_FILES: bigint;
|
|
249
|
+
readonly READ_MESSAGE_HISTORY: bigint;
|
|
250
|
+
readonly MENTION_EVERYONE: bigint;
|
|
251
|
+
readonly USE_EXTERNAL_EMOJIS: bigint;
|
|
252
|
+
readonly VIEW_GUILD_INSIGHTS: bigint;
|
|
253
|
+
readonly CONNECT: bigint;
|
|
254
|
+
readonly SPEAK: bigint;
|
|
255
|
+
readonly MUTE_MEMBERS: bigint;
|
|
256
|
+
readonly DEAFEN_MEMBERS: bigint;
|
|
257
|
+
readonly MOVE_MEMBERS: bigint;
|
|
258
|
+
readonly USE_VAD: bigint;
|
|
259
|
+
readonly CHANGE_NICKNAME: bigint;
|
|
260
|
+
readonly MANAGE_NICKNAMES: bigint;
|
|
261
|
+
readonly MANAGE_ROLES: bigint;
|
|
262
|
+
readonly MANAGE_WEBHOOKS: bigint;
|
|
263
|
+
readonly MANAGE_EMOJIS_AND_STICKERS: bigint;
|
|
264
|
+
readonly USE_APPLICATION_COMMANDS: bigint;
|
|
265
|
+
readonly REQUEST_TO_SPEAK: bigint;
|
|
266
|
+
readonly MANAGE_EVENTS: bigint;
|
|
267
|
+
readonly MANAGE_THREADS: bigint;
|
|
268
|
+
readonly CREATE_PUBLIC_THREADS: bigint;
|
|
269
|
+
readonly CREATE_PRIVATE_THREADS: bigint;
|
|
270
|
+
readonly USE_EXTERNAL_STICKERS: bigint;
|
|
271
|
+
readonly SEND_MESSAGES_IN_THREADS: bigint;
|
|
272
|
+
readonly USE_EMBEDDED_ACTIVITIES: bigint;
|
|
273
|
+
readonly MODERATE_MEMBERS: bigint;
|
|
274
|
+
};
|
|
275
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Permissions = exports.ChannelType = exports.DiscordAPI = void 0;
|
|
4
|
+
const BASE_URL = 'https://discord.com/api/v10';
|
|
5
|
+
class DiscordAPI {
|
|
6
|
+
token;
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.token = config.token;
|
|
9
|
+
}
|
|
10
|
+
async request(method, endpoint, body) {
|
|
11
|
+
const init = {
|
|
12
|
+
method,
|
|
13
|
+
headers: {
|
|
14
|
+
'Authorization': `Bot ${this.token}`,
|
|
15
|
+
'Content-Type': 'application/json'
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
if (body !== undefined) {
|
|
19
|
+
init.body = JSON.stringify(body);
|
|
20
|
+
}
|
|
21
|
+
const response = await fetch(`${BASE_URL}${endpoint}`, init);
|
|
22
|
+
if (!response.ok) {
|
|
23
|
+
const error = await response.text();
|
|
24
|
+
throw new Error(`Discord API Error ${response.status}: ${error}`);
|
|
25
|
+
}
|
|
26
|
+
if (response.status === 204)
|
|
27
|
+
return {};
|
|
28
|
+
return response.json();
|
|
29
|
+
}
|
|
30
|
+
async getApplicationInfo() {
|
|
31
|
+
return this.request('GET', '/applications/@me');
|
|
32
|
+
}
|
|
33
|
+
async createChannel(guildId, options) {
|
|
34
|
+
return this.request('POST', `/guilds/${guildId}/channels`, options);
|
|
35
|
+
}
|
|
36
|
+
async deleteChannel(channelId) {
|
|
37
|
+
await this.request('DELETE', `/channels/${channelId}`);
|
|
38
|
+
}
|
|
39
|
+
async editChannel(channelId, options) {
|
|
40
|
+
return this.request('PATCH', `/channels/${channelId}`, options);
|
|
41
|
+
}
|
|
42
|
+
async addRole(guildId, userId, roleId) {
|
|
43
|
+
await this.request('PUT', `/guilds/${guildId}/members/${userId}/roles/${roleId}`);
|
|
44
|
+
}
|
|
45
|
+
async removeRole(guildId, userId, roleId) {
|
|
46
|
+
await this.request('DELETE', `/guilds/${guildId}/members/${userId}/roles/${roleId}`);
|
|
47
|
+
}
|
|
48
|
+
async createRole(guildId, options = {}) {
|
|
49
|
+
return this.request('POST', `/guilds/${guildId}/roles`, options);
|
|
50
|
+
}
|
|
51
|
+
async deleteRole(guildId, roleId) {
|
|
52
|
+
await this.request('DELETE', `/guilds/${guildId}/roles/${roleId}`);
|
|
53
|
+
}
|
|
54
|
+
async editRole(guildId, roleId, options) {
|
|
55
|
+
return this.request('PATCH', `/guilds/${guildId}/roles/${roleId}`, options);
|
|
56
|
+
}
|
|
57
|
+
async kickMember(guildId, userId, reason) {
|
|
58
|
+
const headers = {};
|
|
59
|
+
if (reason)
|
|
60
|
+
headers['X-Audit-Log-Reason'] = reason;
|
|
61
|
+
await this.request('DELETE', `/guilds/${guildId}/members/${userId}`);
|
|
62
|
+
}
|
|
63
|
+
async banMember(guildId, userId, options) {
|
|
64
|
+
await this.request('PUT', `/guilds/${guildId}/bans/${userId}`, options);
|
|
65
|
+
}
|
|
66
|
+
async unbanMember(guildId, userId) {
|
|
67
|
+
await this.request('DELETE', `/guilds/${guildId}/bans/${userId}`);
|
|
68
|
+
}
|
|
69
|
+
async timeoutMember(guildId, userId, until) {
|
|
70
|
+
await this.request('PATCH', `/guilds/${guildId}/members/${userId}`, {
|
|
71
|
+
communication_disabled_until: until?.toISOString() ?? null
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async sendMessage(channelId, content) {
|
|
75
|
+
return this.request('POST', `/channels/${channelId}/messages`, content);
|
|
76
|
+
}
|
|
77
|
+
async editMessage(channelId, messageId, content) {
|
|
78
|
+
return this.request('PATCH', `/channels/${channelId}/messages/${messageId}`, content);
|
|
79
|
+
}
|
|
80
|
+
async deleteMessage(channelId, messageId) {
|
|
81
|
+
await this.request('DELETE', `/channels/${channelId}/messages/${messageId}`);
|
|
82
|
+
}
|
|
83
|
+
async addReaction(channelId, messageId, emoji) {
|
|
84
|
+
const encoded = encodeURIComponent(emoji);
|
|
85
|
+
await this.request('PUT', `/channels/${channelId}/messages/${messageId}/reactions/${encoded}/@me`);
|
|
86
|
+
}
|
|
87
|
+
async removeReaction(channelId, messageId, emoji) {
|
|
88
|
+
const encoded = encodeURIComponent(emoji);
|
|
89
|
+
await this.request('DELETE', `/channels/${channelId}/messages/${messageId}/reactions/${encoded}/@me`);
|
|
90
|
+
}
|
|
91
|
+
async pinMessage(channelId, messageId) {
|
|
92
|
+
await this.request('PUT', `/channels/${channelId}/pins/${messageId}`);
|
|
93
|
+
}
|
|
94
|
+
async unpinMessage(channelId, messageId) {
|
|
95
|
+
await this.request('DELETE', `/channels/${channelId}/pins/${messageId}`);
|
|
96
|
+
}
|
|
97
|
+
async createThread(channelId, options) {
|
|
98
|
+
return this.request('POST', `/channels/${channelId}/threads`, options);
|
|
99
|
+
}
|
|
100
|
+
async getUser(userId) {
|
|
101
|
+
return this.request('GET', `/users/${userId}`);
|
|
102
|
+
}
|
|
103
|
+
async getMember(guildId, userId) {
|
|
104
|
+
return this.request('GET', `/guilds/${guildId}/members/${userId}`);
|
|
105
|
+
}
|
|
106
|
+
async getGuild(guildId) {
|
|
107
|
+
return this.request('GET', `/guilds/${guildId}`);
|
|
108
|
+
}
|
|
109
|
+
async getChannel(channelId) {
|
|
110
|
+
return this.request('GET', `/channels/${channelId}`);
|
|
111
|
+
}
|
|
112
|
+
async getRoles(guildId) {
|
|
113
|
+
return this.request('GET', `/guilds/${guildId}/roles`);
|
|
114
|
+
}
|
|
115
|
+
async getChannels(guildId) {
|
|
116
|
+
return this.request('GET', `/guilds/${guildId}/channels`);
|
|
117
|
+
}
|
|
118
|
+
async createInvite(channelId, options = {}) {
|
|
119
|
+
return this.request('POST', `/channels/${channelId}/invites`, options);
|
|
120
|
+
}
|
|
121
|
+
async setNickname(guildId, userId, nickname) {
|
|
122
|
+
await this.request('PATCH', `/guilds/${guildId}/members/${userId}`, { nick: nickname });
|
|
123
|
+
}
|
|
124
|
+
async moveMember(guildId, userId, channelId) {
|
|
125
|
+
await this.request('PATCH', `/guilds/${guildId}/members/${userId}`, { channel_id: channelId });
|
|
126
|
+
}
|
|
127
|
+
async setChannelPermissions(channelId, overwriteId, options) {
|
|
128
|
+
await this.request('PUT', `/channels/${channelId}/permissions/${overwriteId}`, options);
|
|
129
|
+
}
|
|
130
|
+
async deleteChannelPermissions(channelId, overwriteId) {
|
|
131
|
+
await this.request('DELETE', `/channels/${channelId}/permissions/${overwriteId}`);
|
|
132
|
+
}
|
|
133
|
+
async followupMessage(applicationId, interactionToken, content) {
|
|
134
|
+
return this.request('POST', `/webhooks/${applicationId}/${interactionToken}`, content);
|
|
135
|
+
}
|
|
136
|
+
async editOriginalResponse(applicationId, interactionToken, content) {
|
|
137
|
+
return this.request('PATCH', `/webhooks/${applicationId}/${interactionToken}/messages/@original`, content);
|
|
138
|
+
}
|
|
139
|
+
async deleteOriginalResponse(applicationId, interactionToken) {
|
|
140
|
+
await this.request('DELETE', `/webhooks/${applicationId}/${interactionToken}/messages/@original`);
|
|
141
|
+
}
|
|
142
|
+
async registerCommands(applicationId, commands) {
|
|
143
|
+
await this.request('PUT', `/applications/${applicationId}/commands`, commands);
|
|
144
|
+
}
|
|
145
|
+
async registerGuildCommands(applicationId, guildId, commands) {
|
|
146
|
+
await this.request('PUT', `/applications/${applicationId}/guilds/${guildId}/commands`, commands);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.DiscordAPI = DiscordAPI;
|
|
150
|
+
exports.ChannelType = {
|
|
151
|
+
GUILD_TEXT: 0,
|
|
152
|
+
DM: 1,
|
|
153
|
+
GUILD_VOICE: 2,
|
|
154
|
+
GROUP_DM: 3,
|
|
155
|
+
GUILD_CATEGORY: 4,
|
|
156
|
+
GUILD_ANNOUNCEMENT: 5,
|
|
157
|
+
ANNOUNCEMENT_THREAD: 10,
|
|
158
|
+
PUBLIC_THREAD: 11,
|
|
159
|
+
PRIVATE_THREAD: 12,
|
|
160
|
+
GUILD_STAGE_VOICE: 13,
|
|
161
|
+
GUILD_DIRECTORY: 14,
|
|
162
|
+
GUILD_FORUM: 15
|
|
163
|
+
};
|
|
164
|
+
exports.Permissions = {
|
|
165
|
+
CREATE_INSTANT_INVITE: 1n << 0n,
|
|
166
|
+
KICK_MEMBERS: 1n << 1n,
|
|
167
|
+
BAN_MEMBERS: 1n << 2n,
|
|
168
|
+
ADMINISTRATOR: 1n << 3n,
|
|
169
|
+
MANAGE_CHANNELS: 1n << 4n,
|
|
170
|
+
MANAGE_GUILD: 1n << 5n,
|
|
171
|
+
ADD_REACTIONS: 1n << 6n,
|
|
172
|
+
VIEW_AUDIT_LOG: 1n << 7n,
|
|
173
|
+
PRIORITY_SPEAKER: 1n << 8n,
|
|
174
|
+
STREAM: 1n << 9n,
|
|
175
|
+
VIEW_CHANNEL: 1n << 10n,
|
|
176
|
+
SEND_MESSAGES: 1n << 11n,
|
|
177
|
+
SEND_TTS_MESSAGES: 1n << 12n,
|
|
178
|
+
MANAGE_MESSAGES: 1n << 13n,
|
|
179
|
+
EMBED_LINKS: 1n << 14n,
|
|
180
|
+
ATTACH_FILES: 1n << 15n,
|
|
181
|
+
READ_MESSAGE_HISTORY: 1n << 16n,
|
|
182
|
+
MENTION_EVERYONE: 1n << 17n,
|
|
183
|
+
USE_EXTERNAL_EMOJIS: 1n << 18n,
|
|
184
|
+
VIEW_GUILD_INSIGHTS: 1n << 19n,
|
|
185
|
+
CONNECT: 1n << 20n,
|
|
186
|
+
SPEAK: 1n << 21n,
|
|
187
|
+
MUTE_MEMBERS: 1n << 22n,
|
|
188
|
+
DEAFEN_MEMBERS: 1n << 23n,
|
|
189
|
+
MOVE_MEMBERS: 1n << 24n,
|
|
190
|
+
USE_VAD: 1n << 25n,
|
|
191
|
+
CHANGE_NICKNAME: 1n << 26n,
|
|
192
|
+
MANAGE_NICKNAMES: 1n << 27n,
|
|
193
|
+
MANAGE_ROLES: 1n << 28n,
|
|
194
|
+
MANAGE_WEBHOOKS: 1n << 29n,
|
|
195
|
+
MANAGE_EMOJIS_AND_STICKERS: 1n << 30n,
|
|
196
|
+
USE_APPLICATION_COMMANDS: 1n << 31n,
|
|
197
|
+
REQUEST_TO_SPEAK: 1n << 32n,
|
|
198
|
+
MANAGE_EVENTS: 1n << 33n,
|
|
199
|
+
MANAGE_THREADS: 1n << 34n,
|
|
200
|
+
CREATE_PUBLIC_THREADS: 1n << 35n,
|
|
201
|
+
CREATE_PRIVATE_THREADS: 1n << 36n,
|
|
202
|
+
USE_EXTERNAL_STICKERS: 1n << 37n,
|
|
203
|
+
SEND_MESSAGES_IN_THREADS: 1n << 38n,
|
|
204
|
+
USE_EMBEDDED_ACTIVITIES: 1n << 39n,
|
|
205
|
+
MODERATE_MEMBERS: 1n << 40n
|
|
206
|
+
};
|
|
207
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { DiscordHttpAdapter, type DiscordAdapterConfig } from './adapter.js';
|
|
2
|
+
export { createServer, type ServerConfig, type ServerInstance } from './server.js';
|
|
3
|
+
export { verifySignature } from './signature.js';
|
|
4
|
+
export { parseInteraction } from './parser.js';
|
|
5
|
+
export { buildResponse, buildPong, buildError } from './response.js';
|
|
6
|
+
export { DiscordAPI, type DiscordAPIConfig, type CreateChannelOptions, type EditChannelOptions, type CreateRoleOptions, type EditRoleOptions, type BanOptions, type MessagePayload, type CreateThreadOptions, type CreateInviteOptions, type PermissionOverwrite, type ApplicationCommand, type ApplicationCommandOption, type Channel, type Role, type User, type Member, type Guild, type Message, type Invite, ChannelType, Permissions } from './api.js';
|
|
7
|
+
//# 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,kBAAkB,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EACH,UAAU,EACV,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,WAAW,EACX,WAAW,EACd,MAAM,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Permissions = exports.ChannelType = exports.DiscordAPI = exports.buildError = exports.buildPong = exports.buildResponse = exports.parseInteraction = exports.verifySignature = exports.createServer = exports.DiscordHttpAdapter = void 0;
|
|
4
|
+
var adapter_js_1 = require("./adapter.js");
|
|
5
|
+
Object.defineProperty(exports, "DiscordHttpAdapter", { enumerable: true, get: function () { return adapter_js_1.DiscordHttpAdapter; } });
|
|
6
|
+
var server_js_1 = require("./server.js");
|
|
7
|
+
Object.defineProperty(exports, "createServer", { enumerable: true, get: function () { return server_js_1.createServer; } });
|
|
8
|
+
var signature_js_1 = require("./signature.js");
|
|
9
|
+
Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return signature_js_1.verifySignature; } });
|
|
10
|
+
var parser_js_1 = require("./parser.js");
|
|
11
|
+
Object.defineProperty(exports, "parseInteraction", { enumerable: true, get: function () { return parser_js_1.parseInteraction; } });
|
|
12
|
+
var response_js_1 = require("./response.js");
|
|
13
|
+
Object.defineProperty(exports, "buildResponse", { enumerable: true, get: function () { return response_js_1.buildResponse; } });
|
|
14
|
+
Object.defineProperty(exports, "buildPong", { enumerable: true, get: function () { return response_js_1.buildPong; } });
|
|
15
|
+
Object.defineProperty(exports, "buildError", { enumerable: true, get: function () { return response_js_1.buildError; } });
|
|
16
|
+
var api_js_1 = require("./api.js");
|
|
17
|
+
Object.defineProperty(exports, "DiscordAPI", { enumerable: true, get: function () { return api_js_1.DiscordAPI; } });
|
|
18
|
+
Object.defineProperty(exports, "ChannelType", { enumerable: true, get: function () { return api_js_1.ChannelType; } });
|
|
19
|
+
Object.defineProperty(exports, "Permissions", { enumerable: true, get: function () { return api_js_1.Permissions; } });
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA6E;AAApE,gHAAA,kBAAkB,OAAA;AAC3B,yCAAmF;AAA1E,yGAAA,YAAY,OAAA;AACrB,+CAAiD;AAAxC,+GAAA,eAAe,OAAA;AACxB,yCAA+C;AAAtC,6GAAA,gBAAgB,OAAA;AACzB,6CAAqE;AAA5D,4GAAA,aAAa,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,yGAAA,UAAU,OAAA;AAC7C,mCAuBkB;AAtBd,oGAAA,UAAU,OAAA;AAoBV,qGAAA,WAAW,OAAA;AACX,qGAAA,WAAW,OAAA"}
|
package/dist/parser.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { FlowEvent } from '@discord-flow/types';
|
|
2
|
+
export declare function parseInteraction(interaction: DiscordInteraction): FlowEvent | null;
|
|
3
|
+
interface DiscordInteraction {
|
|
4
|
+
type: number;
|
|
5
|
+
data?: {
|
|
6
|
+
name?: string;
|
|
7
|
+
custom_id?: string;
|
|
8
|
+
component_type?: number;
|
|
9
|
+
options?: DiscordCommandOption[];
|
|
10
|
+
values?: string[];
|
|
11
|
+
components?: DiscordModalComponent[];
|
|
12
|
+
};
|
|
13
|
+
member?: {
|
|
14
|
+
user?: {
|
|
15
|
+
id: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
user?: {
|
|
19
|
+
id: string;
|
|
20
|
+
};
|
|
21
|
+
guild_id?: string;
|
|
22
|
+
channel_id?: string;
|
|
23
|
+
}
|
|
24
|
+
interface DiscordCommandOption {
|
|
25
|
+
name: string;
|
|
26
|
+
value?: unknown;
|
|
27
|
+
options?: DiscordCommandOption[];
|
|
28
|
+
}
|
|
29
|
+
interface DiscordModalComponent {
|
|
30
|
+
type: number;
|
|
31
|
+
components?: Array<{
|
|
32
|
+
custom_id?: string;
|
|
33
|
+
value?: string;
|
|
34
|
+
}>;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,qBAAqB,CAAC;AAGhE,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAqClF;AAsCD,UAAU,kBAAkB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;QACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,qBAAqB,EAAE,CAAC;KACxC,CAAC;IACF,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACnC,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,oBAAoB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED,UAAU,qBAAqB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,KAAK,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACN"}
|
package/dist/parser.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseInteraction = parseInteraction;
|
|
4
|
+
const types_1 = require("@discord-flow/types");
|
|
5
|
+
function parseInteraction(interaction) {
|
|
6
|
+
const base = {
|
|
7
|
+
platform: 'discord',
|
|
8
|
+
userId: interaction.member?.user?.id ?? interaction.user?.id ?? '',
|
|
9
|
+
guildId: interaction.guild_id,
|
|
10
|
+
channelId: interaction.channel_id ?? '',
|
|
11
|
+
raw: interaction
|
|
12
|
+
};
|
|
13
|
+
switch (interaction.type) {
|
|
14
|
+
case types_1.InteractionType.APPLICATION_COMMAND:
|
|
15
|
+
return {
|
|
16
|
+
...base,
|
|
17
|
+
type: 'command',
|
|
18
|
+
key: interaction.data?.name ?? '',
|
|
19
|
+
data: parseCommandOptions(interaction.data?.options)
|
|
20
|
+
};
|
|
21
|
+
case types_1.InteractionType.MESSAGE_COMPONENT:
|
|
22
|
+
return {
|
|
23
|
+
...base,
|
|
24
|
+
type: resolveComponentType(interaction.data?.component_type),
|
|
25
|
+
key: interaction.data?.custom_id ?? '',
|
|
26
|
+
data: { values: interaction.data?.values }
|
|
27
|
+
};
|
|
28
|
+
case types_1.InteractionType.MODAL_SUBMIT:
|
|
29
|
+
return {
|
|
30
|
+
...base,
|
|
31
|
+
type: 'modal',
|
|
32
|
+
key: interaction.data?.custom_id ?? '',
|
|
33
|
+
data: parseModalFields(interaction.data?.components)
|
|
34
|
+
};
|
|
35
|
+
default:
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function parseCommandOptions(options) {
|
|
40
|
+
if (!options)
|
|
41
|
+
return {};
|
|
42
|
+
const result = {};
|
|
43
|
+
for (const opt of options) {
|
|
44
|
+
if (opt.options) {
|
|
45
|
+
Object.assign(result, parseCommandOptions(opt.options));
|
|
46
|
+
result._subcommand = opt.name;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
result[opt.name] = opt.value;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
function parseModalFields(components) {
|
|
55
|
+
if (!components)
|
|
56
|
+
return {};
|
|
57
|
+
const result = {};
|
|
58
|
+
for (const row of components) {
|
|
59
|
+
if (row.components) {
|
|
60
|
+
for (const field of row.components) {
|
|
61
|
+
if (field.custom_id && field.value !== undefined) {
|
|
62
|
+
result[field.custom_id] = field.value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
function resolveComponentType(type) {
|
|
70
|
+
if (type === types_1.ComponentType.BUTTON)
|
|
71
|
+
return 'button';
|
|
72
|
+
return 'select';
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":";;AAGA,4CAqCC;AAvCD,+CAAqE;AAErE,SAAgB,gBAAgB,CAAC,WAA+B;IAC5D,MAAM,IAAI,GAAG;QACT,QAAQ,EAAE,SAAkB;QAC5B,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;QAClE,OAAO,EAAE,WAAW,CAAC,QAAQ;QAC7B,SAAS,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE;QACvC,GAAG,EAAE,WAAW;KACnB,CAAC;IAEF,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,uBAAe,CAAC,mBAAmB;YACpC,OAAO;gBACH,GAAG,IAAI;gBACP,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE;gBACjC,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;aACvD,CAAC;QAEN,KAAK,uBAAe,CAAC,iBAAiB;YAClC,OAAO;gBACH,GAAG,IAAI;gBACP,IAAI,EAAE,oBAAoB,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC;gBAC5D,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE;gBACtC,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE;aAC7C,CAAC;QAEN,KAAK,uBAAe,CAAC,YAAY;YAC7B,OAAO;gBACH,GAAG,IAAI;gBACP,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE;gBACtC,IAAI,EAAE,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC;aACvD,CAAC;QAEN;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgC;IACzD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;QAClC,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QACjC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAoC;IAC1D,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC1C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAa;IACvC,IAAI,IAAI,KAAK,qBAAa,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IACnD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { FlowResponse } from '@discord-flow/types';
|
|
2
|
+
export declare function buildResponse(response: FlowResponse, isUpdate?: boolean): DiscordResponse;
|
|
3
|
+
export declare function buildPong(): DiscordResponse;
|
|
4
|
+
export declare function buildError(message: string): DiscordResponse;
|
|
5
|
+
interface DiscordResponse {
|
|
6
|
+
type: number;
|
|
7
|
+
data?: DiscordResponseData;
|
|
8
|
+
}
|
|
9
|
+
interface DiscordResponseData {
|
|
10
|
+
content?: string;
|
|
11
|
+
embeds?: unknown[];
|
|
12
|
+
components?: unknown[];
|
|
13
|
+
flags?: number;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,UAAQ,GAAG,eAAe,CA8BvF;AAgBD,wBAAgB,SAAS,IAAI,eAAe,CAE3C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAQ3D;AAED,UAAU,eAAe;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,UAAU,mBAAmB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
package/dist/response.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildResponse = buildResponse;
|
|
4
|
+
exports.buildPong = buildPong;
|
|
5
|
+
exports.buildError = buildError;
|
|
6
|
+
const types_1 = require("@discord-flow/types");
|
|
7
|
+
function buildResponse(response, isUpdate = false) {
|
|
8
|
+
if (response.deferred) {
|
|
9
|
+
return {
|
|
10
|
+
type: isUpdate
|
|
11
|
+
? types_1.InteractionResponseType.DEFERRED_UPDATE
|
|
12
|
+
: types_1.InteractionResponseType.DEFERRED_CHANNEL_MESSAGE
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
const data = {};
|
|
16
|
+
if (response.content !== undefined)
|
|
17
|
+
data.content = response.content;
|
|
18
|
+
if (response.embeds)
|
|
19
|
+
data.embeds = response.embeds;
|
|
20
|
+
if (response.components)
|
|
21
|
+
data.components = response.components;
|
|
22
|
+
let flags = response.flags ?? 0;
|
|
23
|
+
if (response.ephemeral)
|
|
24
|
+
flags |= types_1.MessageFlags.EPHEMERAL;
|
|
25
|
+
if (hasComponentsV2(response.components)) {
|
|
26
|
+
flags |= types_1.MessageFlags.IS_COMPONENTS_V2;
|
|
27
|
+
}
|
|
28
|
+
if (flags > 0)
|
|
29
|
+
data.flags = flags;
|
|
30
|
+
return {
|
|
31
|
+
type: isUpdate || response.update
|
|
32
|
+
? types_1.InteractionResponseType.UPDATE_MESSAGE
|
|
33
|
+
: types_1.InteractionResponseType.CHANNEL_MESSAGE,
|
|
34
|
+
data
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function hasComponentsV2(components) {
|
|
38
|
+
if (!components)
|
|
39
|
+
return false;
|
|
40
|
+
const v2Types = [9, 10, 11, 12, 13, 14, 17];
|
|
41
|
+
return components.some((c) => {
|
|
42
|
+
if (typeof c !== 'object' || c === null)
|
|
43
|
+
return false;
|
|
44
|
+
const comp = c;
|
|
45
|
+
if (comp.type && v2Types.includes(comp.type))
|
|
46
|
+
return true;
|
|
47
|
+
if (comp.components)
|
|
48
|
+
return hasComponentsV2(comp.components);
|
|
49
|
+
return false;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function buildPong() {
|
|
53
|
+
return { type: types_1.InteractionResponseType.PONG };
|
|
54
|
+
}
|
|
55
|
+
function buildError(message) {
|
|
56
|
+
return {
|
|
57
|
+
type: types_1.InteractionResponseType.CHANNEL_MESSAGE,
|
|
58
|
+
data: {
|
|
59
|
+
content: message,
|
|
60
|
+
flags: types_1.MessageFlags.EPHEMERAL
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":";;AAGA,sCA8BC;AAgBD,8BAEC;AAED,gCAQC;AA5DD,+CAA4E;AAE5E,SAAgB,aAAa,CAAC,QAAsB,EAAE,QAAQ,GAAG,KAAK;IAClE,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO;YACH,IAAI,EAAE,QAAQ;gBACV,CAAC,CAAC,+BAAuB,CAAC,eAAe;gBACzC,CAAC,CAAC,+BAAuB,CAAC,wBAAwB;SACzD,CAAC;IACN,CAAC;IAED,MAAM,IAAI,GAAwB,EAAE,CAAC;IAErC,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACpE,IAAI,QAAQ,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IACnD,IAAI,QAAQ,CAAC,UAAU;QAAE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IAE/D,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,IAAI,QAAQ,CAAC,SAAS;QAAE,KAAK,IAAI,oBAAY,CAAC,SAAS,CAAC;IAExD,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,KAAK,IAAI,oBAAY,CAAC,gBAAgB,CAAC;IAC3C,CAAC;IAED,IAAI,KAAK,GAAG,CAAC;QAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAElC,OAAO;QACH,IAAI,EAAE,QAAQ,IAAI,QAAQ,CAAC,MAAM;YAC7B,CAAC,CAAC,+BAAuB,CAAC,cAAc;YACxC,CAAC,CAAC,+BAAuB,CAAC,eAAe;QAC7C,IAAI;KACP,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,UAAsB;IAC3C,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAE9B,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE5C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE;QAClC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACtD,MAAM,IAAI,GAAG,CAA8C,CAAC;QAC5D,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1D,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,SAAS;IACrB,OAAO,EAAE,IAAI,EAAE,+BAAuB,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,SAAgB,UAAU,CAAC,OAAe;IACtC,OAAO;QACH,IAAI,EAAE,+BAAuB,CAAC,eAAe;QAC7C,IAAI,EAAE;YACF,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,oBAAY,CAAC,SAAS;SAChC;KACJ,CAAC;AACN,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { FlowEngine } from '@discord-flow/core';
|
|
2
|
+
import { type DiscordAdapterConfig } from './adapter.js';
|
|
3
|
+
export interface ServerConfig extends Omit<DiscordAdapterConfig, 'engine'> {
|
|
4
|
+
engine: FlowEngine;
|
|
5
|
+
port?: number;
|
|
6
|
+
hostname?: string;
|
|
7
|
+
path?: string;
|
|
8
|
+
token?: string | undefined;
|
|
9
|
+
guildId?: string | undefined;
|
|
10
|
+
}
|
|
11
|
+
export interface ServerInstance {
|
|
12
|
+
start: () => Promise<void>;
|
|
13
|
+
stop: () => void;
|
|
14
|
+
handler: (request: Request) => Promise<Response>;
|
|
15
|
+
getEndpointUrl: () => string;
|
|
16
|
+
}
|
|
17
|
+
export declare function createServer(config: ServerConfig): ServerInstance;
|
|
18
|
+
//# 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,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAI7E,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC;IACtE,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,cAAc,EAAE,MAAM,MAAM,CAAC;CAChC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CA+IjE"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createServer = createServer;
|
|
7
|
+
const adapter_js_1 = require("./adapter.js");
|
|
8
|
+
const api_js_1 = require("./api.js");
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
function createServer(config) {
|
|
11
|
+
const { port = 3000, hostname = '0.0.0.0', path = '/interactions', token, guildId, ...adapterConfig } = config;
|
|
12
|
+
const adapter = new adapter_js_1.DiscordHttpAdapter(adapterConfig);
|
|
13
|
+
const handler = async (request) => {
|
|
14
|
+
const url = new URL(request.url);
|
|
15
|
+
if (request.method === 'POST' && url.pathname === path) {
|
|
16
|
+
return adapter.handleRequest(request);
|
|
17
|
+
}
|
|
18
|
+
if (request.method === 'GET' && url.pathname === '/health') {
|
|
19
|
+
return new Response('OK', { status: 200 });
|
|
20
|
+
}
|
|
21
|
+
if (request.method === 'GET' && url.pathname === '/') {
|
|
22
|
+
return new Response(JSON.stringify({
|
|
23
|
+
status: 'running',
|
|
24
|
+
endpoint: path
|
|
25
|
+
}), {
|
|
26
|
+
status: 200,
|
|
27
|
+
headers: { 'Content-Type': 'application/json' }
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return new Response('Not Found', { status: 404 });
|
|
31
|
+
};
|
|
32
|
+
const getEndpointUrl = () => {
|
|
33
|
+
const displayHost = hostname === '0.0.0.0' ? 'localhost' : hostname;
|
|
34
|
+
return `http://${displayHost}:${port}${path}`;
|
|
35
|
+
};
|
|
36
|
+
return {
|
|
37
|
+
handler,
|
|
38
|
+
getEndpointUrl,
|
|
39
|
+
async start() {
|
|
40
|
+
const globalObj = globalThis;
|
|
41
|
+
if (globalObj.Bun) {
|
|
42
|
+
globalObj.Bun.serve({
|
|
43
|
+
port,
|
|
44
|
+
hostname,
|
|
45
|
+
fetch: handler
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const { createServer: createHttpServer } = await import('node:http');
|
|
50
|
+
const httpServer = createHttpServer(async (req, res) => {
|
|
51
|
+
const chunks = [];
|
|
52
|
+
for await (const chunk of req) {
|
|
53
|
+
chunks.push(chunk);
|
|
54
|
+
}
|
|
55
|
+
const body = Buffer.concat(chunks).toString();
|
|
56
|
+
const url = `http://${hostname}:${port}${req.url ?? '/'}`;
|
|
57
|
+
const headers = new Headers();
|
|
58
|
+
for (const [key, value] of Object.entries(req.headers)) {
|
|
59
|
+
if (value)
|
|
60
|
+
headers.set(key, Array.isArray(value) ? value[0] : value);
|
|
61
|
+
}
|
|
62
|
+
const method = req.method ?? 'GET';
|
|
63
|
+
const hasBody = method !== 'GET' && method !== 'HEAD';
|
|
64
|
+
const request = new Request(url, {
|
|
65
|
+
method,
|
|
66
|
+
headers,
|
|
67
|
+
body: hasBody ? body : null
|
|
68
|
+
});
|
|
69
|
+
const response = await handler(request);
|
|
70
|
+
const responseBody = await response.text();
|
|
71
|
+
res.writeHead(response.status, Object.fromEntries(response.headers.entries()));
|
|
72
|
+
res.end(responseBody);
|
|
73
|
+
});
|
|
74
|
+
httpServer.listen(port, hostname);
|
|
75
|
+
}
|
|
76
|
+
console.log();
|
|
77
|
+
console.log(` ${chalk_1.default.bold.hex('#5865F2')('discord-flow')} ${chalk_1.default.dim('powered by')} ${chalk_1.default.bold.hex('#1EBE38')('loop')}`);
|
|
78
|
+
console.log();
|
|
79
|
+
console.log(` ${chalk_1.default.green('➜')} ${chalk_1.default.bold('Local:')} ${chalk_1.default.cyan(`http://localhost:${port}${path}`)}`);
|
|
80
|
+
console.log();
|
|
81
|
+
if (!adapterConfig.publicKey) {
|
|
82
|
+
console.log(chalk_1.default.red(' ⚠ DISCORD_PUBLIC_KEY not set'));
|
|
83
|
+
console.log();
|
|
84
|
+
}
|
|
85
|
+
if (token) {
|
|
86
|
+
try {
|
|
87
|
+
const discord = new api_js_1.DiscordAPI({ token });
|
|
88
|
+
const app = await discord.getApplicationInfo();
|
|
89
|
+
const commandsMeta = adapterConfig.engine.getRegistry().getCommandsMetadata();
|
|
90
|
+
if (commandsMeta.length > 0) {
|
|
91
|
+
const commands = commandsMeta.map(cmd => {
|
|
92
|
+
const command = {
|
|
93
|
+
name: cmd.name,
|
|
94
|
+
description: cmd.description
|
|
95
|
+
};
|
|
96
|
+
if (cmd.options) {
|
|
97
|
+
command.options = cmd.options;
|
|
98
|
+
}
|
|
99
|
+
return command;
|
|
100
|
+
});
|
|
101
|
+
if (guildId) {
|
|
102
|
+
await discord.registerGuildCommands(app.id, guildId, commands);
|
|
103
|
+
console.log(` ${chalk_1.default.green('✓')} ${chalk_1.default.bold(commands.length)} comando(s) registrado(s) ${chalk_1.default.dim('(guild)')}`);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
await discord.registerCommands(app.id, commands);
|
|
107
|
+
console.log(` ${chalk_1.default.green('✓')} ${chalk_1.default.bold(commands.length)} comando(s) registrado(s) ${chalk_1.default.dim('(global)')}`);
|
|
108
|
+
}
|
|
109
|
+
commands.forEach(cmd => {
|
|
110
|
+
console.log(chalk_1.default.gray(` /${cmd.name}`));
|
|
111
|
+
});
|
|
112
|
+
console.log();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
console.log(chalk_1.default.red(` ✗ Erro: ${error}`));
|
|
117
|
+
console.log();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
console.log(chalk_1.default.dim(' Pressione Ctrl+C para parar'));
|
|
121
|
+
console.log();
|
|
122
|
+
},
|
|
123
|
+
stop() { }
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAUlB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.verifySignature = verifySignature;
|
|
7
|
+
const tweetnacl_1 = __importDefault(require("tweetnacl"));
|
|
8
|
+
const encoder = new TextEncoder();
|
|
9
|
+
async function verifySignature(body, signature, timestamp, publicKey) {
|
|
10
|
+
try {
|
|
11
|
+
const message = encoder.encode(timestamp + body);
|
|
12
|
+
const sig = hexToUint8Array(signature);
|
|
13
|
+
const key = hexToUint8Array(publicKey);
|
|
14
|
+
return tweetnacl_1.default.sign.detached.verify(message, sig, key);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function hexToUint8Array(hex) {
|
|
21
|
+
const length = hex.length / 2;
|
|
22
|
+
const array = new Uint8Array(length);
|
|
23
|
+
for (let i = 0; i < length; i++) {
|
|
24
|
+
array[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);
|
|
25
|
+
}
|
|
26
|
+
return array;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":";;;;;AAIA,0CAeC;AAnBD,0DAA6B;AAE7B,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAE3B,KAAK,UAAU,eAAe,CACjC,IAAY,EACZ,SAAiB,EACjB,SAAiB,EACjB,SAAiB;IAEjB,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAEvC,OAAO,mBAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAChC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@discord-flow/adapter-discord-http",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "HTTP adapter for Discord Interactions API",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"clean": "rimraf dist"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@discord-flow/types": "^1.0.0",
|
|
23
|
+
"@discord-flow/core": "^1.0.0",
|
|
24
|
+
"chalk": "^5.3.0",
|
|
25
|
+
"tweetnacl": "^1.0.3"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"discord",
|
|
29
|
+
"flow",
|
|
30
|
+
"http",
|
|
31
|
+
"interactions",
|
|
32
|
+
"adapter"
|
|
33
|
+
],
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/discord-flow/discord-flow.git",
|
|
38
|
+
"directory": "packages/adapter-discord-http"
|
|
39
|
+
}
|
|
40
|
+
}
|