baff.js 0.0.0-stage → 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 (262) hide show
  1. package/CHANGELOG.md +20 -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 +45 -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 +113 -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 +41 -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 +109 -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 +58 -6
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChatInputCommandInteraction = exports.CommandInteractionOptions = void 0;
4
+ const BaffError_js_1 = require("../../errors/BaffError.js");
5
+ const BaseInteraction_js_1 = require("./BaseInteraction.js");
6
+ class CommandInteractionOptions {
7
+ client;
8
+ serverId;
9
+ data;
10
+ subcommandGroup;
11
+ subcommand;
12
+ values;
13
+ constructor(client, serverId, options = []) {
14
+ this.client = client;
15
+ this.serverId = serverId;
16
+ let level = options;
17
+ let group = null;
18
+ let sub = null;
19
+ if (level[0]?.type === 'subcommand_group') {
20
+ group = level[0].name;
21
+ level = level[0].options ?? [];
22
+ }
23
+ if (level[0]?.type === 'subcommand') {
24
+ sub = level[0].name;
25
+ level = level[0].options ?? [];
26
+ }
27
+ this.data = level;
28
+ this.subcommandGroup = group;
29
+ this.subcommand = sub;
30
+ this.values = new Map(level.map((o) => [o.name, o]));
31
+ }
32
+ get(name, required = false) {
33
+ const option = this.values.get(name) ?? null;
34
+ if (!option && required)
35
+ throw new BaffError_js_1.BaffError('COMMAND_OPTION_MISSING', `Required option "${name}" was not provided.`);
36
+ return option;
37
+ }
38
+ getSubcommand(required = true) {
39
+ if (!this.subcommand && required)
40
+ throw new BaffError_js_1.BaffError('COMMAND_SUBCOMMAND_MISSING', 'This interaction has no subcommand.');
41
+ return this.subcommand;
42
+ }
43
+ getSubcommandGroup(required = false) {
44
+ if (!this.subcommandGroup && required)
45
+ throw new BaffError_js_1.BaffError('COMMAND_SUBCOMMAND_GROUP_MISSING', 'This interaction has no subcommand group.');
46
+ return this.subcommandGroup;
47
+ }
48
+ getString(name, required = false) {
49
+ return this.typed(name, 'string', required);
50
+ }
51
+ getInteger(name, required = false) {
52
+ return this.typed(name, 'integer', required);
53
+ }
54
+ getNumber(name, required = false) {
55
+ return this.typed(name, 'number', required);
56
+ }
57
+ getBoolean(name, required = false) {
58
+ return this.typed(name, 'boolean', required);
59
+ }
60
+ getUserId(name, required = false) {
61
+ return this.typed(name, 'user', required);
62
+ }
63
+ getRoleId(name, required = false) {
64
+ return this.typed(name, 'role', required);
65
+ }
66
+ getChannelId(name, required = false) {
67
+ return this.typed(name, 'channel', required);
68
+ }
69
+ getUser(name) {
70
+ const id = this.getUserId(name);
71
+ return id ? (this.client.users.cache.get(id) ?? null) : null;
72
+ }
73
+ async fetchUser(name) {
74
+ const id = this.getUserId(name);
75
+ return id ? this.client.users.fetch(id) : null;
76
+ }
77
+ getRole(name) {
78
+ const id = this.getRoleId(name);
79
+ return id && this.serverId ? (this.client.servers.cache.get(this.serverId)?.roles.cache.get(id) ?? null) : null;
80
+ }
81
+ getChannel(name) {
82
+ const id = this.getChannelId(name);
83
+ return id ? (this.client.channels.cache.get(id) ?? null) : null;
84
+ }
85
+ typed(name, type, required) {
86
+ const option = this.get(name, required);
87
+ if (!option)
88
+ return null;
89
+ if (option.type !== type)
90
+ throw new BaffError_js_1.BaffError('COMMAND_OPTION_TYPE', `Option "${name}" is a ${option.type}, not a ${type}.`);
91
+ return option.value ?? null;
92
+ }
93
+ }
94
+ exports.CommandInteractionOptions = CommandInteractionOptions;
95
+ class ChatInputCommandInteraction extends BaseInteraction_js_1.BaseInteraction {
96
+ commandId;
97
+ commandName;
98
+ options;
99
+ constructor(client, raw) {
100
+ super(client, raw);
101
+ this.commandId = raw.data.id ?? '';
102
+ this.commandName = raw.data.name ?? '';
103
+ this.options = new CommandInteractionOptions(client, raw.serverId, raw.data.options);
104
+ }
105
+ get fullCommandName() {
106
+ return [this.commandName, this.options.subcommandGroup, this.options.subcommand].filter(Boolean).join(' ');
107
+ }
108
+ }
109
+ exports.ChatInputCommandInteraction = ChatInputCommandInteraction;
@@ -0,0 +1,44 @@
1
+ import type { Client } from '../../client/Client.js';
2
+ import type { APIInteraction } from '../../types.js';
3
+ import { Collection } from '../../util/Collection.js';
4
+ import type { Message } from '../Message.js';
5
+ import type { User } from '../User.js';
6
+ import { BaseInteraction } from './BaseInteraction.js';
7
+ export declare class MessageComponentInteraction extends BaseInteraction {
8
+ readonly customId: string;
9
+ readonly componentType: number;
10
+ readonly commandName: string;
11
+ private readonly source;
12
+ constructor(client: Client, raw: APIInteraction);
13
+ get message(): Message;
14
+ }
15
+ export declare class ButtonInteraction extends MessageComponentInteraction {
16
+ readonly label: string | null;
17
+ constructor(client: Client, raw: APIInteraction);
18
+ }
19
+ export declare class SelectMenuInteraction extends MessageComponentInteraction {
20
+ readonly values: string[];
21
+ readonly users: Collection<string, User>;
22
+ readonly roles: Collection<string, {
23
+ id: string;
24
+ name: string;
25
+ color: string | null;
26
+ }>;
27
+ readonly channels: Collection<string, {
28
+ id: string;
29
+ name: string;
30
+ type: number;
31
+ parentId: string | null;
32
+ }>;
33
+ constructor(client: Client, raw: APIInteraction);
34
+ }
35
+ export declare class StringSelectMenuInteraction extends SelectMenuInteraction {
36
+ }
37
+ export declare class UserSelectMenuInteraction extends SelectMenuInteraction {
38
+ }
39
+ export declare class RoleSelectMenuInteraction extends SelectMenuInteraction {
40
+ }
41
+ export declare class MentionableSelectMenuInteraction extends SelectMenuInteraction {
42
+ }
43
+ export declare class ChannelSelectMenuInteraction extends SelectMenuInteraction {
44
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChannelSelectMenuInteraction = exports.MentionableSelectMenuInteraction = exports.RoleSelectMenuInteraction = exports.UserSelectMenuInteraction = exports.StringSelectMenuInteraction = exports.SelectMenuInteraction = exports.ButtonInteraction = exports.MessageComponentInteraction = void 0;
4
+ const Collection_js_1 = require("../../util/Collection.js");
5
+ const BaseInteraction_js_1 = require("./BaseInteraction.js");
6
+ class MessageComponentInteraction extends BaseInteraction_js_1.BaseInteraction {
7
+ customId;
8
+ componentType;
9
+ commandName;
10
+ source;
11
+ constructor(client, raw) {
12
+ super(client, raw);
13
+ this.customId = raw.data.customId ?? '';
14
+ this.componentType = raw.data.componentType ?? 0;
15
+ this.commandName = raw.message?.interactionName ?? '';
16
+ const channel = client.channels._textChannel(raw.channelId, raw.serverId);
17
+ this.source = channel.messages._add({ serverId: raw.serverId, ...raw.message });
18
+ }
19
+ get message() {
20
+ return this.source;
21
+ }
22
+ }
23
+ exports.MessageComponentInteraction = MessageComponentInteraction;
24
+ class ButtonInteraction extends MessageComponentInteraction {
25
+ label;
26
+ constructor(client, raw) {
27
+ super(client, raw);
28
+ this.label = raw.data.label ?? null;
29
+ }
30
+ }
31
+ exports.ButtonInteraction = ButtonInteraction;
32
+ class SelectMenuInteraction extends MessageComponentInteraction {
33
+ values;
34
+ users = new Collection_js_1.Collection();
35
+ roles = new Collection_js_1.Collection();
36
+ channels = new Collection_js_1.Collection();
37
+ constructor(client, raw) {
38
+ super(client, raw);
39
+ this.values = raw.data.values ?? [];
40
+ const resolved = raw.data.resolved ?? {};
41
+ for (const [id, user] of Object.entries(resolved.users ?? {}))
42
+ this.users.set(id, client.users._add(user));
43
+ for (const [id, role] of Object.entries(resolved.roles ?? {}))
44
+ this.roles.set(id, role);
45
+ for (const [id, channel] of Object.entries(resolved.channels ?? {}))
46
+ this.channels.set(id, channel);
47
+ }
48
+ }
49
+ exports.SelectMenuInteraction = SelectMenuInteraction;
50
+ class StringSelectMenuInteraction extends SelectMenuInteraction {
51
+ }
52
+ exports.StringSelectMenuInteraction = StringSelectMenuInteraction;
53
+ class UserSelectMenuInteraction extends SelectMenuInteraction {
54
+ }
55
+ exports.UserSelectMenuInteraction = UserSelectMenuInteraction;
56
+ class RoleSelectMenuInteraction extends SelectMenuInteraction {
57
+ }
58
+ exports.RoleSelectMenuInteraction = RoleSelectMenuInteraction;
59
+ class MentionableSelectMenuInteraction extends SelectMenuInteraction {
60
+ }
61
+ exports.MentionableSelectMenuInteraction = MentionableSelectMenuInteraction;
62
+ class ChannelSelectMenuInteraction extends SelectMenuInteraction {
63
+ }
64
+ exports.ChannelSelectMenuInteraction = ChannelSelectMenuInteraction;
@@ -0,0 +1,29 @@
1
+ import type { Client } from '../../client/Client.js';
2
+ import type { APIInteraction } from '../../types.js';
3
+ import { Collection } from '../../util/Collection.js';
4
+ import type { Message } from '../Message.js';
5
+ import { BaseInteraction } from './BaseInteraction.js';
6
+ export declare class ModalSubmitFields {
7
+ readonly fields: Collection<string, {
8
+ customId: string;
9
+ value: string;
10
+ }>;
11
+ constructor(list: {
12
+ customId: string;
13
+ value: string;
14
+ }[]);
15
+ getField(customId: string): {
16
+ customId: string;
17
+ value: string;
18
+ };
19
+ getTextInputValue(customId: string): string;
20
+ }
21
+ export declare class ModalSubmitInteraction extends BaseInteraction {
22
+ readonly customId: string;
23
+ readonly fields: ModalSubmitFields;
24
+ readonly commandName: string;
25
+ private readonly source;
26
+ constructor(client: Client, raw: APIInteraction);
27
+ get message(): Message | null;
28
+ isFromMessage(): boolean;
29
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModalSubmitInteraction = exports.ModalSubmitFields = void 0;
4
+ const BaffError_js_1 = require("../../errors/BaffError.js");
5
+ const Collection_js_1 = require("../../util/Collection.js");
6
+ const BaseInteraction_js_1 = require("./BaseInteraction.js");
7
+ class ModalSubmitFields {
8
+ fields;
9
+ constructor(list) {
10
+ this.fields = new Collection_js_1.Collection(list.map((f) => [f.customId, f]));
11
+ }
12
+ getField(customId) {
13
+ const field = this.fields.get(customId);
14
+ if (!field)
15
+ throw new BaffError_js_1.BaffError('MODAL_FIELD_MISSING', `The modal has no field "${customId}".`);
16
+ return field;
17
+ }
18
+ getTextInputValue(customId) {
19
+ return this.getField(customId).value;
20
+ }
21
+ }
22
+ exports.ModalSubmitFields = ModalSubmitFields;
23
+ class ModalSubmitInteraction extends BaseInteraction_js_1.BaseInteraction {
24
+ customId;
25
+ fields;
26
+ commandName;
27
+ source;
28
+ constructor(client, raw) {
29
+ super(client, raw);
30
+ this.customId = raw.data.customId ?? '';
31
+ this.fields = new ModalSubmitFields(raw.data.fields ?? []);
32
+ this.commandName = raw.message?.interactionName ?? '';
33
+ this.source = raw.message ? client.channels._textChannel(raw.channelId, raw.serverId).messages._add({ serverId: raw.serverId, ...raw.message }) : null;
34
+ }
35
+ get message() {
36
+ return this.source;
37
+ }
38
+ isFromMessage() {
39
+ return this.source !== null;
40
+ }
41
+ }
42
+ exports.ModalSubmitInteraction = ModalSubmitInteraction;
@@ -0,0 +1,4 @@
1
+ import type { Client } from '../../client/Client.js';
2
+ import type { APIInteraction } from '../../types.js';
3
+ import type { BaseInteraction } from './BaseInteraction.js';
4
+ export declare function createInteraction(client: Client, raw: APIInteraction): BaseInteraction;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createInteraction = createInteraction;
4
+ const BaffError_js_1 = require("../../errors/BaffError.js");
5
+ const CommandInteraction_js_1 = require("./CommandInteraction.js");
6
+ const ComponentInteraction_js_1 = require("./ComponentInteraction.js");
7
+ const ModalSubmitInteraction_js_1 = require("./ModalSubmitInteraction.js");
8
+ function createInteraction(client, raw) {
9
+ switch (raw.type) {
10
+ case 'command':
11
+ return new CommandInteraction_js_1.ChatInputCommandInteraction(client, raw);
12
+ case 'modal_submit':
13
+ return new ModalSubmitInteraction_js_1.ModalSubmitInteraction(client, raw);
14
+ case 'component':
15
+ switch (raw.data.componentType) {
16
+ case 2:
17
+ return new ComponentInteraction_js_1.ButtonInteraction(client, raw);
18
+ case 3:
19
+ return new ComponentInteraction_js_1.StringSelectMenuInteraction(client, raw);
20
+ case 5:
21
+ return new ComponentInteraction_js_1.UserSelectMenuInteraction(client, raw);
22
+ case 6:
23
+ return new ComponentInteraction_js_1.RoleSelectMenuInteraction(client, raw);
24
+ case 7:
25
+ return new ComponentInteraction_js_1.MentionableSelectMenuInteraction(client, raw);
26
+ case 8:
27
+ return new ComponentInteraction_js_1.ChannelSelectMenuInteraction(client, raw);
28
+ default:
29
+ return new ComponentInteraction_js_1.MessageComponentInteraction(client, raw);
30
+ }
31
+ default:
32
+ throw new BaffError_js_1.BaffError('UNKNOWN_INTERACTION', `Unknown interaction type "${String(raw.type)}".`);
33
+ }
34
+ }
@@ -0,0 +1,369 @@
1
+ export type Id = string;
2
+ export interface APIUser {
3
+ id: Id;
4
+ username: string;
5
+ displayName?: string | null;
6
+ avatarUrl?: string | null;
7
+ bannerUrl?: string | null;
8
+ tag?: 'bot' | 'verified_bot' | 'official' | 'system' | 'staff' | null;
9
+ clanTag?: APIClanTag | null;
10
+ status?: string;
11
+ customStatus?: string | null;
12
+ deleted?: boolean;
13
+ avatarDecoration?: {
14
+ id: string;
15
+ url: string;
16
+ animated: boolean;
17
+ } | null;
18
+ }
19
+ export interface APIClanTag {
20
+ serverId: Id;
21
+ name: string;
22
+ badge: string;
23
+ color: number;
24
+ }
25
+ export interface APIEmbedMedia {
26
+ url: string;
27
+ width?: number;
28
+ height?: number;
29
+ }
30
+ export interface APIEmbed {
31
+ type?: string;
32
+ title?: string;
33
+ description?: string;
34
+ url?: string;
35
+ timestamp?: string;
36
+ color?: number;
37
+ footer?: {
38
+ text: string;
39
+ icon_url?: string;
40
+ };
41
+ image?: APIEmbedMedia;
42
+ thumbnail?: APIEmbedMedia;
43
+ video?: APIEmbedMedia;
44
+ provider?: {
45
+ name?: string;
46
+ url?: string;
47
+ };
48
+ author?: {
49
+ name: string;
50
+ url?: string;
51
+ icon_url?: string;
52
+ };
53
+ fields?: {
54
+ name: string;
55
+ value: string;
56
+ inline?: boolean;
57
+ }[];
58
+ }
59
+ export interface APIComponent {
60
+ type: number;
61
+ id?: number;
62
+ [key: string]: unknown;
63
+ }
64
+ export interface APIAttachment {
65
+ id: Id;
66
+ filename: string;
67
+ contentType: string;
68
+ size: number;
69
+ width?: number | null;
70
+ height?: number | null;
71
+ url: string;
72
+ }
73
+ export interface APIReaction {
74
+ emoji: string;
75
+ count: number;
76
+ me: boolean;
77
+ }
78
+ export interface APISticker {
79
+ id: Id;
80
+ name: string;
81
+ url?: string;
82
+ animated: boolean;
83
+ serverId?: Id;
84
+ deleted?: boolean;
85
+ description?: string;
86
+ emoji?: string | null;
87
+ }
88
+ export interface APIMessage {
89
+ id: Id;
90
+ channelId: Id;
91
+ serverId?: Id | null;
92
+ author: APIUser;
93
+ content: string;
94
+ createdAt: string;
95
+ editedAt: string | null;
96
+ type?: number;
97
+ attachments: APIAttachment[];
98
+ embeds: APIEmbed[];
99
+ components: APIComponent[];
100
+ flags: number;
101
+ reactions: APIReaction[];
102
+ mentions: Id[];
103
+ mentionRoles: Id[];
104
+ mentionEveryone: boolean;
105
+ reply?: {
106
+ id: Id;
107
+ author: APIUser;
108
+ content: string;
109
+ hasAttachments?: boolean;
110
+ forwarded?: boolean;
111
+ };
112
+ replyDeleted?: boolean;
113
+ pinned?: boolean;
114
+ crossposted?: boolean;
115
+ stickers?: APISticker[];
116
+ poll?: unknown;
117
+ forward?: unknown;
118
+ interaction?: {
119
+ user: APIUser;
120
+ name: string;
121
+ };
122
+ nonce?: string;
123
+ interactionName?: string;
124
+ }
125
+ export interface APIRole {
126
+ id: Id;
127
+ name: string;
128
+ color: string | null;
129
+ hoist: boolean;
130
+ position: number;
131
+ permissions: number | string;
132
+ badge?: string | null;
133
+ icon?: string | null;
134
+ botId?: Id | null;
135
+ booster?: boolean;
136
+ }
137
+ export type ChannelKind = 'category' | 'text' | 'announcement' | 'forum' | 'voice' | 'stage' | 'thread' | 'dm' | 'group_dm';
138
+ export interface APIChannel {
139
+ id: Id;
140
+ name?: string;
141
+ kind?: ChannelKind;
142
+ type?: ChannelKind;
143
+ serverId?: Id | null;
144
+ position?: number;
145
+ parentId?: Id | null;
146
+ topic?: string | null;
147
+ slowmodeSecs?: number;
148
+ contentMode?: 'default' | 'spoiler' | 'age_restricted';
149
+ autoArchiveMinutes?: number | null;
150
+ archived?: boolean;
151
+ threadOwnerId?: Id | null;
152
+ threadStarterId?: Id | null;
153
+ threadLocked?: boolean;
154
+ messageCount?: number;
155
+ lastMessageId?: Id | null;
156
+ voiceStatus?: string | null;
157
+ availableTags?: {
158
+ id: Id;
159
+ name: string;
160
+ emoji: string | null;
161
+ }[];
162
+ appliedTags?: Id[];
163
+ requireTag?: boolean;
164
+ pinned?: boolean;
165
+ recipient?: APIUser;
166
+ recipients?: APIUser[];
167
+ ownerId?: Id | null;
168
+ iconUrl?: string | null;
169
+ }
170
+ export interface APIServerSummary {
171
+ id: Id;
172
+ name: string;
173
+ iconUrl: string | null;
174
+ types?: string[];
175
+ community?: boolean;
176
+ listed?: boolean;
177
+ bannerUrl?: string | null;
178
+ boostCount?: number;
179
+ boostTier?: number;
180
+ }
181
+ export interface APIServer extends APIServerSummary {
182
+ ownerId: Id;
183
+ channels: APIChannel[];
184
+ roles: APIRole[];
185
+ myRoles: Id[];
186
+ invitesPaused?: boolean;
187
+ systemChannelId?: Id | null;
188
+ systemFlags?: number;
189
+ defaultNotifications?: 'all' | 'mentions';
190
+ pending?: boolean;
191
+ }
192
+ export interface APIMember {
193
+ user: APIUser;
194
+ status?: string;
195
+ customStatus?: string | null;
196
+ isOwner?: boolean;
197
+ roles: Id[];
198
+ nick: string | null;
199
+ avatarUrl?: string | null;
200
+ bannerUrl?: string | null;
201
+ joinedAt?: string;
202
+ pending?: boolean;
203
+ timeoutUntil?: string | null;
204
+ }
205
+ export interface APIEmoji {
206
+ id: Id;
207
+ serverId: Id;
208
+ name: string;
209
+ animated: boolean;
210
+ url: string;
211
+ uploader?: string | null;
212
+ }
213
+ export interface APIInvite {
214
+ code: string;
215
+ maxAgeSecs?: number;
216
+ expiresAt?: string | null;
217
+ maxUses?: number;
218
+ uses?: number;
219
+ temporary?: boolean;
220
+ inviter?: {
221
+ id: Id;
222
+ username: string;
223
+ displayName?: string;
224
+ } | null;
225
+ vanity?: boolean;
226
+ server?: {
227
+ id: Id;
228
+ name: string;
229
+ iconUrl: string | null;
230
+ memberCount?: number;
231
+ onlineCount?: number;
232
+ };
233
+ }
234
+ export interface APIWebhook {
235
+ id: Id;
236
+ userId: Id;
237
+ name: string;
238
+ path: string;
239
+ createdBy?: string | null;
240
+ createdAt: string;
241
+ }
242
+ export interface APIBan {
243
+ user: APIUser;
244
+ reason: string | null;
245
+ createdAt: string;
246
+ }
247
+ export interface APIServerEvent {
248
+ id: Id;
249
+ serverId: Id;
250
+ creatorId: Id | null;
251
+ creator?: APIUser;
252
+ name: string;
253
+ description: string;
254
+ locationKind: 'voice' | 'external';
255
+ channelId: Id | null;
256
+ location: string | null;
257
+ startAt: string;
258
+ endAt: string | null;
259
+ coverUrl: string | null;
260
+ status: 'scheduled' | 'active' | 'completed' | 'canceled';
261
+ createdAt: string;
262
+ interestedCount: number;
263
+ interested?: boolean;
264
+ }
265
+ export interface APIAuditEntry {
266
+ id: Id;
267
+ action: string;
268
+ actorId: Id | null;
269
+ targetType: string;
270
+ targetId: Id | null;
271
+ targetName: string | null;
272
+ reason: string | null;
273
+ changes: {
274
+ key: string;
275
+ old: unknown;
276
+ new: unknown;
277
+ }[];
278
+ extra: Record<string, unknown>;
279
+ createdAt: string;
280
+ }
281
+ export interface APICommandOption {
282
+ name: string;
283
+ description: string;
284
+ type: string;
285
+ required?: boolean;
286
+ options?: APICommandOption[];
287
+ }
288
+ export interface APICommand {
289
+ id?: Id;
290
+ applicationId?: Id;
291
+ serverId?: Id | null;
292
+ kind?: 'slash' | 'prefix';
293
+ name: string;
294
+ description: string;
295
+ options?: APICommandOption[];
296
+ prefix?: string | null;
297
+ }
298
+ export interface APIInteractionOption {
299
+ name: string;
300
+ type: string;
301
+ value?: string | number | boolean;
302
+ options?: APIInteractionOption[];
303
+ }
304
+ export interface APIInteraction {
305
+ type: 'command' | 'component' | 'modal_submit' | 'ping';
306
+ id: Id;
307
+ token: string;
308
+ applicationId: Id;
309
+ channelId: Id;
310
+ serverId: Id | null;
311
+ user: APIUser & {
312
+ roles?: Id[];
313
+ permissions?: string;
314
+ };
315
+ appPermissions?: string;
316
+ message?: APIMessage;
317
+ data: {
318
+ id?: Id;
319
+ name?: string;
320
+ options?: APIInteractionOption[];
321
+ customId?: string;
322
+ componentType?: number;
323
+ label?: string;
324
+ values?: string[];
325
+ resolved?: {
326
+ users?: Record<string, APIUser>;
327
+ roles?: Record<string, {
328
+ id: Id;
329
+ name: string;
330
+ color: string | null;
331
+ }>;
332
+ channels?: Record<string, {
333
+ id: Id;
334
+ name: string;
335
+ type: number;
336
+ parentId: Id | null;
337
+ }>;
338
+ };
339
+ fields?: {
340
+ customId: string;
341
+ value: string;
342
+ }[];
343
+ };
344
+ }
345
+ export interface APIVoiceJoin {
346
+ url: string;
347
+ token: string;
348
+ canSpeak: boolean;
349
+ canVideo: boolean;
350
+ deafened: boolean;
351
+ suppress: boolean;
352
+ audioBitrate: number;
353
+ room: string;
354
+ identity: string;
355
+ serverId: Id | null;
356
+ channelId: Id;
357
+ }
358
+ export interface APIVoiceState {
359
+ userId: Id;
360
+ serverId: Id | null;
361
+ channelId: Id | null;
362
+ muted: boolean;
363
+ deafened: boolean;
364
+ selfVideo: boolean;
365
+ selfStream: boolean;
366
+ suppress: boolean;
367
+ requestToSpeakAt: string | null;
368
+ invitedToSpeak: boolean;
369
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });