@velliajs/discord 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +133 -0
  3. package/package.json +82 -0
  4. package/src/client/BaseClient.js +83 -0
  5. package/src/client/Client.js +591 -0
  6. package/src/client/WebhookClient.js +103 -0
  7. package/src/client/actions/Action.js +119 -0
  8. package/src/client/actions/ActionsManager.js +79 -0
  9. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  10. package/src/client/actions/AutoModerationActionExecution.js +26 -0
  11. package/src/client/actions/AutoModerationRuleCreate.js +27 -0
  12. package/src/client/actions/AutoModerationRuleDelete.js +31 -0
  13. package/src/client/actions/AutoModerationRuleUpdate.js +29 -0
  14. package/src/client/actions/ChannelCreate.js +23 -0
  15. package/src/client/actions/ChannelDelete.js +23 -0
  16. package/src/client/actions/ChannelUpdate.js +33 -0
  17. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  18. package/src/client/actions/GuildBanAdd.js +20 -0
  19. package/src/client/actions/GuildBanRemove.js +25 -0
  20. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  21. package/src/client/actions/GuildDelete.js +44 -0
  22. package/src/client/actions/GuildEmojiCreate.js +20 -0
  23. package/src/client/actions/GuildEmojiDelete.js +19 -0
  24. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  25. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  26. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  27. package/src/client/actions/GuildMemberRemove.js +31 -0
  28. package/src/client/actions/GuildMemberUpdate.js +44 -0
  29. package/src/client/actions/GuildRoleCreate.js +25 -0
  30. package/src/client/actions/GuildRoleDelete.js +29 -0
  31. package/src/client/actions/GuildRoleUpdate.js +39 -0
  32. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  33. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  34. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  35. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  36. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  37. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  38. package/src/client/actions/GuildStickerCreate.js +20 -0
  39. package/src/client/actions/GuildStickerDelete.js +19 -0
  40. package/src/client/actions/GuildStickerUpdate.js +20 -0
  41. package/src/client/actions/GuildStickersUpdate.js +34 -0
  42. package/src/client/actions/GuildUpdate.js +33 -0
  43. package/src/client/actions/InteractionCreate.js +101 -0
  44. package/src/client/actions/InviteCreate.js +28 -0
  45. package/src/client/actions/InviteDelete.js +30 -0
  46. package/src/client/actions/MessageCreate.js +37 -0
  47. package/src/client/actions/MessageDelete.js +32 -0
  48. package/src/client/actions/MessageDeleteBulk.js +47 -0
  49. package/src/client/actions/MessageReactionAdd.js +55 -0
  50. package/src/client/actions/MessageReactionRemove.js +45 -0
  51. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  52. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  53. package/src/client/actions/MessageUpdate.js +26 -0
  54. package/src/client/actions/PresenceUpdate.js +42 -0
  55. package/src/client/actions/StageInstanceCreate.js +28 -0
  56. package/src/client/actions/StageInstanceDelete.js +31 -0
  57. package/src/client/actions/StageInstanceUpdate.js +30 -0
  58. package/src/client/actions/ThreadCreate.js +24 -0
  59. package/src/client/actions/ThreadDelete.js +26 -0
  60. package/src/client/actions/ThreadListSync.js +60 -0
  61. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  62. package/src/client/actions/ThreadMembersUpdate.js +47 -0
  63. package/src/client/actions/TypingStart.js +29 -0
  64. package/src/client/actions/UserUpdate.js +36 -0
  65. package/src/client/actions/VoiceStateUpdate.js +43 -0
  66. package/src/client/actions/WebhooksUpdate.js +20 -0
  67. package/src/client/voice/ClientVoiceManager.js +44 -0
  68. package/src/client/websocket/WebSocketManager.js +393 -0
  69. package/src/client/websocket/WebSocketShard.js +231 -0
  70. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  71. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  72. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  73. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  74. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  75. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  76. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  77. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  78. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  79. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  80. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  81. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  82. package/src/client/websocket/handlers/GUILD_CREATE.js +26 -0
  83. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  84. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  85. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  86. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  87. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  88. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  89. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  90. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  91. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  92. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  93. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  94. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  95. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  96. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  97. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  98. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  99. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  100. package/src/client/websocket/handlers/INTERACTION_CREATE.js +5 -0
  101. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  102. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  103. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  104. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  105. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  106. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  107. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  108. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  109. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  110. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  111. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  112. package/src/client/websocket/handlers/READY.js +27 -0
  113. package/src/client/websocket/handlers/RESUMED.js +14 -0
  114. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  115. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  116. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  117. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  118. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  119. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  120. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  121. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  122. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  123. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  124. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  125. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  126. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  127. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  128. package/src/client/websocket/handlers/index.js +64 -0
  129. package/src/errors/DJSError.js +48 -0
  130. package/src/errors/ErrorCodes.js +319 -0
  131. package/src/errors/Messages.js +170 -0
  132. package/src/errors/index.js +5 -0
  133. package/src/index.js +213 -0
  134. package/src/managers/ApplicationCommandManager.js +263 -0
  135. package/src/managers/ApplicationCommandPermissionsManager.js +434 -0
  136. package/src/managers/AutoModerationRuleManager.js +288 -0
  137. package/src/managers/BaseGuildEmojiManager.js +80 -0
  138. package/src/managers/BaseManager.js +19 -0
  139. package/src/managers/CachedManager.js +57 -0
  140. package/src/managers/CategoryChannelChildManager.js +77 -0
  141. package/src/managers/ChannelManager.js +128 -0
  142. package/src/managers/DataManager.js +61 -0
  143. package/src/managers/GuildApplicationCommandManager.js +28 -0
  144. package/src/managers/GuildBanManager.js +204 -0
  145. package/src/managers/GuildChannelManager.js +494 -0
  146. package/src/managers/GuildEmojiManager.js +174 -0
  147. package/src/managers/GuildEmojiRoleManager.js +118 -0
  148. package/src/managers/GuildForumThreadManager.js +83 -0
  149. package/src/managers/GuildInviteManager.js +213 -0
  150. package/src/managers/GuildManager.js +283 -0
  151. package/src/managers/GuildMemberManager.js +540 -0
  152. package/src/managers/GuildMemberRoleManager.js +204 -0
  153. package/src/managers/GuildScheduledEventManager.js +297 -0
  154. package/src/managers/GuildStickerManager.js +182 -0
  155. package/src/managers/GuildTextThreadManager.js +91 -0
  156. package/src/managers/MessageManager.js +259 -0
  157. package/src/managers/PermissionOverwriteManager.js +168 -0
  158. package/src/managers/PresenceManager.js +58 -0
  159. package/src/managers/ReactionManager.js +68 -0
  160. package/src/managers/ReactionUserManager.js +77 -0
  161. package/src/managers/RoleManager.js +360 -0
  162. package/src/managers/StageInstanceManager.js +154 -0
  163. package/src/managers/ThreadManager.js +204 -0
  164. package/src/managers/ThreadMemberManager.js +182 -0
  165. package/src/managers/UserManager.js +139 -0
  166. package/src/managers/VoiceStateManager.js +37 -0
  167. package/src/sharding/Shard.js +457 -0
  168. package/src/sharding/ShardClientUtil.js +285 -0
  169. package/src/sharding/ShardingManager.js +326 -0
  170. package/src/structures/ActionRow.js +46 -0
  171. package/src/structures/ActionRowBuilder.js +35 -0
  172. package/src/structures/AnonymousGuild.js +97 -0
  173. package/src/structures/ApplicationCommand.js +606 -0
  174. package/src/structures/ApplicationRoleConnectionMetadata.js +46 -0
  175. package/src/structures/Attachment.js +140 -0
  176. package/src/structures/AttachmentBuilder.js +116 -0
  177. package/src/structures/AutoModerationActionExecution.js +116 -0
  178. package/src/structures/AutoModerationRule.js +284 -0
  179. package/src/structures/AutocompleteInteraction.js +97 -0
  180. package/src/structures/Base.js +43 -0
  181. package/src/structures/BaseChannel.js +160 -0
  182. package/src/structures/BaseGuild.js +119 -0
  183. package/src/structures/BaseGuildEmoji.js +56 -0
  184. package/src/structures/BaseGuildTextChannel.js +186 -0
  185. package/src/structures/BaseGuildVoiceChannel.js +234 -0
  186. package/src/structures/BaseInteraction.js +344 -0
  187. package/src/structures/BaseSelectMenuComponent.js +56 -0
  188. package/src/structures/ButtonBuilder.js +44 -0
  189. package/src/structures/ButtonComponent.js +65 -0
  190. package/src/structures/ButtonInteraction.js +11 -0
  191. package/src/structures/CategoryChannel.js +45 -0
  192. package/src/structures/ChannelSelectMenuBuilder.js +31 -0
  193. package/src/structures/ChannelSelectMenuComponent.js +20 -0
  194. package/src/structures/ChannelSelectMenuInteraction.js +33 -0
  195. package/src/structures/ChatInputCommandInteraction.js +41 -0
  196. package/src/structures/ClientApplication.js +193 -0
  197. package/src/structures/ClientPresence.js +82 -0
  198. package/src/structures/ClientUser.js +185 -0
  199. package/src/structures/CommandInteraction.js +224 -0
  200. package/src/structures/CommandInteractionOptionResolver.js +308 -0
  201. package/src/structures/Component.js +47 -0
  202. package/src/structures/ContextMenuCommandInteraction.js +64 -0
  203. package/src/structures/DMChannel.js +129 -0
  204. package/src/structures/DirectoryChannel.js +36 -0
  205. package/src/structures/Embed.js +220 -0
  206. package/src/structures/EmbedBuilder.js +41 -0
  207. package/src/structures/Emoji.js +108 -0
  208. package/src/structures/ForumChannel.js +264 -0
  209. package/src/structures/Guild.js +1361 -0
  210. package/src/structures/GuildAuditLogs.js +91 -0
  211. package/src/structures/GuildAuditLogsEntry.js +527 -0
  212. package/src/structures/GuildBan.js +59 -0
  213. package/src/structures/GuildChannel.js +457 -0
  214. package/src/structures/GuildEmoji.js +148 -0
  215. package/src/structures/GuildMember.js +518 -0
  216. package/src/structures/GuildPreview.js +193 -0
  217. package/src/structures/GuildPreviewEmoji.js +27 -0
  218. package/src/structures/GuildScheduledEvent.js +439 -0
  219. package/src/structures/GuildTemplate.js +241 -0
  220. package/src/structures/Integration.js +220 -0
  221. package/src/structures/IntegrationApplication.js +85 -0
  222. package/src/structures/InteractionCollector.js +263 -0
  223. package/src/structures/InteractionResponse.js +102 -0
  224. package/src/structures/InteractionWebhook.js +59 -0
  225. package/src/structures/Invite.js +322 -0
  226. package/src/structures/InviteGuild.js +22 -0
  227. package/src/structures/InviteStageInstance.js +87 -0
  228. package/src/structures/MentionableSelectMenuBuilder.js +32 -0
  229. package/src/structures/MentionableSelectMenuComponent.js +11 -0
  230. package/src/structures/MentionableSelectMenuInteraction.js +71 -0
  231. package/src/structures/Message.js +997 -0
  232. package/src/structures/MessageCollector.js +146 -0
  233. package/src/structures/MessageComponentInteraction.js +107 -0
  234. package/src/structures/MessageContextMenuCommandInteraction.js +20 -0
  235. package/src/structures/MessageMentions.js +297 -0
  236. package/src/structures/MessagePayload.js +299 -0
  237. package/src/structures/MessageReaction.js +142 -0
  238. package/src/structures/ModalBuilder.js +34 -0
  239. package/src/structures/ModalSubmitFields.js +55 -0
  240. package/src/structures/ModalSubmitInteraction.js +121 -0
  241. package/src/structures/NewsChannel.js +32 -0
  242. package/src/structures/OAuth2Guild.js +28 -0
  243. package/src/structures/PartialGroupDMChannel.js +60 -0
  244. package/src/structures/PermissionOverwrites.js +196 -0
  245. package/src/structures/Presence.js +372 -0
  246. package/src/structures/ReactionCollector.js +229 -0
  247. package/src/structures/ReactionEmoji.js +31 -0
  248. package/src/structures/Role.js +458 -0
  249. package/src/structures/RoleSelectMenuBuilder.js +31 -0
  250. package/src/structures/RoleSelectMenuComponent.js +11 -0
  251. package/src/structures/RoleSelectMenuInteraction.js +33 -0
  252. package/src/structures/SelectMenuBuilder.js +26 -0
  253. package/src/structures/SelectMenuComponent.js +26 -0
  254. package/src/structures/SelectMenuInteraction.js +26 -0
  255. package/src/structures/SelectMenuOptionBuilder.js +26 -0
  256. package/src/structures/StageChannel.js +112 -0
  257. package/src/structures/StageInstance.js +167 -0
  258. package/src/structures/Sticker.js +272 -0
  259. package/src/structures/StickerPack.js +95 -0
  260. package/src/structures/StringSelectMenuBuilder.js +79 -0
  261. package/src/structures/StringSelectMenuComponent.js +20 -0
  262. package/src/structures/StringSelectMenuInteraction.js +21 -0
  263. package/src/structures/StringSelectMenuOptionBuilder.js +49 -0
  264. package/src/structures/Team.js +117 -0
  265. package/src/structures/TeamMember.js +70 -0
  266. package/src/structures/TextChannel.js +33 -0
  267. package/src/structures/TextInputBuilder.js +31 -0
  268. package/src/structures/TextInputComponent.js +29 -0
  269. package/src/structures/ThreadChannel.js +606 -0
  270. package/src/structures/ThreadMember.js +113 -0
  271. package/src/structures/Typing.js +74 -0
  272. package/src/structures/User.js +331 -0
  273. package/src/structures/UserContextMenuCommandInteraction.js +29 -0
  274. package/src/structures/UserSelectMenuBuilder.js +31 -0
  275. package/src/structures/UserSelectMenuComponent.js +11 -0
  276. package/src/structures/UserSelectMenuInteraction.js +51 -0
  277. package/src/structures/VoiceChannel.js +96 -0
  278. package/src/structures/VoiceRegion.js +46 -0
  279. package/src/structures/VoiceState.js +303 -0
  280. package/src/structures/Webhook.js +481 -0
  281. package/src/structures/WelcomeChannel.js +60 -0
  282. package/src/structures/WelcomeScreen.js +49 -0
  283. package/src/structures/Widget.js +88 -0
  284. package/src/structures/WidgetMember.js +99 -0
  285. package/src/structures/interfaces/Application.js +108 -0
  286. package/src/structures/interfaces/Collector.js +335 -0
  287. package/src/structures/interfaces/InteractionResponses.js +320 -0
  288. package/src/structures/interfaces/TextBasedChannel.js +413 -0
  289. package/src/util/APITypes.js +456 -0
  290. package/src/util/ActivityFlagsBitField.js +26 -0
  291. package/src/util/ApplicationFlagsBitField.js +26 -0
  292. package/src/util/BitField.js +176 -0
  293. package/src/util/ChannelFlagsBitField.js +41 -0
  294. package/src/util/Channels.js +150 -0
  295. package/src/util/Colors.js +73 -0
  296. package/src/util/Components.js +152 -0
  297. package/src/util/Constants.js +230 -0
  298. package/src/util/DataResolver.js +140 -0
  299. package/src/util/Enums.js +13 -0
  300. package/src/util/Events.js +160 -0
  301. package/src/util/Formatters.js +413 -0
  302. package/src/util/GuildMemberFlagsBitField.js +41 -0
  303. package/src/util/IntentsBitField.js +34 -0
  304. package/src/util/LimitedCollection.js +68 -0
  305. package/src/util/MessageFlagsBitField.js +32 -0
  306. package/src/util/Options.js +216 -0
  307. package/src/util/Partials.js +44 -0
  308. package/src/util/PermissionsBitField.js +104 -0
  309. package/src/util/ShardEvents.js +27 -0
  310. package/src/util/Status.js +33 -0
  311. package/src/util/Sweepers.js +467 -0
  312. package/src/util/SystemChannelFlagsBitField.js +43 -0
  313. package/src/util/ThreadMemberFlagsBitField.js +31 -0
  314. package/src/util/Transformers.js +36 -0
  315. package/src/util/UserFlagsBitField.js +32 -0
  316. package/src/util/Util.js +394 -0
  317. package/src/util/WebSocketShardEvents.js +25 -0
@@ -0,0 +1,79 @@
1
+ 'use strict';
2
+
3
+ const { SelectMenuBuilder: BuildersSelectMenu, normalizeArray } = require('@discordjs/builders');
4
+ const { isJSONEncodable } = require('@discordjs/util');
5
+ const { toSnakeCase } = require('../util/Transformers');
6
+ const { resolvePartialEmoji } = require('../util/Util');
7
+
8
+ /**
9
+ * Class used to build select menu components to be sent through the API
10
+ * @extends {BuildersSelectMenu}
11
+ */
12
+ class StringSelectMenuBuilder extends BuildersSelectMenu {
13
+ constructor({ options, ...data } = {}) {
14
+ super(
15
+ toSnakeCase({
16
+ ...data,
17
+ options: options?.map(({ emoji, ...option }) => ({
18
+ ...option,
19
+ emoji: emoji && typeof emoji === 'string' ? resolvePartialEmoji(emoji) : emoji,
20
+ })),
21
+ }),
22
+ );
23
+ }
24
+
25
+ /**
26
+ * Normalizes a select menu option emoji
27
+ * @param {SelectMenuOptionData|APISelectMenuOption} selectMenuOption The option to normalize
28
+ * @returns {SelectMenuOptionBuilder|APISelectMenuOption}
29
+ * @private
30
+ */
31
+ static normalizeEmoji(selectMenuOption) {
32
+ if (isJSONEncodable(selectMenuOption)) {
33
+ return selectMenuOption;
34
+ }
35
+
36
+ const { emoji, ...option } = selectMenuOption;
37
+ return {
38
+ ...option,
39
+ emoji: typeof emoji === 'string' ? resolvePartialEmoji(emoji) : emoji,
40
+ };
41
+ }
42
+
43
+ /**
44
+ * Adds options to this select menu
45
+ * @param {RestOrArray<APISelectMenuOption>} options The options to add to this select menu
46
+ * @returns {StringSelectMenuBuilder}
47
+ */
48
+ addOptions(...options) {
49
+ return super.addOptions(normalizeArray(options).map(option => StringSelectMenuBuilder.normalizeEmoji(option)));
50
+ }
51
+
52
+ /**
53
+ * Sets the options on this select menu
54
+ * @param {RestOrArray<APISelectMenuOption>} options The options to set on this select menu
55
+ * @returns {StringSelectMenuBuilder}
56
+ */
57
+ setOptions(...options) {
58
+ return super.setOptions(normalizeArray(options).map(option => StringSelectMenuBuilder.normalizeEmoji(option)));
59
+ }
60
+
61
+ /**
62
+ * Creates a new select menu builder from json data
63
+ * @param {StringSelectMenuBuilder|StringSelectMenuComponent|APIStringSelectComponent} other The other data
64
+ * @returns {StringSelectMenuBuilder}
65
+ */
66
+ static from(other) {
67
+ if (isJSONEncodable(other)) {
68
+ return new this(other.toJSON());
69
+ }
70
+ return new this(other);
71
+ }
72
+ }
73
+
74
+ module.exports = StringSelectMenuBuilder;
75
+
76
+ /**
77
+ * @external BuildersSelectMenu
78
+ * @see {@link https://discord.js.org/docs/packages/builders/stable/StringSelectMenuBuilder:Class}
79
+ */
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ const BaseSelectMenuComponent = require('./BaseSelectMenuComponent');
4
+
5
+ /**
6
+ * Represents a string select menu component
7
+ * @extends {BaseSelectMenuComponent}
8
+ */
9
+ class StringSelectMenuComponent extends BaseSelectMenuComponent {
10
+ /**
11
+ * The options in this select menu
12
+ * @type {APISelectMenuOption[]}
13
+ * @readonly
14
+ */
15
+ get options() {
16
+ return this.data.options;
17
+ }
18
+ }
19
+
20
+ module.exports = StringSelectMenuComponent;
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ const MessageComponentInteraction = require('./MessageComponentInteraction');
4
+
5
+ /**
6
+ * Represents a {@link ComponentType.StringSelect} select menu interaction.
7
+ * @extends {MessageComponentInteraction}
8
+ */
9
+ class StringSelectMenuInteraction extends MessageComponentInteraction {
10
+ constructor(client, data) {
11
+ super(client, data);
12
+
13
+ /**
14
+ * The values selected
15
+ * @type {string[]}
16
+ */
17
+ this.values = data.data.values ?? [];
18
+ }
19
+ }
20
+
21
+ module.exports = StringSelectMenuInteraction;
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ const { SelectMenuOptionBuilder: BuildersSelectMenuOption } = require('@discordjs/builders');
4
+ const { isJSONEncodable } = require('@discordjs/util');
5
+ const { toSnakeCase } = require('../util/Transformers');
6
+ const { resolvePartialEmoji } = require('../util/Util');
7
+
8
+ /**
9
+ * Represents a select menu option builder.
10
+ * @extends {BuildersSelectMenuOption}
11
+ */
12
+ class StringSelectMenuOptionBuilder extends BuildersSelectMenuOption {
13
+ constructor({ emoji, ...data } = {}) {
14
+ super(
15
+ toSnakeCase({
16
+ ...data,
17
+ emoji: emoji && typeof emoji === 'string' ? resolvePartialEmoji(emoji) : emoji,
18
+ }),
19
+ );
20
+ }
21
+
22
+ /**
23
+ * Sets the emoji to display on this option
24
+ * @param {ComponentEmojiResolvable} emoji The emoji to display on this option
25
+ * @returns {StringSelectMenuOptionBuilder}
26
+ */
27
+ setEmoji(emoji) {
28
+ if (typeof emoji === 'string') {
29
+ return super.setEmoji(resolvePartialEmoji(emoji));
30
+ }
31
+ return super.setEmoji(emoji);
32
+ }
33
+
34
+ /**
35
+ * Creates a new select menu option builder from JSON data
36
+ * @param {StringSelectMenuOptionBuilder|APISelectMenuOption} other The other data
37
+ * @returns {StringSelectMenuOptionBuilder}
38
+ */
39
+ static from(other) {
40
+ return new this(isJSONEncodable(other) ? other.toJSON() : other);
41
+ }
42
+ }
43
+
44
+ module.exports = StringSelectMenuOptionBuilder;
45
+
46
+ /**
47
+ * @external BuildersSelectMenuOption
48
+ * @see {@link https://discord.js.org/docs/packages/builders/stable/SelectMenuOptionBuilder:Class}
49
+ */
@@ -0,0 +1,117 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const { DiscordSnowflake } = require('@sapphire/snowflake');
5
+ const Base = require('./Base');
6
+ const TeamMember = require('./TeamMember');
7
+
8
+ /**
9
+ * Represents a Client OAuth2 Application Team.
10
+ * @extends {Base}
11
+ */
12
+ class Team extends Base {
13
+ constructor(client, data) {
14
+ super(client);
15
+ this._patch(data);
16
+ }
17
+
18
+ _patch(data) {
19
+ /**
20
+ * The Team's id
21
+ * @type {Snowflake}
22
+ */
23
+ this.id = data.id;
24
+
25
+ if ('name' in data) {
26
+ /**
27
+ * The name of the Team
28
+ * @type {string}
29
+ */
30
+ this.name = data.name;
31
+ }
32
+
33
+ if ('icon' in data) {
34
+ /**
35
+ * The Team's icon hash
36
+ * @type {?string}
37
+ */
38
+ this.icon = data.icon;
39
+ } else {
40
+ this.icon ??= null;
41
+ }
42
+
43
+ if ('owner_user_id' in data) {
44
+ /**
45
+ * The Team's owner id
46
+ * @type {?Snowflake}
47
+ */
48
+ this.ownerId = data.owner_user_id;
49
+ } else {
50
+ this.ownerId ??= null;
51
+ }
52
+ /**
53
+ * The Team's members
54
+ * @type {Collection<Snowflake, TeamMember>}
55
+ */
56
+ this.members = new Collection();
57
+
58
+ for (const memberData of data.members) {
59
+ const member = new TeamMember(this, memberData);
60
+ this.members.set(member.id, member);
61
+ }
62
+ }
63
+
64
+ /**
65
+ * The owner of this team
66
+ * @type {?TeamMember}
67
+ * @readonly
68
+ */
69
+ get owner() {
70
+ return this.members.get(this.ownerId) ?? null;
71
+ }
72
+
73
+ /**
74
+ * The timestamp the team was created at
75
+ * @type {number}
76
+ * @readonly
77
+ */
78
+ get createdTimestamp() {
79
+ return DiscordSnowflake.timestampFrom(this.id);
80
+ }
81
+
82
+ /**
83
+ * The time the team was created at
84
+ * @type {Date}
85
+ * @readonly
86
+ */
87
+ get createdAt() {
88
+ return new Date(this.createdTimestamp);
89
+ }
90
+
91
+ /**
92
+ * A link to the team's icon.
93
+ * @param {ImageURLOptions} [options={}] Options for the image URL
94
+ * @returns {?string}
95
+ */
96
+ iconURL(options = {}) {
97
+ return this.icon && this.client.rest.cdn.teamIcon(this.id, this.icon, options);
98
+ }
99
+
100
+ /**
101
+ * When concatenated with a string, this automatically returns the Team's name instead of the
102
+ * Team object.
103
+ * @returns {string}
104
+ * @example
105
+ * // Logs: Team name: My Team
106
+ * console.log(`Team name: ${team}`);
107
+ */
108
+ toString() {
109
+ return this.name;
110
+ }
111
+
112
+ toJSON() {
113
+ return super.toJSON({ createdTimestamp: true });
114
+ }
115
+ }
116
+
117
+ module.exports = Team;
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+
3
+ const Base = require('./Base');
4
+
5
+ /**
6
+ * Represents a Client OAuth2 Application Team Member.
7
+ * @extends {Base}
8
+ */
9
+ class TeamMember extends Base {
10
+ constructor(team, data) {
11
+ super(team.client);
12
+
13
+ /**
14
+ * The Team this member is part of
15
+ * @type {Team}
16
+ */
17
+ this.team = team;
18
+
19
+ this._patch(data);
20
+ }
21
+
22
+ _patch(data) {
23
+ if ('permissions' in data) {
24
+ /**
25
+ * The permissions this Team Member has with regard to the team
26
+ * @type {string[]}
27
+ */
28
+ this.permissions = data.permissions;
29
+ }
30
+
31
+ if ('membership_state' in data) {
32
+ /**
33
+ * The permissions this Team Member has with regard to the team
34
+ * @type {TeamMemberMembershipState}
35
+ */
36
+ this.membershipState = data.membership_state;
37
+ }
38
+
39
+ if ('user' in data) {
40
+ /**
41
+ * The user for this Team Member
42
+ * @type {User}
43
+ */
44
+ this.user = this.client.users._add(data.user);
45
+ }
46
+ }
47
+
48
+ /**
49
+ * The Team Member's id
50
+ * @type {Snowflake}
51
+ * @readonly
52
+ */
53
+ get id() {
54
+ return this.user.id;
55
+ }
56
+
57
+ /**
58
+ * When concatenated with a string, this automatically returns the team member's mention instead of the
59
+ * TeamMember object.
60
+ * @returns {string}
61
+ * @example
62
+ * // Logs: Team Member's mention: <@123456789012345678>
63
+ * console.log(`Team Member's mention: ${teamMember}`);
64
+ */
65
+ toString() {
66
+ return this.user.toString();
67
+ }
68
+ }
69
+
70
+ module.exports = TeamMember;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ const BaseGuildTextChannel = require('./BaseGuildTextChannel');
4
+
5
+ /**
6
+ * Represents a guild text channel on Discord.
7
+ * @extends {BaseGuildTextChannel}
8
+ */
9
+ class TextChannel extends BaseGuildTextChannel {
10
+ _patch(data) {
11
+ super._patch(data);
12
+
13
+ if ('rate_limit_per_user' in data) {
14
+ /**
15
+ * The rate limit per user (slowmode) for this channel in seconds
16
+ * @type {number}
17
+ */
18
+ this.rateLimitPerUser = data.rate_limit_per_user;
19
+ }
20
+ }
21
+
22
+ /**
23
+ * Sets the rate limit per user (slowmode) for this channel.
24
+ * @param {number} rateLimitPerUser The new rate limit in seconds
25
+ * @param {string} [reason] Reason for changing the channel's rate limit
26
+ * @returns {Promise<TextChannel>}
27
+ */
28
+ setRateLimitPerUser(rateLimitPerUser, reason) {
29
+ return this.edit({ rateLimitPerUser, reason });
30
+ }
31
+ }
32
+
33
+ module.exports = TextChannel;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ const { TextInputBuilder: BuildersTextInput } = require('@discordjs/builders');
4
+ const { isJSONEncodable } = require('@discordjs/util');
5
+ const { toSnakeCase } = require('../util/Transformers');
6
+
7
+ /**
8
+ * Represents a text input builder.
9
+ * @extends {BuildersTextInput}
10
+ */
11
+ class TextInputBuilder extends BuildersTextInput {
12
+ constructor(data) {
13
+ super(toSnakeCase(data));
14
+ }
15
+
16
+ /**
17
+ * Creates a new text input builder from JSON data
18
+ * @param {TextInputBuilder|TextInputComponent|APITextInputComponent} other The other data
19
+ * @returns {TextInputBuilder}
20
+ */
21
+ static from(other) {
22
+ return new this(isJSONEncodable(other) ? other.toJSON() : other);
23
+ }
24
+ }
25
+
26
+ module.exports = TextInputBuilder;
27
+
28
+ /**
29
+ * @external BuildersTextInput
30
+ * @see {@link https://discord.js.org/docs/packages/builders/stable/TextInputBuilder:Class}
31
+ */
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ const Component = require('./Component');
4
+
5
+ /**
6
+ * Represents a text input component.
7
+ * @extends {Component}
8
+ */
9
+ class TextInputComponent extends Component {
10
+ /**
11
+ * The custom id of this text input
12
+ * @type {string}
13
+ * @readonly
14
+ */
15
+ get customId() {
16
+ return this.data.custom_id;
17
+ }
18
+
19
+ /**
20
+ * The value for this text input
21
+ * @type {string}
22
+ * @readonly
23
+ */
24
+ get value() {
25
+ return this.data.value;
26
+ }
27
+ }
28
+
29
+ module.exports = TextInputComponent;