@sesli/bot 0.1.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.
Files changed (49) hide show
  1. package/dist/builders/SlashCommandBuilder.d.ts +53 -0
  2. package/dist/builders/SlashCommandBuilder.d.ts.map +1 -0
  3. package/dist/builders/SlashCommandBuilder.js +120 -0
  4. package/dist/builders/SlashCommandBuilder.js.map +1 -0
  5. package/dist/client/Client.d.ts +39 -0
  6. package/dist/client/Client.d.ts.map +1 -0
  7. package/dist/client/Client.js +136 -0
  8. package/dist/client/Client.js.map +1 -0
  9. package/dist/gateway/GatewayManager.d.ts +31 -0
  10. package/dist/gateway/GatewayManager.d.ts.map +1 -0
  11. package/dist/gateway/GatewayManager.js +117 -0
  12. package/dist/gateway/GatewayManager.js.map +1 -0
  13. package/dist/gateway/HeartbeatManager.d.ts +11 -0
  14. package/dist/gateway/HeartbeatManager.d.ts.map +1 -0
  15. package/dist/gateway/HeartbeatManager.js +30 -0
  16. package/dist/gateway/HeartbeatManager.js.map +1 -0
  17. package/dist/index.d.ts +10 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +17 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/rest/RestClient.d.ts +20 -0
  22. package/dist/rest/RestClient.d.ts.map +1 -0
  23. package/dist/rest/RestClient.js +74 -0
  24. package/dist/rest/RestClient.js.map +1 -0
  25. package/dist/rest/endpoints/commands.d.ts +14 -0
  26. package/dist/rest/endpoints/commands.d.ts.map +1 -0
  27. package/dist/rest/endpoints/commands.js +25 -0
  28. package/dist/rest/endpoints/commands.js.map +1 -0
  29. package/dist/rest/endpoints/messages.d.ts +39 -0
  30. package/dist/rest/endpoints/messages.d.ts.map +1 -0
  31. package/dist/rest/endpoints/messages.js +22 -0
  32. package/dist/rest/endpoints/messages.js.map +1 -0
  33. package/dist/structures/Interaction.d.ts +57 -0
  34. package/dist/structures/Interaction.d.ts.map +1 -0
  35. package/dist/structures/Interaction.js +105 -0
  36. package/dist/structures/Interaction.js.map +1 -0
  37. package/dist/types/events.d.ts +66 -0
  38. package/dist/types/events.d.ts.map +1 -0
  39. package/dist/types/events.js +7 -0
  40. package/dist/types/events.js.map +1 -0
  41. package/dist/types/payloads.d.ts +81 -0
  42. package/dist/types/payloads.d.ts.map +1 -0
  43. package/dist/types/payloads.js +8 -0
  44. package/dist/types/payloads.js.map +1 -0
  45. package/dist/utils/Logger.d.ts +11 -0
  46. package/dist/utils/Logger.d.ts.map +1 -0
  47. package/dist/utils/Logger.js +34 -0
  48. package/dist/utils/Logger.js.map +1 -0
  49. package/package.json +36 -0
@@ -0,0 +1,20 @@
1
+ export declare class BotApiError extends Error {
2
+ readonly status: number;
3
+ constructor(status: number, message: string);
4
+ }
5
+ export declare class BotServerError extends Error {
6
+ readonly status: number;
7
+ constructor(status: number, message: string);
8
+ }
9
+ export declare class RestClient {
10
+ private readonly baseUrl;
11
+ private readonly authHeader;
12
+ constructor(baseUrl: string, token: string);
13
+ private request;
14
+ get<T = unknown>(path: string): Promise<T>;
15
+ post<T = unknown>(path: string, body?: unknown): Promise<T>;
16
+ put<T = unknown>(path: string, body?: unknown): Promise<T>;
17
+ patch<T = unknown>(path: string, body?: unknown): Promise<T>;
18
+ delete<T = unknown>(path: string): Promise<T>;
19
+ }
20
+ //# sourceMappingURL=RestClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RestClient.d.ts","sourceRoot":"","sources":["../../src/rest/RestClient.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAY,SAAQ,KAAK;aAElB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM;CAKlB;AAED,qBAAa,cAAe,SAAQ,KAAK;aAErB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM;CAKlB;AAID,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;YAM5B,OAAO;IA+BrB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1C,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAI3D,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5D,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAG9C"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ // ─── Errors ───────────────────────────────────────────────────────────────────
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.RestClient = exports.BotServerError = exports.BotApiError = void 0;
5
+ class BotApiError extends Error {
6
+ constructor(status, message) {
7
+ super(message);
8
+ this.status = status;
9
+ this.name = 'BotApiError';
10
+ }
11
+ }
12
+ exports.BotApiError = BotApiError;
13
+ class BotServerError extends Error {
14
+ constructor(status, message) {
15
+ super(message);
16
+ this.status = status;
17
+ this.name = 'BotServerError';
18
+ }
19
+ }
20
+ exports.BotServerError = BotServerError;
21
+ // ─── Client ───────────────────────────────────────────────────────────────────
22
+ class RestClient {
23
+ constructor(baseUrl, token) {
24
+ this.baseUrl = baseUrl.replace(/\/$/, '');
25
+ // Token always stored without "Bot " prefix — header is built here
26
+ this.authHeader = `Bot ${token}`;
27
+ }
28
+ async request(method, path, body) {
29
+ const url = `${this.baseUrl}/api${path}`;
30
+ const response = await fetch(url, {
31
+ method,
32
+ headers: {
33
+ Authorization: this.authHeader,
34
+ 'Content-Type': 'application/json',
35
+ },
36
+ body: body !== undefined ? JSON.stringify(body) : undefined,
37
+ });
38
+ // 204 No Content — return undefined
39
+ if (response.status === 204)
40
+ return undefined;
41
+ if (!response.ok) {
42
+ let message = response.statusText;
43
+ try {
44
+ const json = (await response.json());
45
+ if (json.message)
46
+ message = json.message;
47
+ }
48
+ catch {
49
+ // ignore parse error, use statusText
50
+ }
51
+ if (response.status >= 500)
52
+ throw new BotServerError(response.status, message);
53
+ throw new BotApiError(response.status, message);
54
+ }
55
+ return response.json();
56
+ }
57
+ get(path) {
58
+ return this.request('GET', path);
59
+ }
60
+ post(path, body) {
61
+ return this.request('POST', path, body);
62
+ }
63
+ put(path, body) {
64
+ return this.request('PUT', path, body);
65
+ }
66
+ patch(path, body) {
67
+ return this.request('PATCH', path, body);
68
+ }
69
+ delete(path) {
70
+ return this.request('DELETE', path);
71
+ }
72
+ }
73
+ exports.RestClient = RestClient;
74
+ //# sourceMappingURL=RestClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RestClient.js","sourceRoot":"","sources":["../../src/rest/RestClient.ts"],"names":[],"mappings":";AAAA,iFAAiF;;;AAEjF,MAAa,WAAY,SAAQ,KAAK;IACpC,YACkB,MAAc,EAC9B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAQ;QAI9B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AARD,kCAQC;AAED,MAAa,cAAe,SAAQ,KAAK;IACvC,YACkB,MAAc,EAC9B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAQ;QAI9B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AARD,wCAQC;AAED,iFAAiF;AAEjF,MAAa,UAAU;IAIrB,YAAY,OAAe,EAAE,KAAa;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,mEAAmE;QACnE,IAAI,CAAC,UAAU,GAAG,OAAO,KAAK,EAAE,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc;QACnE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,OAAO,IAAI,EAAE,CAAC;QAEzC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM;YACN,OAAO,EAAE;gBACP,aAAa,EAAE,IAAI,CAAC,UAAU;gBAC9B,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC5D,CAAC,CAAC;QAEH,oCAAoC;QACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,SAAc,CAAC;QAEnD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyB,CAAC;gBAC7D,IAAI,IAAI,CAAC,OAAO;oBAAE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG;gBAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/E,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;IAED,GAAG,CAAc,IAAY;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAc,IAAY,EAAE,IAAc;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAc,IAAY,EAAE,IAAc;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAc,IAAY,EAAE,IAAc;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAI,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAc,IAAY;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;CACF;AA5DD,gCA4DC"}
@@ -0,0 +1,14 @@
1
+ import type { RestClient } from '../RestClient';
2
+ import type { SlashCommandBuilder } from '../../builders/SlashCommandBuilder';
3
+ export declare class CommandsEndpoint {
4
+ private readonly rest;
5
+ private readonly botId;
6
+ constructor(rest: RestClient, botId: string);
7
+ /** Registers (or replaces) all commands for this bot. */
8
+ set(commands: SlashCommandBuilder[]): Promise<unknown>;
9
+ /** Deletes a single command by name. */
10
+ delete(commandName: string): Promise<void>;
11
+ /** Returns all currently registered commands. */
12
+ list(): Promise<unknown[]>;
13
+ }
14
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/rest/endpoints/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM;IAGhC,yDAAyD;IACzD,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtD,wCAAwC;IACxC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,iDAAiD;IACjD,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAG3B"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommandsEndpoint = void 0;
4
+ class CommandsEndpoint {
5
+ constructor(rest, botId) {
6
+ this.rest = rest;
7
+ this.botId = botId;
8
+ }
9
+ /** Registers (or replaces) all commands for this bot. */
10
+ set(commands) {
11
+ return this.rest.put(`/bots/${this.botId}/commands`, {
12
+ commands: commands.map((c) => c.toJSON()),
13
+ });
14
+ }
15
+ /** Deletes a single command by name. */
16
+ delete(commandName) {
17
+ return this.rest.delete(`/bots/${this.botId}/commands/${commandName}`);
18
+ }
19
+ /** Returns all currently registered commands. */
20
+ list() {
21
+ return this.rest.get(`/bots/${this.botId}/commands`);
22
+ }
23
+ }
24
+ exports.CommandsEndpoint = CommandsEndpoint;
25
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/rest/endpoints/commands.ts"],"names":[],"mappings":";;;AAGA,MAAa,gBAAgB;IAC3B,YACmB,IAAgB,EAChB,KAAa;QADb,SAAI,GAAJ,IAAI,CAAY;QAChB,UAAK,GAAL,KAAK,CAAQ;IAC7B,CAAC;IAEJ,yDAAyD;IACzD,GAAG,CAAC,QAA+B;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,WAAW,EAAE;YACnD,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,wCAAwC;IACxC,MAAM,CAAC,WAAmB;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,SAAS,IAAI,CAAC,KAAK,aAAa,WAAW,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,iDAAiD;IACjD,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAY,SAAS,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC;IAClE,CAAC;CACF;AAtBD,4CAsBC"}
@@ -0,0 +1,39 @@
1
+ import type { RestClient } from '../RestClient';
2
+ export interface EmbedField {
3
+ name: string;
4
+ value: string;
5
+ inline?: boolean;
6
+ }
7
+ export interface EmbedData {
8
+ title?: string;
9
+ description?: string;
10
+ color?: number;
11
+ fields?: EmbedField[];
12
+ footer?: {
13
+ text: string;
14
+ iconURL?: string;
15
+ };
16
+ thumbnail?: {
17
+ url: string;
18
+ };
19
+ image?: {
20
+ url: string;
21
+ };
22
+ timestamp?: string;
23
+ }
24
+ export interface SendMessageOptions {
25
+ content?: string;
26
+ embeds?: EmbedData[];
27
+ }
28
+ export interface EditMessageOptions {
29
+ content?: string;
30
+ embeds?: EmbedData[];
31
+ }
32
+ export declare class MessagesEndpoint {
33
+ private readonly rest;
34
+ constructor(rest: RestClient);
35
+ send(channelId: string, options: SendMessageOptions): Promise<unknown>;
36
+ edit(channelId: string, messageId: string, options: EditMessageOptions): Promise<unknown>;
37
+ delete(channelId: string, messageId: string): Promise<void>;
38
+ }
39
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/rest/endpoints/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,SAAS,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAOtE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIzF,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5D"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessagesEndpoint = void 0;
4
+ class MessagesEndpoint {
5
+ constructor(rest) {
6
+ this.rest = rest;
7
+ }
8
+ send(channelId, options) {
9
+ if (!options.content && (!options.embeds || options.embeds.length === 0)) {
10
+ throw new Error('Message must have content or at least one embed');
11
+ }
12
+ return this.rest.post(`/channels/${channelId}/messages`, options);
13
+ }
14
+ edit(channelId, messageId, options) {
15
+ return this.rest.patch(`/channels/${channelId}/messages/${messageId}`, options);
16
+ }
17
+ delete(channelId, messageId) {
18
+ return this.rest.delete(`/channels/${channelId}/messages/${messageId}`);
19
+ }
20
+ }
21
+ exports.MessagesEndpoint = MessagesEndpoint;
22
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/rest/endpoints/messages.ts"],"names":[],"mappings":";;;AA6BA,MAAa,gBAAgB;IAC3B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,IAAI,CAAC,SAAiB,EAAE,OAA2B;QACjD,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,SAAS,WAAW,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,CAAC,SAAiB,EAAE,SAAiB,EAAE,OAA2B;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,SAAS,aAAa,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,SAAiB;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,aAAa,SAAS,aAAa,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;CACF;AAjBD,4CAiBC"}
@@ -0,0 +1,57 @@
1
+ import type { RestClient } from '../rest/RestClient';
2
+ import type { InteractionPayload } from '../types/payloads';
3
+ import type { EmbedData } from '../rest/endpoints/messages';
4
+ export interface InteractionReplyOptions {
5
+ content?: string;
6
+ embeds?: EmbedData[];
7
+ /** Only visible to the user who triggered the command. */
8
+ ephemeral?: boolean;
9
+ }
10
+ export declare class Interaction {
11
+ readonly id: string;
12
+ readonly type: number;
13
+ readonly commandName: string;
14
+ readonly channelId: string;
15
+ readonly serverId: string;
16
+ readonly token: string;
17
+ readonly member: {
18
+ userId: string;
19
+ username: string;
20
+ };
21
+ /** Whether reply() or deferReply() has already been called. */
22
+ replied: boolean;
23
+ /** Whether deferReply() has been called. */
24
+ deferred: boolean;
25
+ private readonly _optionMap;
26
+ private readonly _rest;
27
+ constructor(payload: InteractionPayload, rest: RestClient);
28
+ /** Returns true if this is a slash command (CHAT_INPUT) interaction. */
29
+ isCommand(): boolean;
30
+ readonly options: {
31
+ getString: (name: string, required?: boolean) => string | null;
32
+ getInteger: (name: string, required?: boolean) => number | null;
33
+ getNumber: (name: string, required?: boolean) => number | null;
34
+ getBoolean: (name: string, required?: boolean) => boolean | null;
35
+ getUser: (name: string, required?: boolean) => string | null;
36
+ getChannel: (name: string, required?: boolean) => string | null;
37
+ };
38
+ private _getOption;
39
+ /**
40
+ * Sends an immediate response to the interaction.
41
+ * Must be called within 3 seconds of receiving the event.
42
+ */
43
+ reply(options: string | InteractionReplyOptions): Promise<void>;
44
+ /**
45
+ * Defers the reply — tells the platform the bot is working on it.
46
+ * Use editReply() to send the actual response afterwards.
47
+ * Gives 15 minutes instead of 3 seconds.
48
+ */
49
+ deferReply(options?: {
50
+ ephemeral?: boolean;
51
+ }): Promise<void>;
52
+ /**
53
+ * Edits the response after reply() or deferReply().
54
+ */
55
+ editReply(options: string | Omit<InteractionReplyOptions, 'ephemeral'>): Promise<void>;
56
+ }
57
+ //# sourceMappingURL=Interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Interaction.d.ts","sourceRoot":"","sources":["../../src/structures/Interaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAwB,MAAM,mBAAmB,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAEtD,+DAA+D;IAC/D,OAAO,UAAS;IAChB,4CAA4C;IAC5C,QAAQ,UAAS;IAEjB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6C;IACxE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;gBAEvB,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU;IAgBzD,wEAAwE;IACxE,SAAS,IAAI,OAAO;IAMpB,QAAQ,CAAC,OAAO;0BACI,MAAM,yBAAqB,MAAM,GAAG,IAAI;2BAGvC,MAAM,yBAAqB,MAAM,GAAG,IAAI;0BAGzC,MAAM,yBAAqB,MAAM,GAAG,IAAI;2BAGvC,MAAM,yBAAqB,OAAO,GAAG,IAAI;wBAG5C,MAAM,yBAAqB,MAAM,GAAG,IAAI;2BAGrC,MAAM,yBAAqB,MAAM,GAAG,IAAI;MAG3D;IAEF,OAAO,CAAC,UAAU;IAelB;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrE;;;;OAIG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlE;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ7F"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Interaction = void 0;
4
+ class Interaction {
5
+ constructor(payload, rest) {
6
+ /** Whether reply() or deferReply() has already been called. */
7
+ this.replied = false;
8
+ /** Whether deferReply() has been called. */
9
+ this.deferred = false;
10
+ // ─── Option Accessors ──────────────────────────────────────────────────────
11
+ this.options = {
12
+ getString: (name, required = false) => {
13
+ return this._getOption(name, required, (v) => String(v));
14
+ },
15
+ getInteger: (name, required = false) => {
16
+ return this._getOption(name, required, (v) => Math.trunc(Number(v)));
17
+ },
18
+ getNumber: (name, required = false) => {
19
+ return this._getOption(name, required, (v) => Number(v));
20
+ },
21
+ getBoolean: (name, required = false) => {
22
+ return this._getOption(name, required, (v) => Boolean(v));
23
+ },
24
+ getUser: (name, required = false) => {
25
+ return this._getOption(name, required, (v) => String(v));
26
+ },
27
+ getChannel: (name, required = false) => {
28
+ return this._getOption(name, required, (v) => String(v));
29
+ },
30
+ };
31
+ this.id = payload.id;
32
+ this.type = payload.type;
33
+ this.commandName = payload.commandName;
34
+ this.channelId = payload.channelId;
35
+ this.serverId = payload.serverId;
36
+ this.token = payload.token;
37
+ this.member = payload.member;
38
+ this._rest = rest;
39
+ // Build option lookup map
40
+ this._optionMap = new Map((payload.options ?? []).map((opt) => [opt.name, opt.value]));
41
+ }
42
+ /** Returns true if this is a slash command (CHAT_INPUT) interaction. */
43
+ isCommand() {
44
+ return this.type === 2;
45
+ }
46
+ _getOption(name, required, cast) {
47
+ const val = this._optionMap.get(name);
48
+ if (val === undefined || val === null) {
49
+ if (required)
50
+ throw new Error(`Required option "${name}" is missing`);
51
+ return null;
52
+ }
53
+ return cast(val);
54
+ }
55
+ // ─── Response Methods ──────────────────────────────────────────────────────
56
+ /**
57
+ * Sends an immediate response to the interaction.
58
+ * Must be called within 3 seconds of receiving the event.
59
+ */
60
+ async reply(options) {
61
+ if (this.replied) {
62
+ throw new Error('Interaction has already been acknowledged');
63
+ }
64
+ const data = typeof options === 'string' ? { content: options } : options;
65
+ await this._rest.post(`/interactions/${this.id}/callback`, {
66
+ type: 'CHANNEL_MESSAGE_WITH_SOURCE',
67
+ data: {
68
+ content: data.content,
69
+ embeds: data.embeds,
70
+ flags: data.ephemeral ? 64 : undefined,
71
+ },
72
+ });
73
+ this.replied = true;
74
+ }
75
+ /**
76
+ * Defers the reply — tells the platform the bot is working on it.
77
+ * Use editReply() to send the actual response afterwards.
78
+ * Gives 15 minutes instead of 3 seconds.
79
+ */
80
+ async deferReply(options) {
81
+ if (this.replied || this.deferred) {
82
+ throw new Error('Interaction has already been acknowledged');
83
+ }
84
+ await this._rest.post(`/interactions/${this.id}/callback`, {
85
+ type: 'DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE',
86
+ data: {
87
+ flags: options?.ephemeral ? 64 : undefined,
88
+ },
89
+ });
90
+ this.deferred = true;
91
+ this.replied = true;
92
+ }
93
+ /**
94
+ * Edits the response after reply() or deferReply().
95
+ */
96
+ async editReply(options) {
97
+ const data = typeof options === 'string' ? { content: options } : options;
98
+ await this._rest.patch(`/webhooks/${this.id}/${this.token}/messages/@original`, {
99
+ content: data.content,
100
+ embeds: data.embeds,
101
+ });
102
+ }
103
+ }
104
+ exports.Interaction = Interaction;
105
+ //# sourceMappingURL=Interaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Interaction.js","sourceRoot":"","sources":["../../src/structures/Interaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Developer-facing event types.
3
+ * These are the friendly objects the SDK exposes — no raw snake_case, no op codes.
4
+ */
5
+ import type { Interaction } from '../structures/Interaction';
6
+ export interface ReadyData {
7
+ bot: {
8
+ id: string;
9
+ username: string;
10
+ discriminator: string;
11
+ avatarUrl: string | null;
12
+ };
13
+ servers: Array<{
14
+ id: string;
15
+ }>;
16
+ }
17
+ export interface MessageData {
18
+ id: string;
19
+ content: string;
20
+ channelId: string;
21
+ serverId: string;
22
+ timestamp: Date;
23
+ author: {
24
+ id: string;
25
+ username: string;
26
+ displayName: string | null;
27
+ isBot: boolean;
28
+ };
29
+ }
30
+ export interface MessageUpdateData {
31
+ id: string;
32
+ content: string;
33
+ editedAt: Date | null;
34
+ channelId: string;
35
+ serverId: string;
36
+ }
37
+ export interface MessageDeleteData {
38
+ messageId: string;
39
+ channelId: string;
40
+ serverId: string;
41
+ }
42
+ export interface ServerMemberData {
43
+ userId: string;
44
+ username: string;
45
+ displayName: string | null;
46
+ joinedAt: Date;
47
+ serverId: string;
48
+ }
49
+ export interface PartialServerMemberData {
50
+ userId: string;
51
+ username: string;
52
+ serverId: string;
53
+ }
54
+ export interface ClientEvents {
55
+ ready: [data: ReadyData];
56
+ messageCreate: [message: MessageData];
57
+ messageUpdate: [message: MessageUpdateData];
58
+ messageDelete: [data: MessageDeleteData];
59
+ interactionCreate: [interaction: Interaction];
60
+ serverMemberAdd: [member: ServerMemberData];
61
+ serverMemberRemove: [member: PartialServerMemberData];
62
+ disconnect: [reason: string];
63
+ reconnect: [];
64
+ error: [error: Error];
65
+ }
66
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI7D,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChC;AAID,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtC,aAAa,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC5C,aAAa,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACzC,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC9C,eAAe,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC5C,kBAAkB,EAAE,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACtD,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,EAAE,CAAC;IACd,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACvB"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Developer-facing event types.
4
+ * These are the friendly objects the SDK exposes — no raw snake_case, no op codes.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Raw gateway event payloads — exactly what the backend sends.
3
+ * All gateway events are wrapped in { op, t, d } envelope;
4
+ * GatewayManager unwraps `.d` before forwarding to the Client.
5
+ */
6
+ export interface GatewayEnvelope<T> {
7
+ op: number;
8
+ t: string;
9
+ d: T;
10
+ }
11
+ export interface ReadyPayload {
12
+ bot: {
13
+ id: string;
14
+ username: string;
15
+ discriminator: string;
16
+ avatarUrl: string | null;
17
+ };
18
+ servers: Array<{
19
+ id: string;
20
+ }>;
21
+ }
22
+ export interface MessageCreatePayload {
23
+ id: string;
24
+ content: string;
25
+ timestamp: string;
26
+ channel_id: string;
27
+ server_id: string;
28
+ author: {
29
+ id: string;
30
+ username: string;
31
+ displayName: string | null;
32
+ };
33
+ }
34
+ export interface MessageUpdatePayload {
35
+ id: string;
36
+ content: string;
37
+ edited_at: string | null;
38
+ channel_id: string;
39
+ server_id: string;
40
+ }
41
+ export interface MessageDeletePayload {
42
+ id: string;
43
+ channel_id: string;
44
+ server_id: string;
45
+ }
46
+ export interface RawInteractionOption {
47
+ name: string;
48
+ type: number;
49
+ value?: string | number | boolean;
50
+ }
51
+ export interface InteractionPayload {
52
+ id: string;
53
+ type: number;
54
+ commandName: string;
55
+ options: RawInteractionOption[];
56
+ channelId: string;
57
+ serverId: string;
58
+ member: {
59
+ userId: string;
60
+ username: string;
61
+ };
62
+ token: string;
63
+ }
64
+ export interface ServerMemberAddPayload {
65
+ server_id: string;
66
+ user: {
67
+ userId: string;
68
+ username: string;
69
+ displayName: string | null;
70
+ joinedAt: string;
71
+ };
72
+ joined_at: string;
73
+ }
74
+ export interface ServerMemberRemovePayload {
75
+ server_id: string;
76
+ user: {
77
+ userId: string;
78
+ username: string;
79
+ };
80
+ }
81
+ //# sourceMappingURL=payloads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../../src/types/payloads.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,CAAC,CAAC;CACN;AAID,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChC;AAID,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;CACf;AAID,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * Raw gateway event payloads — exactly what the backend sends.
4
+ * All gateway events are wrapped in { op, t, d } envelope;
5
+ * GatewayManager unwraps `.d` before forwarding to the Client.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=payloads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloads.js","sourceRoot":"","sources":["../../src/types/payloads.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
@@ -0,0 +1,11 @@
1
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'none';
2
+ export declare class Logger {
3
+ private readonly level;
4
+ private readonly prefix;
5
+ constructor(level?: LogLevel, prefix?: string);
6
+ debug(msg: string): void;
7
+ info(msg: string): void;
8
+ warn(msg: string): void;
9
+ error(msg: string): void;
10
+ }
11
+ //# sourceMappingURL=Logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAUpE,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,KAAK,GAAE,QAAiB,EAAE,MAAM,SAAgB;IAK5D,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAGzB"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Logger = void 0;
4
+ const LEVELS = {
5
+ debug: 0,
6
+ info: 1,
7
+ warn: 2,
8
+ error: 3,
9
+ none: 4,
10
+ };
11
+ class Logger {
12
+ constructor(level = 'info', prefix = '[sesli/bot]') {
13
+ this.level = LEVELS[level];
14
+ this.prefix = prefix;
15
+ }
16
+ debug(msg) {
17
+ if (this.level <= LEVELS.debug)
18
+ console.debug(`${this.prefix} [DEBUG] ${msg}`);
19
+ }
20
+ info(msg) {
21
+ if (this.level <= LEVELS.info)
22
+ console.log(`${this.prefix} [INFO] ${msg}`);
23
+ }
24
+ warn(msg) {
25
+ if (this.level <= LEVELS.warn)
26
+ console.warn(`${this.prefix} [WARN] ${msg}`);
27
+ }
28
+ error(msg) {
29
+ if (this.level <= LEVELS.error)
30
+ console.error(`${this.prefix} [ERROR] ${msg}`);
31
+ }
32
+ }
33
+ exports.Logger = Logger;
34
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":";;;AAEA,MAAM,MAAM,GAA6B;IACvC,KAAK,EAAE,CAAC;IACR,IAAI,EAAG,CAAC;IACR,IAAI,EAAG,CAAC;IACR,KAAK,EAAE,CAAC;IACR,IAAI,EAAG,CAAC;CACT,CAAC;AAEF,MAAa,MAAM;IAIjB,YAAY,QAAkB,MAAM,EAAE,MAAM,GAAG,aAAa;QAC1D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC;IACjF,CAAC;CACF;AAxBD,wBAwBC"}