@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,170 @@
1
+ 'use strict';
2
+
3
+ const DjsErrorCodes = require('./ErrorCodes');
4
+
5
+ const Messages = {
6
+ [DjsErrorCodes.ClientInvalidOption]: (prop, must) => `The ${prop} option must be ${must}`,
7
+ [DjsErrorCodes.ClientInvalidProvidedShards]: 'None of the provided shards were valid.',
8
+ [DjsErrorCodes.ClientMissingIntents]: 'Valid intents must be provided for the Client.',
9
+ [DjsErrorCodes.ClientNotReady]: action => `The client needs to be logged in to ${action}.`,
10
+
11
+ [DjsErrorCodes.TokenInvalid]: 'An invalid token was provided.',
12
+ [DjsErrorCodes.TokenMissing]: 'Request to use token, but token was unavailable to the client.',
13
+ [DjsErrorCodes.ApplicationCommandPermissionsTokenMissing]:
14
+ 'Editing application command permissions requires an OAuth2 bearer token, but none was provided.',
15
+
16
+ [DjsErrorCodes.WSCloseRequested]: 'WebSocket closed due to user request.',
17
+ [DjsErrorCodes.WSConnectionExists]: 'There is already an existing WebSocket connection.',
18
+ [DjsErrorCodes.WSNotOpen]: (data = 'data') => `WebSocket not open to send ${data}`,
19
+ [DjsErrorCodes.ManagerDestroyed]: 'Manager was destroyed.',
20
+
21
+ [DjsErrorCodes.BitFieldInvalid]: bit => `Invalid bitfield flag or number: ${bit}.`,
22
+
23
+ [DjsErrorCodes.ShardingInvalid]: 'Invalid shard settings were provided.',
24
+ [DjsErrorCodes.ShardingRequired]: 'This session would have handled too many guilds - Sharding is required.',
25
+ [DjsErrorCodes.InvalidIntents]: 'Invalid intent provided for WebSocket intents.',
26
+ [DjsErrorCodes.DisallowedIntents]: 'Privileged intent provided is not enabled or whitelisted.',
27
+ [DjsErrorCodes.ShardingNoShards]: 'No shards have been spawned.',
28
+ [DjsErrorCodes.ShardingInProcess]: 'Shards are still being spawned.',
29
+ [DjsErrorCodes.ShardingInvalidEvalBroadcast]: 'Script to evaluate must be a function',
30
+ [DjsErrorCodes.ShardingShardNotFound]: id => `Shard ${id} could not be found.`,
31
+ [DjsErrorCodes.ShardingAlreadySpawned]: count => `Already spawned ${count} shards.`,
32
+ [DjsErrorCodes.ShardingProcessExists]: id => `Shard ${id} already has an active process.`,
33
+ [DjsErrorCodes.ShardingWorkerExists]: id => `Shard ${id} already has an active worker.`,
34
+ [DjsErrorCodes.ShardingReadyTimeout]: id => `Shard ${id}'s Client took too long to become ready.`,
35
+ [DjsErrorCodes.ShardingReadyDisconnected]: id => `Shard ${id}'s Client disconnected before becoming ready.`,
36
+ [DjsErrorCodes.ShardingReadyDied]: id => `Shard ${id}'s process exited before its Client became ready.`,
37
+ [DjsErrorCodes.ShardingNoChildExists]: id => `Shard ${id} has no active process or worker.`,
38
+ [DjsErrorCodes.ShardingShardMiscalculation]: (shard, guild, count) =>
39
+ `Calculated invalid shard ${shard} for guild ${guild} with ${count} shards.`,
40
+
41
+ [DjsErrorCodes.ColorRange]: 'Color must be within the range 0 - 16777215 (0xFFFFFF).',
42
+ [DjsErrorCodes.ColorConvert]: 'Unable to convert color to a number.',
43
+
44
+ [DjsErrorCodes.InviteOptionsMissingChannel]:
45
+ 'A valid guild channel must be provided when GuildScheduledEvent is EXTERNAL.',
46
+
47
+ [DjsErrorCodes.ButtonLabel]: 'MessageButton label must be a string',
48
+ [DjsErrorCodes.ButtonURL]: 'MessageButton URL must be a string',
49
+ [DjsErrorCodes.ButtonCustomId]: 'MessageButton customId must be a string',
50
+
51
+ [DjsErrorCodes.SelectMenuCustomId]: 'MessageSelectMenu customId must be a string',
52
+ [DjsErrorCodes.SelectMenuPlaceholder]: 'MessageSelectMenu placeholder must be a string',
53
+ [DjsErrorCodes.SelectOptionLabel]: 'MessageSelectOption label must be a string',
54
+ [DjsErrorCodes.SelectOptionValue]: 'MessageSelectOption value must be a string',
55
+ [DjsErrorCodes.SelectOptionDescription]: 'MessageSelectOption description must be a string',
56
+
57
+ [DjsErrorCodes.InteractionCollectorError]: reason =>
58
+ `Collector received no interactions before ending with reason: ${reason}`,
59
+
60
+ [DjsErrorCodes.FileNotFound]: file => `File could not be found: ${file}`,
61
+
62
+ [DjsErrorCodes.UserBannerNotFetched]: "You must fetch this user's banner before trying to generate its URL!",
63
+ [DjsErrorCodes.UserNoDMChannel]: 'No DM Channel exists!',
64
+
65
+ [DjsErrorCodes.VoiceNotStageChannel]: 'You are only allowed to do this in stage channels.',
66
+
67
+ [DjsErrorCodes.VoiceStateNotOwn]:
68
+ 'You cannot self-deafen/mute/request to speak on VoiceStates that do not belong to the ClientUser.',
69
+ [DjsErrorCodes.VoiceStateInvalidType]: name => `${name} must be a boolean.`,
70
+
71
+ [DjsErrorCodes.ReqResourceType]: 'The resource must be a string, Buffer or a valid file stream.',
72
+
73
+ [DjsErrorCodes.ImageFormat]: format => `Invalid image format: ${format}`,
74
+ [DjsErrorCodes.ImageSize]: size => `Invalid image size: ${size}`,
75
+
76
+ [DjsErrorCodes.MessageBulkDeleteType]: 'The messages must be an Array, Collection, or number.',
77
+ [DjsErrorCodes.MessageNonceType]: 'Message nonce must be an integer or a string.',
78
+ [DjsErrorCodes.MessageContentType]: 'Message content must be a string.',
79
+
80
+ [DjsErrorCodes.SplitMaxLen]: 'Chunk exceeds the max length and contains no split characters.',
81
+
82
+ [DjsErrorCodes.BanResolveId]: (ban = false) => `Couldn't resolve the user id to ${ban ? 'ban' : 'unban'}.`,
83
+ [DjsErrorCodes.FetchBanResolveId]: "Couldn't resolve the user id to fetch the ban.",
84
+
85
+ [DjsErrorCodes.PruneDaysType]: 'Days must be a number',
86
+
87
+ [DjsErrorCodes.GuildChannelResolve]: 'Could not resolve channel to a guild channel.',
88
+ [DjsErrorCodes.GuildVoiceChannelResolve]: 'Could not resolve channel to a guild voice channel.',
89
+ [DjsErrorCodes.GuildChannelOrphan]: 'Could not find a parent to this guild channel.',
90
+ [DjsErrorCodes.GuildChannelUnowned]: "The fetched channel does not belong to this manager's guild.",
91
+ [DjsErrorCodes.GuildOwned]: 'Guild is owned by the client.',
92
+ [DjsErrorCodes.GuildMembersTimeout]: "Members didn't arrive in time.",
93
+ [DjsErrorCodes.GuildUncachedMe]: 'The client user as a member of this guild is uncached.',
94
+ [DjsErrorCodes.ChannelNotCached]: 'Could not find the channel where this message came from in the cache!',
95
+ [DjsErrorCodes.StageChannelResolve]: 'Could not resolve channel to a stage channel.',
96
+ [DjsErrorCodes.GuildScheduledEventResolve]: 'Could not resolve the guild scheduled event.',
97
+ [DjsErrorCodes.FetchOwnerId]: "Couldn't resolve the guild ownerId to fetch the member.",
98
+
99
+ [DjsErrorCodes.InvalidType]: (name, expected, an = false) => `Supplied ${name} is not a${an ? 'n' : ''} ${expected}.`,
100
+ [DjsErrorCodes.InvalidElement]: (type, name, elem) => `Supplied ${type} ${name} includes an invalid element: ${elem}`,
101
+
102
+ [DjsErrorCodes.MessageThreadParent]: 'The message was not sent in a guild text or news channel',
103
+ [DjsErrorCodes.MessageExistingThread]: 'The message already has a thread',
104
+ [DjsErrorCodes.ThreadInvitableType]: type => `Invitable cannot be edited on ${type}`,
105
+
106
+ [DjsErrorCodes.WebhookMessage]: 'The message was not sent by a webhook.',
107
+ [DjsErrorCodes.WebhookTokenUnavailable]: 'This action requires a webhook token, but none is available.',
108
+ [DjsErrorCodes.WebhookURLInvalid]: 'The provided webhook URL is not valid.',
109
+ [DjsErrorCodes.WebhookApplication]: 'This message webhook belongs to an application and cannot be fetched.',
110
+ [DjsErrorCodes.MessageReferenceMissing]: 'The message does not reference another message',
111
+
112
+ [DjsErrorCodes.EmojiType]: 'Emoji must be a string or GuildEmoji/ReactionEmoji',
113
+ [DjsErrorCodes.EmojiManaged]: 'Emoji is managed and has no Author.',
114
+ [DjsErrorCodes.MissingManageGuildExpressionsPermission]: guild =>
115
+ `Client must have Manage Guild Expressions permission in guild ${guild} to see emoji authors.`,
116
+ [DjsErrorCodes.MissingManageEmojisAndStickersPermission]: guild =>
117
+ `Client must have Manage Emojis and Stickers permission in guild ${guild} to see emoji authors.`,
118
+
119
+ [DjsErrorCodes.NotGuildSticker]: 'Sticker is a standard (non-guild) sticker and has no author.',
120
+
121
+ [DjsErrorCodes.ReactionResolveUser]: "Couldn't resolve the user id to remove from the reaction.",
122
+
123
+ [DjsErrorCodes.VanityURL]: 'This guild does not have the vanity URL feature enabled.',
124
+
125
+ [DjsErrorCodes.InviteResolveCode]: 'Could not resolve the code to fetch the invite.',
126
+
127
+ [DjsErrorCodes.InviteNotFound]: 'Could not find the requested invite.',
128
+
129
+ [DjsErrorCodes.DeleteGroupDMChannel]: "Bots don't have access to Group DM Channels and cannot delete them",
130
+ [DjsErrorCodes.FetchGroupDMChannel]: "Bots don't have access to Group DM Channels and cannot fetch them",
131
+
132
+ [DjsErrorCodes.MemberFetchNonceLength]: 'Nonce length must not exceed 32 characters.',
133
+
134
+ [DjsErrorCodes.GlobalCommandPermissions]:
135
+ 'Permissions for global commands may only be fetched or modified by providing a GuildResolvable ' +
136
+ "or from a guild's application command manager.",
137
+ [DjsErrorCodes.GuildUncachedEntityResolve]: type =>
138
+ `Cannot resolve ${type} from an arbitrary guild, provide an id instead`,
139
+
140
+ [DjsErrorCodes.InteractionAlreadyReplied]: 'The reply to this interaction has already been sent or deferred.',
141
+ [DjsErrorCodes.InteractionNotReplied]: 'The reply to this interaction has not been sent or deferred.',
142
+ [DjsErrorCodes.InteractionEphemeralReplied]: 'Ephemeral responses cannot be deleted.',
143
+
144
+ [DjsErrorCodes.CommandInteractionOptionNotFound]: name => `Required option "${name}" not found.`,
145
+ [DjsErrorCodes.CommandInteractionOptionType]: (name, type, expected) =>
146
+ `Option "${name}" is of type: ${type}; expected ${expected}.`,
147
+ [DjsErrorCodes.CommandInteractionOptionEmpty]: (name, type) =>
148
+ `Required option "${name}" is of type: ${type}; expected a non-empty value.`,
149
+ [DjsErrorCodes.CommandInteractionOptionNoSubcommand]: 'No subcommand specified for interaction.',
150
+ [DjsErrorCodes.CommandInteractionOptionNoSubcommandGroup]: 'No subcommand group specified for interaction.',
151
+ [DjsErrorCodes.CommandInteractionOptionInvalidChannelType]: (name, type, expected) =>
152
+ `The type of channel of the option "${name}" is: ${type}; expected ${expected}.`,
153
+ [DjsErrorCodes.AutocompleteInteractionOptionNoFocusedOption]: 'No focused option for autocomplete interaction.',
154
+
155
+ [DjsErrorCodes.ModalSubmitInteractionFieldNotFound]: customId =>
156
+ `Required field with custom id "${customId}" not found.`,
157
+ [DjsErrorCodes.ModalSubmitInteractionFieldType]: (customId, type, expected) =>
158
+ `Field with custom id "${customId}" is of type: ${type}; expected ${expected}.`,
159
+
160
+ [DjsErrorCodes.InvalidMissingScopes]: 'At least one valid scope must be provided for the invite',
161
+ [DjsErrorCodes.InvalidScopesWithPermissions]: 'Permissions cannot be set without the bot scope.',
162
+
163
+ [DjsErrorCodes.NotImplemented]: (what, name) => `Method ${what} not implemented on ${name}.`,
164
+
165
+ [DjsErrorCodes.SweepFilterReturn]: 'The return value of the sweepFilter function was not false or a Function',
166
+
167
+ [DjsErrorCodes.GuildForumMessageRequired]: 'You must provide a message to create a guild forum thread',
168
+ };
169
+
170
+ module.exports = Messages;
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = require('./DJSError');
4
+ module.exports.ErrorCodes = require('./ErrorCodes');
5
+ module.exports.Messages = require('./Messages');
package/src/index.js ADDED
@@ -0,0 +1,213 @@
1
+ 'use strict';
2
+
3
+ const { __exportStar } = require('tslib');
4
+
5
+ // "Root" classes (starting points)
6
+ exports.BaseClient = require('./client/BaseClient');
7
+ exports.Client = require('./client/Client');
8
+ exports.Shard = require('./sharding/Shard');
9
+ exports.ShardClientUtil = require('./sharding/ShardClientUtil');
10
+ exports.ShardingManager = require('./sharding/ShardingManager');
11
+ exports.WebhookClient = require('./client/WebhookClient');
12
+
13
+ // Errors
14
+ exports.DiscordjsError = require('./errors/DJSError').DiscordjsError;
15
+ exports.DiscordjsTypeError = require('./errors/DJSError').DiscordjsTypeError;
16
+ exports.DiscordjsRangeError = require('./errors/DJSError').DiscordjsRangeError;
17
+ exports.DiscordjsErrorCodes = require('./errors/ErrorCodes');
18
+
19
+ // Utilities
20
+ exports.ActivityFlagsBitField = require('./util/ActivityFlagsBitField');
21
+ exports.ApplicationFlagsBitField = require('./util/ApplicationFlagsBitField');
22
+ exports.BaseManager = require('./managers/BaseManager');
23
+ exports.BitField = require('./util/BitField');
24
+ exports.ChannelFlagsBitField = require('./util/ChannelFlagsBitField');
25
+ exports.Collection = require('@discordjs/collection').Collection;
26
+ exports.Constants = require('./util/Constants');
27
+ exports.Colors = require('./util/Colors');
28
+ exports.DataResolver = require('./util/DataResolver');
29
+ exports.Events = require('./util/Events');
30
+ exports.Formatters = require('./util/Formatters');
31
+ exports.GuildMemberFlagsBitField = require('./util/GuildMemberFlagsBitField').GuildMemberFlagsBitField;
32
+ exports.IntentsBitField = require('./util/IntentsBitField');
33
+ exports.LimitedCollection = require('./util/LimitedCollection');
34
+ exports.MessageFlagsBitField = require('./util/MessageFlagsBitField');
35
+ exports.Options = require('./util/Options');
36
+ exports.Partials = require('./util/Partials');
37
+ exports.PermissionsBitField = require('./util/PermissionsBitField');
38
+ exports.ShardEvents = require('./util/ShardEvents');
39
+ exports.Status = require('./util/Status');
40
+ exports.SnowflakeUtil = require('@sapphire/snowflake').DiscordSnowflake;
41
+ exports.Sweepers = require('./util/Sweepers');
42
+ exports.SystemChannelFlagsBitField = require('./util/SystemChannelFlagsBitField');
43
+ exports.ThreadMemberFlagsBitField = require('./util/ThreadMemberFlagsBitField');
44
+ exports.UserFlagsBitField = require('./util/UserFlagsBitField');
45
+ __exportStar(require('./util/Util.js'), exports);
46
+ exports.WebSocketShardEvents = require('./util/WebSocketShardEvents');
47
+ exports.version = require('../package.json').version;
48
+
49
+ // Managers
50
+ exports.ApplicationCommandManager = require('./managers/ApplicationCommandManager');
51
+ exports.ApplicationCommandPermissionsManager = require('./managers/ApplicationCommandPermissionsManager');
52
+ exports.AutoModerationRuleManager = require('./managers/AutoModerationRuleManager');
53
+ exports.BaseGuildEmojiManager = require('./managers/BaseGuildEmojiManager');
54
+ exports.CachedManager = require('./managers/CachedManager');
55
+ exports.ChannelManager = require('./managers/ChannelManager');
56
+ exports.ClientVoiceManager = require('./client/voice/ClientVoiceManager');
57
+ exports.DataManager = require('./managers/DataManager');
58
+ exports.GuildApplicationCommandManager = require('./managers/GuildApplicationCommandManager');
59
+ exports.GuildBanManager = require('./managers/GuildBanManager');
60
+ exports.GuildChannelManager = require('./managers/GuildChannelManager');
61
+ exports.GuildEmojiManager = require('./managers/GuildEmojiManager');
62
+ exports.GuildEmojiRoleManager = require('./managers/GuildEmojiRoleManager');
63
+ exports.GuildForumThreadManager = require('./managers/GuildForumThreadManager');
64
+ exports.GuildInviteManager = require('./managers/GuildInviteManager');
65
+ exports.GuildManager = require('./managers/GuildManager');
66
+ exports.GuildMemberManager = require('./managers/GuildMemberManager');
67
+ exports.GuildMemberRoleManager = require('./managers/GuildMemberRoleManager');
68
+ exports.GuildScheduledEventManager = require('./managers/GuildScheduledEventManager');
69
+ exports.GuildStickerManager = require('./managers/GuildStickerManager');
70
+ exports.GuildTextThreadManager = require('./managers/GuildTextThreadManager');
71
+ exports.MessageManager = require('./managers/MessageManager');
72
+ exports.PermissionOverwriteManager = require('./managers/PermissionOverwriteManager');
73
+ exports.PresenceManager = require('./managers/PresenceManager');
74
+ exports.ReactionManager = require('./managers/ReactionManager');
75
+ exports.ReactionUserManager = require('./managers/ReactionUserManager');
76
+ exports.RoleManager = require('./managers/RoleManager');
77
+ exports.StageInstanceManager = require('./managers/StageInstanceManager');
78
+ exports.ThreadManager = require('./managers/ThreadManager');
79
+ exports.ThreadMemberManager = require('./managers/ThreadMemberManager');
80
+ exports.UserManager = require('./managers/UserManager');
81
+ exports.VoiceStateManager = require('./managers/VoiceStateManager');
82
+ exports.WebSocketManager = require('./client/websocket/WebSocketManager');
83
+ exports.WebSocketShard = require('./client/websocket/WebSocketShard');
84
+
85
+ // Structures
86
+ exports.ActionRow = require('./structures/ActionRow');
87
+ exports.ActionRowBuilder = require('./structures/ActionRowBuilder');
88
+ exports.Activity = require('./structures/Presence').Activity;
89
+ exports.AnonymousGuild = require('./structures/AnonymousGuild');
90
+ exports.Application = require('./structures/interfaces/Application');
91
+ exports.ApplicationCommand = require('./structures/ApplicationCommand');
92
+ exports.ApplicationRoleConnectionMetadata =
93
+ require('./structures/ApplicationRoleConnectionMetadata').ApplicationRoleConnectionMetadata;
94
+ exports.AutocompleteInteraction = require('./structures/AutocompleteInteraction');
95
+ exports.AutoModerationActionExecution = require('./structures/AutoModerationActionExecution');
96
+ exports.AutoModerationRule = require('./structures/AutoModerationRule');
97
+ exports.Base = require('./structures/Base');
98
+ exports.BaseGuild = require('./structures/BaseGuild');
99
+ exports.BaseGuildEmoji = require('./structures/BaseGuildEmoji');
100
+ exports.BaseGuildTextChannel = require('./structures/BaseGuildTextChannel');
101
+ exports.BaseGuildVoiceChannel = require('./structures/BaseGuildVoiceChannel');
102
+ exports.ButtonBuilder = require('./structures/ButtonBuilder');
103
+ exports.ButtonComponent = require('./structures/ButtonComponent');
104
+ exports.ButtonInteraction = require('./structures/ButtonInteraction');
105
+ exports.CategoryChannel = require('./structures/CategoryChannel');
106
+ exports.BaseChannel = require('./structures/BaseChannel').BaseChannel;
107
+ exports.ChatInputCommandInteraction = require('./structures/ChatInputCommandInteraction');
108
+ exports.ClientApplication = require('./structures/ClientApplication');
109
+ exports.ClientPresence = require('./structures/ClientPresence');
110
+ exports.ClientUser = require('./structures/ClientUser');
111
+ exports.CommandInteraction = require('./structures/CommandInteraction');
112
+ exports.Collector = require('./structures/interfaces/Collector');
113
+ exports.CommandInteractionOptionResolver = require('./structures/CommandInteractionOptionResolver');
114
+ exports.Component = require('./structures/Component');
115
+ exports.ContextMenuCommandInteraction = require('./structures/ContextMenuCommandInteraction');
116
+ exports.DMChannel = require('./structures/DMChannel');
117
+ exports.Embed = require('./structures/Embed');
118
+ exports.EmbedBuilder = require('./structures/EmbedBuilder');
119
+ exports.Emoji = require('./structures/Emoji').Emoji;
120
+ exports.ForumChannel = require('./structures/ForumChannel');
121
+ exports.Guild = require('./structures/Guild').Guild;
122
+ exports.GuildAuditLogs = require('./structures/GuildAuditLogs');
123
+ exports.GuildAuditLogsEntry = require('./structures/GuildAuditLogsEntry');
124
+ exports.GuildBan = require('./structures/GuildBan');
125
+ exports.GuildChannel = require('./structures/GuildChannel');
126
+ exports.GuildEmoji = require('./structures/GuildEmoji');
127
+ exports.GuildMember = require('./structures/GuildMember').GuildMember;
128
+ exports.GuildPreview = require('./structures/GuildPreview');
129
+ exports.GuildPreviewEmoji = require('./structures/GuildPreviewEmoji');
130
+ exports.GuildScheduledEvent = require('./structures/GuildScheduledEvent').GuildScheduledEvent;
131
+ exports.GuildTemplate = require('./structures/GuildTemplate');
132
+ exports.Integration = require('./structures/Integration');
133
+ exports.IntegrationApplication = require('./structures/IntegrationApplication');
134
+ exports.BaseInteraction = require('./structures/BaseInteraction');
135
+ exports.InteractionCollector = require('./structures/InteractionCollector');
136
+ exports.InteractionResponse = require('./structures/InteractionResponse');
137
+ exports.InteractionWebhook = require('./structures/InteractionWebhook');
138
+ exports.Invite = require('./structures/Invite');
139
+ exports.InviteStageInstance = require('./structures/InviteStageInstance');
140
+ exports.InviteGuild = require('./structures/InviteGuild');
141
+ exports.Message = require('./structures/Message').Message;
142
+ exports.Attachment = require('./structures/Attachment');
143
+ exports.AttachmentBuilder = require('./structures/AttachmentBuilder');
144
+ exports.ModalBuilder = require('./structures/ModalBuilder');
145
+ exports.MessageCollector = require('./structures/MessageCollector');
146
+ exports.MessageComponentInteraction = require('./structures/MessageComponentInteraction');
147
+ exports.MessageContextMenuCommandInteraction = require('./structures/MessageContextMenuCommandInteraction');
148
+ exports.MessageMentions = require('./structures/MessageMentions');
149
+ exports.MessagePayload = require('./structures/MessagePayload');
150
+ exports.MessageReaction = require('./structures/MessageReaction');
151
+ exports.ModalSubmitInteraction = require('./structures/ModalSubmitInteraction');
152
+ exports.ModalSubmitFields = require('./structures/ModalSubmitFields');
153
+ exports.NewsChannel = require('./structures/NewsChannel');
154
+ exports.OAuth2Guild = require('./structures/OAuth2Guild');
155
+ exports.PartialGroupDMChannel = require('./structures/PartialGroupDMChannel');
156
+ exports.PermissionOverwrites = require('./structures/PermissionOverwrites');
157
+ exports.Presence = require('./structures/Presence').Presence;
158
+ exports.ReactionCollector = require('./structures/ReactionCollector');
159
+ exports.ReactionEmoji = require('./structures/ReactionEmoji');
160
+ exports.RichPresenceAssets = require('./structures/Presence').RichPresenceAssets;
161
+ exports.Role = require('./structures/Role').Role;
162
+ exports.SelectMenuBuilder = require('./structures/SelectMenuBuilder');
163
+ exports.ChannelSelectMenuBuilder = require('./structures/ChannelSelectMenuBuilder');
164
+ exports.MentionableSelectMenuBuilder = require('./structures/MentionableSelectMenuBuilder');
165
+ exports.RoleSelectMenuBuilder = require('./structures/RoleSelectMenuBuilder');
166
+ exports.StringSelectMenuBuilder = require('./structures/StringSelectMenuBuilder');
167
+ exports.UserSelectMenuBuilder = require('./structures/UserSelectMenuBuilder');
168
+ exports.BaseSelectMenuComponent = require('./structures/BaseSelectMenuComponent');
169
+ exports.SelectMenuComponent = require('./structures/SelectMenuComponent');
170
+ exports.ChannelSelectMenuComponent = require('./structures/ChannelSelectMenuComponent');
171
+ exports.MentionableSelectMenuComponent = require('./structures/MentionableSelectMenuComponent');
172
+ exports.RoleSelectMenuComponent = require('./structures/RoleSelectMenuComponent');
173
+ exports.StringSelectMenuComponent = require('./structures/StringSelectMenuComponent');
174
+ exports.UserSelectMenuComponent = require('./structures/UserSelectMenuComponent');
175
+ exports.SelectMenuInteraction = require('./structures/SelectMenuInteraction');
176
+ exports.ChannelSelectMenuInteraction = require('./structures/ChannelSelectMenuInteraction');
177
+ exports.MentionableSelectMenuInteraction = require('./structures/MentionableSelectMenuInteraction');
178
+ exports.MentionableSelectMenuInteraction = require('./structures/MentionableSelectMenuInteraction');
179
+ exports.RoleSelectMenuInteraction = require('./structures/RoleSelectMenuInteraction');
180
+ exports.StringSelectMenuInteraction = require('./structures/StringSelectMenuInteraction');
181
+ exports.UserSelectMenuInteraction = require('./structures/UserSelectMenuInteraction');
182
+ exports.SelectMenuOptionBuilder = require('./structures/SelectMenuOptionBuilder');
183
+ exports.StringSelectMenuOptionBuilder = require('./structures/StringSelectMenuOptionBuilder');
184
+ exports.StageChannel = require('./structures/StageChannel');
185
+ exports.StageInstance = require('./structures/StageInstance').StageInstance;
186
+ exports.Sticker = require('./structures/Sticker').Sticker;
187
+ exports.StickerPack = require('./structures/StickerPack');
188
+ exports.Team = require('./structures/Team');
189
+ exports.TeamMember = require('./structures/TeamMember');
190
+ exports.TextChannel = require('./structures/TextChannel');
191
+ exports.TextInputBuilder = require('./structures/TextInputBuilder');
192
+ exports.TextInputComponent = require('./structures/TextInputComponent');
193
+ exports.ThreadChannel = require('./structures/ThreadChannel');
194
+ exports.ThreadMember = require('./structures/ThreadMember');
195
+ exports.Typing = require('./structures/Typing');
196
+ exports.User = require('./structures/User');
197
+ exports.UserContextMenuCommandInteraction = require('./structures/UserContextMenuCommandInteraction');
198
+ exports.VoiceChannel = require('./structures/VoiceChannel');
199
+ exports.VoiceRegion = require('./structures/VoiceRegion');
200
+ exports.VoiceState = require('./structures/VoiceState');
201
+ exports.Webhook = require('./structures/Webhook');
202
+ exports.Widget = require('./structures/Widget');
203
+ exports.WidgetMember = require('./structures/WidgetMember');
204
+ exports.WelcomeChannel = require('./structures/WelcomeChannel');
205
+ exports.WelcomeScreen = require('./structures/WelcomeScreen');
206
+
207
+ // External
208
+ __exportStar(require('discord-api-types/v10'), exports);
209
+ __exportStar(require('@discordjs/builders'), exports);
210
+ __exportStar(require('@discordjs/formatters'), exports);
211
+ __exportStar(require('@discordjs/rest'), exports);
212
+ __exportStar(require('@discordjs/util'), exports);
213
+ __exportStar(require('@discordjs/ws'), exports);
@@ -0,0 +1,263 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const { makeURLSearchParams } = require('@discordjs/rest');
5
+ const { isJSONEncodable } = require('@discordjs/util');
6
+ const { Routes } = require('discord-api-types/v10');
7
+ const ApplicationCommandPermissionsManager = require('./ApplicationCommandPermissionsManager');
8
+ const CachedManager = require('./CachedManager');
9
+ const { DiscordjsTypeError, ErrorCodes } = require('../errors');
10
+ const ApplicationCommand = require('../structures/ApplicationCommand');
11
+ const PermissionsBitField = require('../util/PermissionsBitField');
12
+
13
+ /**
14
+ * Manages API methods for application commands and stores their cache.
15
+ * @extends {CachedManager}
16
+ */
17
+ class ApplicationCommandManager extends CachedManager {
18
+ constructor(client, iterable) {
19
+ super(client, ApplicationCommand, iterable);
20
+
21
+ /**
22
+ * The manager for permissions of arbitrary commands on arbitrary guilds
23
+ * @type {ApplicationCommandPermissionsManager}
24
+ */
25
+ this.permissions = new ApplicationCommandPermissionsManager(this);
26
+ }
27
+
28
+ /**
29
+ * The cache of this manager
30
+ * @type {Collection<Snowflake, ApplicationCommand>}
31
+ * @name ApplicationCommandManager#cache
32
+ */
33
+
34
+ _add(data, cache, guildId) {
35
+ return super._add(data, cache, { extras: [this.guild, guildId] });
36
+ }
37
+
38
+ /**
39
+ * The APIRouter path to the commands
40
+ * @param {Snowflake} [options.id] The application command's id
41
+ * @param {Snowflake} [options.guildId] The guild's id to use in the path,
42
+ * ignored when using a {@link GuildApplicationCommandManager}
43
+ * @returns {string}
44
+ * @private
45
+ */
46
+ commandPath({ id, guildId } = {}) {
47
+ if (this.guild ?? guildId) {
48
+ if (id) {
49
+ return Routes.applicationGuildCommand(this.client.application.id, this.guild?.id ?? guildId, id);
50
+ }
51
+
52
+ return Routes.applicationGuildCommands(this.client.application.id, this.guild?.id ?? guildId);
53
+ }
54
+
55
+ if (id) {
56
+ return Routes.applicationCommand(this.client.application.id, id);
57
+ }
58
+
59
+ return Routes.applicationCommands(this.client.application.id);
60
+ }
61
+
62
+ /**
63
+ * Data that resolves to give an ApplicationCommand object. This can be:
64
+ * * An ApplicationCommand object
65
+ * * A Snowflake
66
+ * @typedef {ApplicationCommand|Snowflake} ApplicationCommandResolvable
67
+ */
68
+
69
+ /**
70
+ * Data that resolves to the data of an ApplicationCommand
71
+ * @typedef {ApplicationCommandData|APIApplicationCommand} ApplicationCommandDataResolvable
72
+ */
73
+
74
+ /**
75
+ * Options used to fetch data from Discord
76
+ * @typedef {Object} BaseFetchOptions
77
+ * @property {boolean} [cache=true] Whether to cache the fetched data if it wasn't already
78
+ * @property {boolean} [force=false] Whether to skip the cache check and request the API
79
+ */
80
+
81
+ /**
82
+ * Options used to fetch Application Commands from Discord
83
+ * @typedef {BaseFetchOptions} FetchApplicationCommandOptions
84
+ * @property {Snowflake} [guildId] The guild's id to fetch commands for, for when the guild is not cached
85
+ * @property {LocaleString} [locale] The locale to use when fetching this command
86
+ * @property {boolean} [withLocalizations] Whether to fetch all localization data
87
+ */
88
+
89
+ /**
90
+ * Obtains one or multiple application commands from Discord, or the cache if it's already available.
91
+ * @param {Snowflake} [id] The application command's id
92
+ * @param {FetchApplicationCommandOptions} [options] Additional options for this fetch
93
+ * @returns {Promise<ApplicationCommand|Collection<Snowflake, ApplicationCommand>>}
94
+ * @example
95
+ * // Fetch a single command
96
+ * client.application.commands.fetch('123456789012345678')
97
+ * .then(command => console.log(`Fetched command ${command.name}`))
98
+ * .catch(console.error);
99
+ * @example
100
+ * // Fetch all commands
101
+ * guild.commands.fetch()
102
+ * .then(commands => console.log(`Fetched ${commands.size} commands`))
103
+ * .catch(console.error);
104
+ */
105
+ async fetch(id, { guildId, cache = true, force = false, locale, withLocalizations } = {}) {
106
+ if (typeof id === 'object') {
107
+ ({ guildId, cache = true, locale, withLocalizations } = id);
108
+ } else if (id) {
109
+ if (!force) {
110
+ const existing = this.cache.get(id);
111
+ if (existing) return existing;
112
+ }
113
+ const command = await this.client.rest.get(this.commandPath({ id, guildId }));
114
+ return this._add(command, cache);
115
+ }
116
+
117
+ const data = await this.client.rest.get(this.commandPath({ guildId }), {
118
+ headers: {
119
+ 'X-Discord-Locale': locale,
120
+ },
121
+ query: makeURLSearchParams({ with_localizations: withLocalizations }),
122
+ });
123
+ return data.reduce((coll, command) => coll.set(command.id, this._add(command, cache, guildId)), new Collection());
124
+ }
125
+
126
+ /**
127
+ * Creates an application command.
128
+ * @param {ApplicationCommandDataResolvable} command The command
129
+ * @param {Snowflake} [guildId] The guild's id to create this command in,
130
+ * ignored when using a {@link GuildApplicationCommandManager}
131
+ * @returns {Promise<ApplicationCommand>}
132
+ * @example
133
+ * // Create a new command
134
+ * client.application.commands.create({
135
+ * name: 'test',
136
+ * description: 'A test command',
137
+ * })
138
+ * .then(console.log)
139
+ * .catch(console.error);
140
+ */
141
+ async create(command, guildId) {
142
+ const data = await this.client.rest.post(this.commandPath({ guildId }), {
143
+ body: this.constructor.transformCommand(command),
144
+ });
145
+ return this._add(data, true, guildId);
146
+ }
147
+
148
+ /**
149
+ * Sets all the commands for this application or guild.
150
+ * @param {ApplicationCommandDataResolvable[]} commands The commands
151
+ * @param {Snowflake} [guildId] The guild's id to create the commands in,
152
+ * ignored when using a {@link GuildApplicationCommandManager}
153
+ * @returns {Promise<Collection<Snowflake, ApplicationCommand>>}
154
+ * @example
155
+ * // Set all commands to just this one
156
+ * client.application.commands.set([
157
+ * {
158
+ * name: 'test',
159
+ * description: 'A test command',
160
+ * },
161
+ * ])
162
+ * .then(console.log)
163
+ * .catch(console.error);
164
+ * @example
165
+ * // Remove all commands
166
+ * guild.commands.set([])
167
+ * .then(console.log)
168
+ * .catch(console.error);
169
+ */
170
+ async set(commands, guildId) {
171
+ const data = await this.client.rest.put(this.commandPath({ guildId }), {
172
+ body: commands.map(c => this.constructor.transformCommand(c)),
173
+ });
174
+ return data.reduce((coll, command) => coll.set(command.id, this._add(command, true, guildId)), new Collection());
175
+ }
176
+
177
+ /**
178
+ * Edits an application command.
179
+ * @param {ApplicationCommandResolvable} command The command to edit
180
+ * @param {Partial<ApplicationCommandDataResolvable>} data The data to update the command with
181
+ * @param {Snowflake} [guildId] The guild's id where the command registered,
182
+ * ignored when using a {@link GuildApplicationCommandManager}
183
+ * @returns {Promise<ApplicationCommand>}
184
+ * @example
185
+ * // Edit an existing command
186
+ * client.application.commands.edit('123456789012345678', {
187
+ * description: 'New description',
188
+ * })
189
+ * .then(console.log)
190
+ * .catch(console.error);
191
+ */
192
+ async edit(command, data, guildId) {
193
+ const id = this.resolveId(command);
194
+ if (!id) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'command', 'ApplicationCommandResolvable');
195
+
196
+ const patched = await this.client.rest.patch(this.commandPath({ id, guildId }), {
197
+ body: this.constructor.transformCommand(data),
198
+ });
199
+ return this._add(patched, true, guildId);
200
+ }
201
+
202
+ /**
203
+ * Deletes an application command.
204
+ * @param {ApplicationCommandResolvable} command The command to delete
205
+ * @param {Snowflake} [guildId] The guild's id where the command is registered,
206
+ * ignored when using a {@link GuildApplicationCommandManager}
207
+ * @returns {Promise<?ApplicationCommand>}
208
+ * @example
209
+ * // Delete a command
210
+ * guild.commands.delete('123456789012345678')
211
+ * .then(console.log)
212
+ * .catch(console.error);
213
+ */
214
+ async delete(command, guildId) {
215
+ const id = this.resolveId(command);
216
+ if (!id) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'command', 'ApplicationCommandResolvable');
217
+
218
+ await this.client.rest.delete(this.commandPath({ id, guildId }));
219
+
220
+ const cached = this.cache.get(id);
221
+ this.cache.delete(id);
222
+ return cached ?? null;
223
+ }
224
+
225
+ /**
226
+ * Transforms an {@link ApplicationCommandData} object into something that can be used with the API.
227
+ * @param {ApplicationCommandDataResolvable} command The command to transform
228
+ * @returns {APIApplicationCommand}
229
+ * @private
230
+ */
231
+ static transformCommand(command) {
232
+ if (isJSONEncodable(command)) return command.toJSON();
233
+
234
+ let default_member_permissions;
235
+
236
+ if ('default_member_permissions' in command) {
237
+ default_member_permissions = command.default_member_permissions
238
+ ? new PermissionsBitField(BigInt(command.default_member_permissions)).bitfield.toString()
239
+ : command.default_member_permissions;
240
+ }
241
+
242
+ if ('defaultMemberPermissions' in command) {
243
+ default_member_permissions =
244
+ command.defaultMemberPermissions !== null
245
+ ? new PermissionsBitField(command.defaultMemberPermissions).bitfield.toString()
246
+ : command.defaultMemberPermissions;
247
+ }
248
+
249
+ return {
250
+ name: command.name,
251
+ name_localizations: command.nameLocalizations ?? command.name_localizations,
252
+ description: command.description,
253
+ nsfw: command.nsfw,
254
+ description_localizations: command.descriptionLocalizations ?? command.description_localizations,
255
+ type: command.type,
256
+ options: command.options?.map(o => ApplicationCommand.transformOption(o)),
257
+ default_member_permissions,
258
+ dm_permission: command.dmPermission ?? command.dm_permission,
259
+ };
260
+ }
261
+ }
262
+
263
+ module.exports = ApplicationCommandManager;