baff.js 0.0.0-stage → 0.1.1

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 (262) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/LICENSE +7 -0
  3. package/README.md +244 -3
  4. package/dist/cjs/builders/EmbedBuilder.d.ts +51 -0
  5. package/dist/cjs/builders/EmbedBuilder.js +150 -0
  6. package/dist/cjs/builders/SlashCommandBuilder.d.ts +69 -0
  7. package/dist/cjs/builders/SlashCommandBuilder.js +185 -0
  8. package/dist/cjs/builders/components/ActionRowBuilder.d.ts +14 -0
  9. package/dist/cjs/builders/components/ActionRowBuilder.js +53 -0
  10. package/dist/cjs/builders/components/ButtonBuilder.d.ts +19 -0
  11. package/dist/cjs/builders/components/ButtonBuilder.js +69 -0
  12. package/dist/cjs/builders/components/LayoutBuilders.d.ts +63 -0
  13. package/dist/cjs/builders/components/LayoutBuilders.js +179 -0
  14. package/dist/cjs/builders/components/ModalBuilder.d.ts +36 -0
  15. package/dist/cjs/builders/components/ModalBuilder.js +118 -0
  16. package/dist/cjs/builders/components/SelectMenuBuilder.d.ts +80 -0
  17. package/dist/cjs/builders/components/SelectMenuBuilder.js +192 -0
  18. package/dist/cjs/builders/components/shared.d.ts +16 -0
  19. package/dist/cjs/builders/components/shared.js +32 -0
  20. package/dist/cjs/builders/messagePayload.d.ts +35 -0
  21. package/dist/cjs/builders/messagePayload.js +88 -0
  22. package/dist/cjs/builders/validate.d.ts +12 -0
  23. package/dist/cjs/builders/validate.js +54 -0
  24. package/dist/cjs/client/Client.d.ts +63 -0
  25. package/dist/cjs/client/Client.js +152 -0
  26. package/dist/cjs/client/dispatch.d.ts +2 -0
  27. package/dist/cjs/client/dispatch.js +224 -0
  28. package/dist/cjs/client/events.d.ts +129 -0
  29. package/dist/cjs/client/events.js +2 -0
  30. package/dist/cjs/collectors/Collector.d.ts +37 -0
  31. package/dist/cjs/collectors/Collector.js +84 -0
  32. package/dist/cjs/collectors/InteractionCollector.d.ts +21 -0
  33. package/dist/cjs/collectors/InteractionCollector.js +44 -0
  34. package/dist/cjs/collectors/MessageCollector.d.ts +14 -0
  35. package/dist/cjs/collectors/MessageCollector.js +23 -0
  36. package/dist/cjs/errors/BaffError.d.ts +26 -0
  37. package/dist/cjs/errors/BaffError.js +39 -0
  38. package/dist/cjs/gateway/Gateway.d.ts +53 -0
  39. package/dist/cjs/gateway/Gateway.js +128 -0
  40. package/dist/cjs/http/handler.d.ts +11 -0
  41. package/dist/cjs/http/handler.js +72 -0
  42. package/dist/cjs/http/verify.d.ts +11 -0
  43. package/dist/cjs/http/verify.js +28 -0
  44. package/dist/cjs/index.d.ts +51 -0
  45. package/dist/cjs/index.js +185 -0
  46. package/dist/cjs/managers/CachedManager.d.ts +16 -0
  47. package/dist/cjs/managers/CachedManager.js +18 -0
  48. package/dist/cjs/managers/ChannelManager.d.ts +23 -0
  49. package/dist/cjs/managers/ChannelManager.js +85 -0
  50. package/dist/cjs/managers/CommandManager.d.ts +32 -0
  51. package/dist/cjs/managers/CommandManager.js +72 -0
  52. package/dist/cjs/managers/EventManager.d.ts +15 -0
  53. package/dist/cjs/managers/EventManager.js +36 -0
  54. package/dist/cjs/managers/ExpressionManagers.d.ts +36 -0
  55. package/dist/cjs/managers/ExpressionManagers.js +73 -0
  56. package/dist/cjs/managers/InviteManager.d.ts +17 -0
  57. package/dist/cjs/managers/InviteManager.js +26 -0
  58. package/dist/cjs/managers/MemberManager.d.ts +31 -0
  59. package/dist/cjs/managers/MemberManager.js +62 -0
  60. package/dist/cjs/managers/MessageManager.d.ts +32 -0
  61. package/dist/cjs/managers/MessageManager.js +79 -0
  62. package/dist/cjs/managers/RoleManager.d.ts +22 -0
  63. package/dist/cjs/managers/RoleManager.js +73 -0
  64. package/dist/cjs/managers/ServerChannelManager.d.ts +20 -0
  65. package/dist/cjs/managers/ServerChannelManager.js +30 -0
  66. package/dist/cjs/managers/ServerManager.d.ts +12 -0
  67. package/dist/cjs/managers/ServerManager.js +62 -0
  68. package/dist/cjs/managers/ThreadManager.d.ts +12 -0
  69. package/dist/cjs/managers/ThreadManager.js +20 -0
  70. package/dist/cjs/managers/UserManager.d.ts +11 -0
  71. package/dist/cjs/managers/UserManager.js +38 -0
  72. package/dist/cjs/managers/VoiceManager.d.ts +8 -0
  73. package/dist/cjs/managers/VoiceManager.js +17 -0
  74. package/dist/cjs/package.json +1 -0
  75. package/dist/cjs/rest/REST.d.ts +58 -0
  76. package/dist/cjs/rest/REST.js +193 -0
  77. package/dist/cjs/rest/Routes.d.ts +54 -0
  78. package/dist/cjs/rest/Routes.js +58 -0
  79. package/dist/cjs/rest/files.d.ts +19 -0
  80. package/dist/cjs/rest/files.js +37 -0
  81. package/dist/cjs/structures/Base.d.ts +13 -0
  82. package/dist/cjs/structures/Base.js +30 -0
  83. package/dist/cjs/structures/Message.d.ts +91 -0
  84. package/dist/cjs/structures/Message.js +200 -0
  85. package/dist/cjs/structures/Role.d.ts +34 -0
  86. package/dist/cjs/structures/Role.js +84 -0
  87. package/dist/cjs/structures/ScheduledEvent.d.ts +37 -0
  88. package/dist/cjs/structures/ScheduledEvent.js +73 -0
  89. package/dist/cjs/structures/Server.d.ts +68 -0
  90. package/dist/cjs/structures/Server.js +124 -0
  91. package/dist/cjs/structures/ServerAssets.d.ts +48 -0
  92. package/dist/cjs/structures/ServerAssets.js +104 -0
  93. package/dist/cjs/structures/ServerMember.d.ts +47 -0
  94. package/dist/cjs/structures/ServerMember.js +138 -0
  95. package/dist/cjs/structures/User.d.ts +35 -0
  96. package/dist/cjs/structures/User.js +87 -0
  97. package/dist/cjs/structures/Webhook.d.ts +30 -0
  98. package/dist/cjs/structures/Webhook.js +68 -0
  99. package/dist/cjs/structures/channels/BaseChannel.d.ts +49 -0
  100. package/dist/cjs/structures/channels/BaseChannel.js +81 -0
  101. package/dist/cjs/structures/channels/DMChannel.d.ts +9 -0
  102. package/dist/cjs/structures/channels/DMChannel.js +21 -0
  103. package/dist/cjs/structures/channels/ServerChannels.d.ts +57 -0
  104. package/dist/cjs/structures/channels/ServerChannels.js +138 -0
  105. package/dist/cjs/structures/channels/TextBasedChannel.d.ts +25 -0
  106. package/dist/cjs/structures/channels/TextBasedChannel.js +53 -0
  107. package/dist/cjs/structures/interactions/BaseInteraction.d.ts +74 -0
  108. package/dist/cjs/structures/interactions/BaseInteraction.js +221 -0
  109. package/dist/cjs/structures/interactions/CommandInteraction.d.ts +44 -0
  110. package/dist/cjs/structures/interactions/CommandInteraction.js +109 -0
  111. package/dist/cjs/structures/interactions/ComponentInteraction.d.ts +44 -0
  112. package/dist/cjs/structures/interactions/ComponentInteraction.js +64 -0
  113. package/dist/cjs/structures/interactions/ModalSubmitInteraction.d.ts +29 -0
  114. package/dist/cjs/structures/interactions/ModalSubmitInteraction.js +42 -0
  115. package/dist/cjs/structures/interactions/createInteraction.d.ts +4 -0
  116. package/dist/cjs/structures/interactions/createInteraction.js +34 -0
  117. package/dist/cjs/types.d.ts +369 -0
  118. package/dist/cjs/types.js +2 -0
  119. package/dist/cjs/util/Collection.d.ts +32 -0
  120. package/dist/cjs/util/Collection.js +145 -0
  121. package/dist/cjs/util/Permissions.d.ts +87 -0
  122. package/dist/cjs/util/Permissions.js +115 -0
  123. package/dist/cjs/util/Snowflake.d.ts +20 -0
  124. package/dist/cjs/util/Snowflake.js +40 -0
  125. package/dist/cjs/util/TypedEmitter.d.ts +17 -0
  126. package/dist/cjs/util/TypedEmitter.js +5 -0
  127. package/dist/cjs/util/constants.d.ts +78 -0
  128. package/dist/cjs/util/constants.js +81 -0
  129. package/dist/cjs/util/emoji.d.ts +8 -0
  130. package/dist/cjs/util/emoji.js +10 -0
  131. package/dist/cjs/util/formatters.d.ts +29 -0
  132. package/dist/cjs/util/formatters.js +55 -0
  133. package/dist/esm/builders/EmbedBuilder.d.ts +51 -0
  134. package/dist/esm/builders/EmbedBuilder.js +145 -0
  135. package/dist/esm/builders/SlashCommandBuilder.d.ts +69 -0
  136. package/dist/esm/builders/SlashCommandBuilder.js +170 -0
  137. package/dist/esm/builders/components/ActionRowBuilder.d.ts +14 -0
  138. package/dist/esm/builders/components/ActionRowBuilder.js +49 -0
  139. package/dist/esm/builders/components/ButtonBuilder.d.ts +19 -0
  140. package/dist/esm/builders/components/ButtonBuilder.js +65 -0
  141. package/dist/esm/builders/components/LayoutBuilders.d.ts +63 -0
  142. package/dist/esm/builders/components/LayoutBuilders.js +169 -0
  143. package/dist/esm/builders/components/ModalBuilder.d.ts +36 -0
  144. package/dist/esm/builders/components/ModalBuilder.js +113 -0
  145. package/dist/esm/builders/components/SelectMenuBuilder.d.ts +80 -0
  146. package/dist/esm/builders/components/SelectMenuBuilder.js +183 -0
  147. package/dist/esm/builders/components/shared.d.ts +16 -0
  148. package/dist/esm/builders/components/shared.js +26 -0
  149. package/dist/esm/builders/messagePayload.d.ts +35 -0
  150. package/dist/esm/builders/messagePayload.js +83 -0
  151. package/dist/esm/builders/validate.d.ts +12 -0
  152. package/dist/esm/builders/validate.js +46 -0
  153. package/dist/esm/client/Client.d.ts +63 -0
  154. package/dist/esm/client/Client.js +147 -0
  155. package/dist/esm/client/dispatch.d.ts +2 -0
  156. package/dist/esm/client/dispatch.js +221 -0
  157. package/dist/esm/client/events.d.ts +129 -0
  158. package/dist/esm/client/events.js +1 -0
  159. package/dist/esm/collectors/Collector.d.ts +37 -0
  160. package/dist/esm/collectors/Collector.js +78 -0
  161. package/dist/esm/collectors/InteractionCollector.d.ts +21 -0
  162. package/dist/esm/collectors/InteractionCollector.js +40 -0
  163. package/dist/esm/collectors/MessageCollector.d.ts +14 -0
  164. package/dist/esm/collectors/MessageCollector.js +19 -0
  165. package/dist/esm/errors/BaffError.d.ts +26 -0
  166. package/dist/esm/errors/BaffError.js +33 -0
  167. package/dist/esm/gateway/Gateway.d.ts +53 -0
  168. package/dist/esm/gateway/Gateway.js +124 -0
  169. package/dist/esm/http/handler.d.ts +11 -0
  170. package/dist/esm/http/handler.js +68 -0
  171. package/dist/esm/http/verify.d.ts +11 -0
  172. package/dist/esm/http/verify.js +22 -0
  173. package/dist/esm/index.d.ts +51 -0
  174. package/dist/esm/index.js +49 -0
  175. package/dist/esm/managers/CachedManager.d.ts +16 -0
  176. package/dist/esm/managers/CachedManager.js +14 -0
  177. package/dist/esm/managers/ChannelManager.d.ts +23 -0
  178. package/dist/esm/managers/ChannelManager.js +81 -0
  179. package/dist/esm/managers/CommandManager.d.ts +32 -0
  180. package/dist/esm/managers/CommandManager.js +67 -0
  181. package/dist/esm/managers/EventManager.d.ts +15 -0
  182. package/dist/esm/managers/EventManager.js +32 -0
  183. package/dist/esm/managers/ExpressionManagers.d.ts +36 -0
  184. package/dist/esm/managers/ExpressionManagers.js +68 -0
  185. package/dist/esm/managers/InviteManager.d.ts +17 -0
  186. package/dist/esm/managers/InviteManager.js +22 -0
  187. package/dist/esm/managers/MemberManager.d.ts +31 -0
  188. package/dist/esm/managers/MemberManager.js +58 -0
  189. package/dist/esm/managers/MessageManager.d.ts +32 -0
  190. package/dist/esm/managers/MessageManager.js +75 -0
  191. package/dist/esm/managers/RoleManager.d.ts +22 -0
  192. package/dist/esm/managers/RoleManager.js +69 -0
  193. package/dist/esm/managers/ServerChannelManager.d.ts +20 -0
  194. package/dist/esm/managers/ServerChannelManager.js +26 -0
  195. package/dist/esm/managers/ServerManager.d.ts +12 -0
  196. package/dist/esm/managers/ServerManager.js +58 -0
  197. package/dist/esm/managers/ThreadManager.d.ts +12 -0
  198. package/dist/esm/managers/ThreadManager.js +16 -0
  199. package/dist/esm/managers/UserManager.d.ts +11 -0
  200. package/dist/esm/managers/UserManager.js +34 -0
  201. package/dist/esm/managers/VoiceManager.d.ts +8 -0
  202. package/dist/esm/managers/VoiceManager.js +13 -0
  203. package/dist/esm/package.json +1 -0
  204. package/dist/esm/rest/REST.d.ts +58 -0
  205. package/dist/esm/rest/REST.js +188 -0
  206. package/dist/esm/rest/Routes.d.ts +54 -0
  207. package/dist/esm/rest/Routes.js +55 -0
  208. package/dist/esm/rest/files.d.ts +19 -0
  209. package/dist/esm/rest/files.js +31 -0
  210. package/dist/esm/structures/Base.d.ts +13 -0
  211. package/dist/esm/structures/Base.js +25 -0
  212. package/dist/esm/structures/Message.d.ts +91 -0
  213. package/dist/esm/structures/Message.js +194 -0
  214. package/dist/esm/structures/Role.d.ts +34 -0
  215. package/dist/esm/structures/Role.js +79 -0
  216. package/dist/esm/structures/ScheduledEvent.d.ts +37 -0
  217. package/dist/esm/structures/ScheduledEvent.js +68 -0
  218. package/dist/esm/structures/Server.d.ts +68 -0
  219. package/dist/esm/structures/Server.js +120 -0
  220. package/dist/esm/structures/ServerAssets.d.ts +48 -0
  221. package/dist/esm/structures/ServerAssets.js +98 -0
  222. package/dist/esm/structures/ServerMember.d.ts +47 -0
  223. package/dist/esm/structures/ServerMember.js +133 -0
  224. package/dist/esm/structures/User.d.ts +35 -0
  225. package/dist/esm/structures/User.js +82 -0
  226. package/dist/esm/structures/Webhook.d.ts +30 -0
  227. package/dist/esm/structures/Webhook.js +63 -0
  228. package/dist/esm/structures/channels/BaseChannel.d.ts +49 -0
  229. package/dist/esm/structures/channels/BaseChannel.js +77 -0
  230. package/dist/esm/structures/channels/DMChannel.d.ts +9 -0
  231. package/dist/esm/structures/channels/DMChannel.js +17 -0
  232. package/dist/esm/structures/channels/ServerChannels.d.ts +57 -0
  233. package/dist/esm/structures/channels/ServerChannels.js +129 -0
  234. package/dist/esm/structures/channels/TextBasedChannel.d.ts +25 -0
  235. package/dist/esm/structures/channels/TextBasedChannel.js +49 -0
  236. package/dist/esm/structures/interactions/BaseInteraction.d.ts +74 -0
  237. package/dist/esm/structures/interactions/BaseInteraction.js +217 -0
  238. package/dist/esm/structures/interactions/CommandInteraction.d.ts +44 -0
  239. package/dist/esm/structures/interactions/CommandInteraction.js +104 -0
  240. package/dist/esm/structures/interactions/ComponentInteraction.d.ts +44 -0
  241. package/dist/esm/structures/interactions/ComponentInteraction.js +53 -0
  242. package/dist/esm/structures/interactions/ModalSubmitInteraction.d.ts +29 -0
  243. package/dist/esm/structures/interactions/ModalSubmitInteraction.js +37 -0
  244. package/dist/esm/structures/interactions/createInteraction.d.ts +4 -0
  245. package/dist/esm/structures/interactions/createInteraction.js +31 -0
  246. package/dist/esm/types.d.ts +369 -0
  247. package/dist/esm/types.js +1 -0
  248. package/dist/esm/util/Collection.d.ts +32 -0
  249. package/dist/esm/util/Collection.js +141 -0
  250. package/dist/esm/util/Permissions.d.ts +87 -0
  251. package/dist/esm/util/Permissions.js +111 -0
  252. package/dist/esm/util/Snowflake.d.ts +20 -0
  253. package/dist/esm/util/Snowflake.js +37 -0
  254. package/dist/esm/util/TypedEmitter.d.ts +17 -0
  255. package/dist/esm/util/TypedEmitter.js +2 -0
  256. package/dist/esm/util/constants.d.ts +78 -0
  257. package/dist/esm/util/constants.js +78 -0
  258. package/dist/esm/util/emoji.d.ts +8 -0
  259. package/dist/esm/util/emoji.js +7 -0
  260. package/dist/esm/util/formatters.d.ts +29 -0
  261. package/dist/esm/util/formatters.js +34 -0
  262. package/package.json +57 -5
@@ -0,0 +1,63 @@
1
+ import { type WebSocketConstructor } from '../gateway/Gateway.js';
2
+ import { ApplicationCommandManager } from '../managers/CommandManager.js';
3
+ import { ChannelManager } from '../managers/ChannelManager.js';
4
+ import { ServerManager } from '../managers/ServerManager.js';
5
+ import { UserManager } from '../managers/UserManager.js';
6
+ import { VoiceManager } from '../managers/VoiceManager.js';
7
+ import { REST, type RESTOptions } from '../rest/REST.js';
8
+ import { Invite } from '../structures/ServerAssets.js';
9
+ import { ClientUser } from '../structures/User.js';
10
+ import { type PermissionResolvable } from '../util/Permissions.js';
11
+ import { TypedEmitter } from '../util/TypedEmitter.js';
12
+ import type { ClientEvents } from './events.js';
13
+ export interface ClientOptions {
14
+ token?: string;
15
+ applicationId?: string;
16
+ api?: string;
17
+ gateway?: string;
18
+ appUrl?: string;
19
+ WebSocket?: WebSocketConstructor;
20
+ fetch?: typeof fetch;
21
+ rest?: Omit<RESTOptions, 'token' | 'api' | 'fetch'>;
22
+ reconnect?: boolean;
23
+ initialBackoff?: number;
24
+ maxBackoff?: number;
25
+ messageCacheLimit?: number;
26
+ fetchServersOnReady?: boolean;
27
+ fetchMembersOnReady?: boolean;
28
+ }
29
+ export declare class ClientApplication {
30
+ readonly id: string;
31
+ readonly commands: ApplicationCommandManager;
32
+ constructor(client: Client, id: string);
33
+ }
34
+ export declare class Client extends TypedEmitter<ClientEvents> {
35
+ readonly options: Required<Omit<ClientOptions, 'token' | 'applicationId' | 'WebSocket' | 'fetch' | 'rest' | 'appUrl'>> & Pick<ClientOptions, 'WebSocket'>;
36
+ readonly rest: REST;
37
+ readonly appUrl: string;
38
+ readonly users: UserManager;
39
+ readonly servers: ServerManager;
40
+ readonly channels: ChannelManager;
41
+ readonly voice: VoiceManager;
42
+ user: ClientUser | null;
43
+ application: ClientApplication | null;
44
+ readyAt: Date | null;
45
+ private gateway;
46
+ constructor(options?: ClientOptions);
47
+ get token(): string | null;
48
+ get applicationId(): string | null;
49
+ get uptime(): number | null;
50
+ isReady(): boolean;
51
+ setApplicationId(id: string): void;
52
+ requireApplication(): ClientApplication;
53
+ requireApplicationId(): string;
54
+ fetchSelf(): Promise<ClientUser>;
55
+ login(token?: string): Promise<string>;
56
+ destroy(): Promise<void>;
57
+ generateInvite(options?: {
58
+ permissions?: PermissionResolvable;
59
+ applicationId?: string;
60
+ }): string;
61
+ fetchInvite(code: string): Promise<Invite>;
62
+ private sync;
63
+ }
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Client = exports.ClientApplication = void 0;
4
+ const BaffError_js_1 = require("../errors/BaffError.js");
5
+ const Gateway_js_1 = require("../gateway/Gateway.js");
6
+ const CommandManager_js_1 = require("../managers/CommandManager.js");
7
+ const ChannelManager_js_1 = require("../managers/ChannelManager.js");
8
+ const ServerManager_js_1 = require("../managers/ServerManager.js");
9
+ const UserManager_js_1 = require("../managers/UserManager.js");
10
+ const VoiceManager_js_1 = require("../managers/VoiceManager.js");
11
+ const REST_js_1 = require("../rest/REST.js");
12
+ const Routes_js_1 = require("../rest/Routes.js");
13
+ const ServerAssets_js_1 = require("../structures/ServerAssets.js");
14
+ const User_js_1 = require("../structures/User.js");
15
+ const constants_js_1 = require("../util/constants.js");
16
+ const Permissions_js_1 = require("../util/Permissions.js");
17
+ const TypedEmitter_js_1 = require("../util/TypedEmitter.js");
18
+ const dispatch_js_1 = require("./dispatch.js");
19
+ class ClientApplication {
20
+ id;
21
+ commands;
22
+ constructor(client, id) {
23
+ this.id = id;
24
+ this.commands = new CommandManager_js_1.ApplicationCommandManager(client, () => id);
25
+ }
26
+ }
27
+ exports.ClientApplication = ClientApplication;
28
+ class Client extends TypedEmitter_js_1.TypedEmitter {
29
+ options;
30
+ rest;
31
+ appUrl;
32
+ users = new UserManager_js_1.UserManager(this);
33
+ servers = new ServerManager_js_1.ServerManager(this);
34
+ channels = new ChannelManager_js_1.ChannelManager(this);
35
+ voice = new VoiceManager_js_1.VoiceManager(this);
36
+ user = null;
37
+ application = null;
38
+ readyAt = null;
39
+ gateway = null;
40
+ constructor(options = {}) {
41
+ super({ captureRejections: true });
42
+ const api = (options.api ?? constants_js_1.DEFAULT_API_URL).replace(/\/+$/, '');
43
+ this.options = {
44
+ api,
45
+ gateway: options.gateway ?? constants_js_1.DEFAULT_GATEWAY_URL,
46
+ WebSocket: options.WebSocket,
47
+ reconnect: options.reconnect ?? true,
48
+ initialBackoff: options.initialBackoff ?? 1000,
49
+ maxBackoff: options.maxBackoff ?? 30_000,
50
+ messageCacheLimit: options.messageCacheLimit ?? 200,
51
+ fetchServersOnReady: options.fetchServersOnReady ?? true,
52
+ fetchMembersOnReady: options.fetchMembersOnReady ?? false
53
+ };
54
+ this.appUrl = (options.appUrl ?? api.replace(/\/api$/, '')).replace(/\/+$/, '');
55
+ this.rest = new REST_js_1.REST({ ...options.rest, api, token: options.token, fetch: options.fetch });
56
+ this.rest.on('rateLimited', (info) => this.emit('debug', `Rate limited on ${info.method} ${info.path}; waiting ${info.retryAfter}s.`));
57
+ if (options.applicationId)
58
+ this.setApplicationId(options.applicationId);
59
+ }
60
+ get token() {
61
+ return this.rest.token;
62
+ }
63
+ get applicationId() {
64
+ return this.application?.id ?? null;
65
+ }
66
+ get uptime() {
67
+ return this.readyAt ? Date.now() - this.readyAt.getTime() : null;
68
+ }
69
+ isReady() {
70
+ return this.readyAt !== null;
71
+ }
72
+ setApplicationId(id) {
73
+ if (this.application?.id !== id)
74
+ this.application = new ClientApplication(this, id);
75
+ }
76
+ requireApplication() {
77
+ if (!this.application) {
78
+ throw new BaffError_js_1.BaffError('NO_APPLICATION_ID', 'The application id is unknown. Pass applicationId to Client: baff.gg does not tell bots their application id.');
79
+ }
80
+ return this.application;
81
+ }
82
+ requireApplicationId() {
83
+ return this.requireApplication().id;
84
+ }
85
+ async fetchSelf() {
86
+ const data = await this.rest.get(Routes_js_1.Routes.me());
87
+ if (this.user)
88
+ this.user._patch(data);
89
+ else
90
+ this.user = new User_js_1.ClientUser(this, data);
91
+ this.users.cache.set(this.user.id, this.user);
92
+ return this.user;
93
+ }
94
+ async login(token) {
95
+ if (token)
96
+ this.rest.setToken(token);
97
+ if (!this.rest.token)
98
+ throw new BaffError_js_1.BaffError('NO_TOKEN', 'No token provided. Pass it to Client or login().');
99
+ await this.fetchSelf();
100
+ const gateway = new Gateway_js_1.Gateway({
101
+ token: this.rest.token,
102
+ url: this.options.gateway,
103
+ WebSocket: this.options.WebSocket,
104
+ reconnect: this.options.reconnect,
105
+ initialBackoff: this.options.initialBackoff,
106
+ maxBackoff: this.options.maxBackoff
107
+ });
108
+ this.gateway = gateway;
109
+ gateway.on('dispatch', (event, data) => (0, dispatch_js_1.dispatch)(this, event, data));
110
+ gateway.on('debug', (message) => this.emit('debug', message));
111
+ gateway.on('disconnect', (code, reason) => this.emit('disconnect', code, reason));
112
+ gateway.on('reconnecting', (attempt, delay) => this.emit('reconnecting', attempt, delay));
113
+ gateway.on('reconnected', () => {
114
+ this.sync().then(() => this.emit('reconnected', this), (error) => this.emit('debug', `Resync after reconnect failed: ${error.message}`));
115
+ });
116
+ try {
117
+ await gateway.connect();
118
+ await this.sync();
119
+ }
120
+ catch (error) {
121
+ gateway.destroy();
122
+ this.gateway = null;
123
+ throw error;
124
+ }
125
+ this.readyAt = new Date();
126
+ this.emit('ready', this);
127
+ return this.rest.token;
128
+ }
129
+ async destroy() {
130
+ this.gateway?.destroy();
131
+ this.gateway = null;
132
+ this.readyAt = null;
133
+ }
134
+ generateInvite(options = {}) {
135
+ const id = options.applicationId ?? this.requireApplicationId();
136
+ const permissions = new Permissions_js_1.PermissionsBitField(options.permissions ?? 0n);
137
+ return `${this.appUrl}/oauth2/authorize?client_id=${id}&permissions=${permissions}`;
138
+ }
139
+ async fetchInvite(code) {
140
+ return new ServerAssets_js_1.Invite(this, await this.rest.get(Routes_js_1.Routes.invite(code), { auth: false }));
141
+ }
142
+ async sync() {
143
+ if (!this.options.fetchServersOnReady)
144
+ return;
145
+ await this.users.fetchTags().catch((error) => this.emit('debug', `Could not load user tags: ${error.message}`));
146
+ const servers = await this.servers.fetch();
147
+ if (this.options.fetchMembersOnReady) {
148
+ await Promise.all(servers.map((server) => server.members.fetch().catch((error) => this.emit('debug', `Members of ${server.id}: ${error.message}`))));
149
+ }
150
+ }
151
+ }
152
+ exports.Client = Client;
@@ -0,0 +1,2 @@
1
+ import type { Client } from './Client.js';
2
+ export declare function dispatch(client: Client, event: string, data: unknown): void;
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dispatch = dispatch;
4
+ const Message_js_1 = require("../structures/Message.js");
5
+ const ServerChannels_js_1 = require("../structures/channels/ServerChannels.js");
6
+ const createInteraction_js_1 = require("../structures/interactions/createInteraction.js");
7
+ const ScheduledEvent_js_1 = require("../structures/ScheduledEvent.js");
8
+ const handlers = {
9
+ SERVER_CREATE(client, d) {
10
+ client.emit('serverCreate', client.servers._add(d));
11
+ },
12
+ SERVER_UPDATE(client, d) {
13
+ const server = client.servers.cache.get(d.id);
14
+ if (!server)
15
+ return void client.servers._add(d);
16
+ const before = server._clone();
17
+ client.emit('serverUpdate', before, server._patch(d));
18
+ },
19
+ SERVER_REMOVE(client, d) {
20
+ const server = client.servers._remove(d.serverId);
21
+ client.emit('serverRemove', { id: d.serverId, reason: d.reason ?? null, server });
22
+ },
23
+ SERVER_CHANNELS_UPDATE(client, d) {
24
+ const { created, updated, deleted } = client.channels._replaceServer(d.serverId, d.channels);
25
+ created.forEach((c) => client.emit('channelCreate', c));
26
+ updated.forEach(([before, after]) => client.emit('channelUpdate', before, after));
27
+ deleted.forEach((c) => client.emit('channelDelete', c));
28
+ },
29
+ SERVER_ROLES_UPDATE(client, d) {
30
+ const server = client.servers.cache.get(d.serverId);
31
+ if (!server)
32
+ return;
33
+ const { created, updated, deleted } = server.roles._setAll(d.roles);
34
+ created.forEach((r) => client.emit('roleCreate', r));
35
+ updated.forEach(([before, after]) => client.emit('roleUpdate', before, after));
36
+ deleted.forEach((r) => client.emit('roleDelete', r));
37
+ },
38
+ THREAD_UPDATE(client, d) {
39
+ const data = { ...d.channel, serverId: d.serverId };
40
+ const existing = client.channels.cache.get(data.id);
41
+ if (!(existing instanceof ServerChannels_js_1.ThreadChannel))
42
+ return void client.emit('threadCreate', client.channels._addThread(data));
43
+ const before = existing._clone();
44
+ client.emit('threadUpdate', before, client.channels._addThread(data));
45
+ },
46
+ MESSAGE_CREATE(client, d) {
47
+ const channel = client.channels._textChannel(d.channelId, d.serverId ?? null);
48
+ channel.lastMessageId = d.id;
49
+ client.emit('messageCreate', channel.messages._add(d));
50
+ },
51
+ MESSAGE_UPDATE(client, d) {
52
+ const channel = client.channels._textChannel(d.channelId, d.serverId ?? null);
53
+ const cached = channel.messages.cache.get(d.id);
54
+ const before = cached ? cached._clone() : null;
55
+ client.emit('messageUpdate', before, channel.messages._add(d));
56
+ },
57
+ MESSAGE_DELETE(client, d) {
58
+ const channel = client.channels._textChannel(d.channelId, null);
59
+ client.emit('messageDelete', { id: d.id, channelId: d.channelId, channel, message: channel.messages._remove(d.id) });
60
+ },
61
+ MESSAGE_REACTION_ADD(client, d) {
62
+ const event = reactionEvent(client, d);
63
+ const message = event.message;
64
+ if (message) {
65
+ const own = d.userId === client.user?.id;
66
+ const existing = message.reactions.get(d.emoji);
67
+ if (existing) {
68
+ existing.count++;
69
+ existing.me ||= own;
70
+ }
71
+ else {
72
+ message.reactions.set(d.emoji, new Message_js_1.MessageReaction(message, d.emoji, 1, own));
73
+ }
74
+ }
75
+ client.emit('messageReactionAdd', event);
76
+ },
77
+ MESSAGE_REACTION_REMOVE(client, d) {
78
+ const event = reactionEvent(client, d);
79
+ const reaction = event.message?.reactions.get(d.emoji);
80
+ if (reaction) {
81
+ reaction.count = Math.max(0, reaction.count - 1);
82
+ if (d.userId === client.user?.id)
83
+ reaction.me = false;
84
+ if (reaction.count === 0)
85
+ event.message?.reactions.delete(d.emoji);
86
+ }
87
+ client.emit('messageReactionRemove', event);
88
+ },
89
+ MESSAGE_PIN(client, d) {
90
+ const channel = client.channels._textChannel(d.channelId, null);
91
+ const message = channel.messages.cache.get(d.messageId);
92
+ if (message)
93
+ message.pinned = d.pinned;
94
+ client.emit('messagePin', { channelId: d.channelId, messageId: d.messageId, pinned: d.pinned, channel });
95
+ },
96
+ TYPING_START(client, d) {
97
+ client.emit('typingStart', {
98
+ channelId: d.channelId,
99
+ userId: d.userId,
100
+ channel: client.channels._textChannel(d.channelId, null),
101
+ user: client.users.cache.get(d.userId) ?? null
102
+ });
103
+ },
104
+ MENTION(client, d) {
105
+ client.emit('mention', { channelId: d.channelId, messageId: d.messageId, serverId: d.serverId ?? null });
106
+ },
107
+ POLL_VOTE(client, d) {
108
+ client.emit('pollVote', d);
109
+ },
110
+ MEMBER_ADD(client, d) {
111
+ const server = client.servers.cache.get(d.serverId);
112
+ if (server)
113
+ client.emit('memberAdd', server.members._add(d.member));
114
+ },
115
+ MEMBER_REMOVE(client, d) {
116
+ const server = client.servers.cache.get(d.serverId);
117
+ const member = server?.members.cache.get(d.userId) ?? null;
118
+ server?.members.cache.delete(d.userId);
119
+ client.emit('memberRemove', { serverId: d.serverId, userId: d.userId, member, user: member?.user ?? client.users.cache.get(d.userId) ?? null });
120
+ },
121
+ MEMBER_UPDATE(client, d) {
122
+ const server = client.servers.cache.get(d.serverId);
123
+ if (!server)
124
+ return;
125
+ const cached = server.members.cache.get(d.userId);
126
+ const user = client.users.cache.get(d.userId) ?? { id: d.userId, username: '' };
127
+ const before = cached ? cached._clone() : null;
128
+ const after = cached ?? server.members._add({ user, roles: [], nick: null });
129
+ after._patch(d);
130
+ client.emit('memberUpdate', before, after);
131
+ },
132
+ PRESENCE_UPDATE(client, d) {
133
+ const user = client.users.cache.get(d.userId) ?? null;
134
+ user?._patch({ status: d.status, customStatus: d.customStatus ?? null });
135
+ client.emit('presenceUpdate', { userId: d.userId, status: d.status, customStatus: d.customStatus ?? null, user });
136
+ },
137
+ USER_UPDATE(client, d) {
138
+ const cached = client.users.cache.get(d.id);
139
+ const before = cached ? cached._clone() : null;
140
+ client.emit('userUpdate', before, client.users._add(d));
141
+ },
142
+ CLAN_TAG_UPDATE(client, d) {
143
+ client.emit('clanTagUpdate', d);
144
+ },
145
+ DM_OPEN(client, d) {
146
+ client.emit('dmOpen', client.channels._addDM(d));
147
+ },
148
+ VOICE_STATE_UPDATE(client, d) {
149
+ const state = d;
150
+ const states = state.serverId ? client.servers.cache.get(state.serverId)?.voiceStates : undefined;
151
+ const before = states?.get(state.userId) ?? null;
152
+ if (state.channelId)
153
+ states?.set(state.userId, state);
154
+ else
155
+ states?.delete(state.userId);
156
+ client.emit('voiceStateUpdate', before, state);
157
+ },
158
+ SOUNDBOARD_PLAY: (client, d) => void client.emit('soundboardPlay', d),
159
+ CALL_ALONE: (client, d) => void client.emit('callAlone', d),
160
+ STAGE_INSTANCE_CREATE: (client, d) => void client.emit('stageInstanceCreate', d),
161
+ STAGE_INSTANCE_UPDATE: (client, d) => void client.emit('stageInstanceUpdate', d),
162
+ STAGE_INSTANCE_DELETE: (client, d) => void client.emit('stageInstanceDelete', d),
163
+ VOICE_CHANNEL_STATUS_UPDATE: (client, d) => void client.emit('voiceChannelStatusUpdate', d),
164
+ SERVER_SOUNDBOARD_UPDATE: (client, d) => void client.emit('serverSoundboardUpdate', d),
165
+ SERVER_STICKERS_UPDATE(client, d) {
166
+ client.servers.cache.get(d.serverId)?.stickers._setAll(d.stickers);
167
+ client.emit('serverStickersUpdate', d);
168
+ },
169
+ SERVER_EVENT_CREATE(client, d) {
170
+ const server = client.servers.cache.get(d.serverId);
171
+ client.emit('serverEventCreate', server ? server.events._add(d) : new ScheduledEvent_js_1.ScheduledEvent(client, d));
172
+ },
173
+ SERVER_EVENT_UPDATE(client, d) {
174
+ const server = client.servers.cache.get(d.serverId);
175
+ client.emit('serverEventUpdate', server ? server.events._add(d) : new ScheduledEvent_js_1.ScheduledEvent(client, d));
176
+ },
177
+ SERVER_EVENT_DELETE(client, d) {
178
+ client.servers.cache.get(d.serverId)?.events.cache.delete(d.id);
179
+ client.emit('serverEventDelete', { serverId: d.serverId, id: d.id });
180
+ },
181
+ SERVER_EVENT_USER_ADD(client, d) {
182
+ const event = client.servers.cache.get(d.serverId)?.events.cache.get(d.eventId);
183
+ if (event)
184
+ event.interestedCount = d.interestedCount;
185
+ client.emit('serverEventUserAdd', { serverId: d.serverId, eventId: d.eventId, userId: d.userId, interestedCount: d.interestedCount });
186
+ },
187
+ SERVER_EVENT_USER_REMOVE(client, d) {
188
+ const event = client.servers.cache.get(d.serverId)?.events.cache.get(d.eventId);
189
+ if (event)
190
+ event.interestedCount = d.interestedCount;
191
+ client.emit('serverEventUserRemove', { serverId: d.serverId, eventId: d.eventId, userId: d.userId, interestedCount: d.interestedCount });
192
+ },
193
+ INTERACTION_CREATE(client, d) {
194
+ const raw = d;
195
+ if (raw.type === 'ping')
196
+ return;
197
+ client.setApplicationId(raw.applicationId);
198
+ client.emit('interactionCreate', (0, createInteraction_js_1.createInteraction)(client, raw));
199
+ }
200
+ };
201
+ function reactionEvent(client, d) {
202
+ const channel = client.channels._textChannel(d.channelId, null);
203
+ return {
204
+ channelId: d.channelId,
205
+ messageId: d.messageId,
206
+ userId: d.userId,
207
+ emoji: d.emoji,
208
+ channel,
209
+ message: channel.messages.cache.get(d.messageId) ?? null,
210
+ user: client.users.cache.get(d.userId) ?? null
211
+ };
212
+ }
213
+ function dispatch(client, event, data) {
214
+ client.emit('raw', { t: event, d: data });
215
+ try {
216
+ handlers[event]?.(client, data);
217
+ }
218
+ catch (error) {
219
+ if (client.listenerCount('error') > 0)
220
+ client.emit('error', error);
221
+ else
222
+ queueMicrotask(() => { throw error; });
223
+ }
224
+ }
@@ -0,0 +1,129 @@
1
+ import type { Channel } from '../structures/channels/ServerChannels.js';
2
+ import type { ThreadChannel } from '../structures/channels/ServerChannels.js';
3
+ import type { DMChannel } from '../structures/channels/DMChannel.js';
4
+ import type { TextBasedChannel } from '../structures/channels/TextBasedChannel.js';
5
+ import type { BaseInteraction } from '../structures/interactions/BaseInteraction.js';
6
+ import type { Message } from '../structures/Message.js';
7
+ import type { Role } from '../structures/Role.js';
8
+ import type { ScheduledEvent } from '../structures/ScheduledEvent.js';
9
+ import type { Server } from '../structures/Server.js';
10
+ import type { ServerMember } from '../structures/ServerMember.js';
11
+ import type { User } from '../structures/User.js';
12
+ import type { APIVoiceState } from '../types.js';
13
+ import type { Client } from './Client.js';
14
+ export interface ServerRemoval {
15
+ id: string;
16
+ reason: string | null;
17
+ server: Server | null;
18
+ }
19
+ export interface MessageDeleteEvent {
20
+ id: string;
21
+ channelId: string;
22
+ channel: TextBasedChannel;
23
+ message: Message | null;
24
+ }
25
+ export interface ReactionEvent {
26
+ channelId: string;
27
+ messageId: string;
28
+ userId: string;
29
+ emoji: string;
30
+ channel: TextBasedChannel;
31
+ message: Message | null;
32
+ user: User | null;
33
+ }
34
+ export interface MessagePinEvent {
35
+ channelId: string;
36
+ messageId: string;
37
+ pinned: boolean;
38
+ channel: TextBasedChannel;
39
+ }
40
+ export interface TypingEvent {
41
+ channelId: string;
42
+ userId: string;
43
+ channel: TextBasedChannel;
44
+ user: User | null;
45
+ }
46
+ export interface MentionEvent {
47
+ channelId: string;
48
+ messageId: string;
49
+ serverId: string | null;
50
+ }
51
+ export interface MemberRemoval {
52
+ serverId: string;
53
+ userId: string;
54
+ member: ServerMember | null;
55
+ user: User | null;
56
+ }
57
+ export interface PresenceEvent {
58
+ userId: string;
59
+ status: string;
60
+ customStatus: string | null;
61
+ user: User | null;
62
+ }
63
+ export type ClientEvents = {
64
+ ready: [client: Client];
65
+ reconnected: [client: Client];
66
+ reconnecting: [attempt: number, delayMs: number];
67
+ disconnect: [code: number, reason: string];
68
+ raw: [packet: {
69
+ t: string;
70
+ d: unknown;
71
+ }];
72
+ debug: [message: string];
73
+ error: [error: Error];
74
+ serverCreate: [server: Server];
75
+ serverUpdate: [before: Server, after: Server];
76
+ serverRemove: [removal: ServerRemoval];
77
+ channelCreate: [channel: Channel];
78
+ channelUpdate: [before: Channel, after: Channel];
79
+ channelDelete: [channel: Channel];
80
+ roleCreate: [role: Role];
81
+ roleUpdate: [before: Role, after: Role];
82
+ roleDelete: [role: Role];
83
+ threadCreate: [thread: ThreadChannel];
84
+ threadUpdate: [before: ThreadChannel, after: ThreadChannel];
85
+ messageCreate: [message: Message];
86
+ messageUpdate: [before: Message | null, after: Message];
87
+ messageDelete: [event: MessageDeleteEvent];
88
+ messageReactionAdd: [event: ReactionEvent];
89
+ messageReactionRemove: [event: ReactionEvent];
90
+ messagePin: [event: MessagePinEvent];
91
+ typingStart: [event: TypingEvent];
92
+ mention: [event: MentionEvent];
93
+ pollVote: [data: Record<string, unknown>];
94
+ memberAdd: [member: ServerMember];
95
+ memberRemove: [removal: MemberRemoval];
96
+ memberUpdate: [before: ServerMember | null, after: ServerMember];
97
+ presenceUpdate: [event: PresenceEvent];
98
+ userUpdate: [before: User | null, after: User];
99
+ clanTagUpdate: [data: Record<string, unknown>];
100
+ dmOpen: [channel: DMChannel];
101
+ voiceStateUpdate: [before: APIVoiceState | null, after: APIVoiceState];
102
+ soundboardPlay: [data: Record<string, unknown>];
103
+ callAlone: [data: Record<string, unknown>];
104
+ stageInstanceCreate: [data: Record<string, unknown>];
105
+ stageInstanceUpdate: [data: Record<string, unknown>];
106
+ stageInstanceDelete: [data: Record<string, unknown>];
107
+ voiceChannelStatusUpdate: [data: Record<string, unknown>];
108
+ serverStickersUpdate: [data: Record<string, unknown>];
109
+ serverSoundboardUpdate: [data: Record<string, unknown>];
110
+ serverEventCreate: [event: ScheduledEvent];
111
+ serverEventUpdate: [event: ScheduledEvent];
112
+ serverEventDelete: [data: {
113
+ serverId: string;
114
+ id: string;
115
+ }];
116
+ serverEventUserAdd: [data: {
117
+ serverId: string;
118
+ eventId: string;
119
+ userId: string;
120
+ interestedCount: number;
121
+ }];
122
+ serverEventUserRemove: [data: {
123
+ serverId: string;
124
+ eventId: string;
125
+ userId: string;
126
+ interestedCount: number;
127
+ }];
128
+ interactionCreate: [interaction: BaseInteraction];
129
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,37 @@
1
+ import { BaffError } from '../errors/BaffError.js';
2
+ import { Collection } from '../util/Collection.js';
3
+ import { TypedEmitter } from '../util/TypedEmitter.js';
4
+ export interface CollectorOptions<V> {
5
+ filter?: (item: V, collected: Collection<string, V>) => boolean | Promise<boolean>;
6
+ time?: number;
7
+ idle?: number;
8
+ max?: number;
9
+ maxProcessed?: number;
10
+ }
11
+ type CollectorEvents<V> = {
12
+ collect: [item: V];
13
+ ignore: [item: V];
14
+ end: [collected: Collection<string, V>, reason: string];
15
+ };
16
+ export declare class CollectorError extends BaffError {
17
+ readonly collected: Collection<string, unknown>;
18
+ readonly reason: string;
19
+ constructor(collected: Collection<string, unknown>, reason: string);
20
+ }
21
+ export declare abstract class Collector<V> extends TypedEmitter<CollectorEvents<V>> {
22
+ protected readonly options: CollectorOptions<V>;
23
+ readonly collected: Collection<string, V>;
24
+ ended: boolean;
25
+ endReason: string | null;
26
+ private processed;
27
+ private timer;
28
+ private idleTimer;
29
+ constructor(options?: CollectorOptions<V>);
30
+ protected abstract keyOf(item: V): string;
31
+ protected handle(item: V): Promise<void>;
32
+ stop(reason?: string): void;
33
+ protected abstract cleanup(): void;
34
+ private resetIdle;
35
+ }
36
+ export declare function awaitCollector<V>(collector: Collector<V>, errors?: string[]): Promise<Collection<string, V>>;
37
+ export {};