discord-sb.js 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 (366) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +2 -0
  3. package/package.json +91 -0
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +86 -0
  6. package/src/client/Client.js +978 -0
  7. package/src/client/WebhookClient.js +61 -0
  8. package/src/client/actions/Action.js +116 -0
  9. package/src/client/actions/ActionsManager.js +80 -0
  10. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  11. package/src/client/actions/AutoModerationActionExecution.js +27 -0
  12. package/src/client/actions/AutoModerationRuleCreate.js +28 -0
  13. package/src/client/actions/AutoModerationRuleDelete.js +32 -0
  14. package/src/client/actions/AutoModerationRuleUpdate.js +30 -0
  15. package/src/client/actions/ChannelCreate.js +23 -0
  16. package/src/client/actions/ChannelDelete.js +39 -0
  17. package/src/client/actions/ChannelUpdate.js +43 -0
  18. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  19. package/src/client/actions/GuildBanAdd.js +20 -0
  20. package/src/client/actions/GuildBanRemove.js +25 -0
  21. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  22. package/src/client/actions/GuildDelete.js +65 -0
  23. package/src/client/actions/GuildEmojiCreate.js +20 -0
  24. package/src/client/actions/GuildEmojiDelete.js +21 -0
  25. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  26. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  27. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  28. package/src/client/actions/GuildMemberRemove.js +33 -0
  29. package/src/client/actions/GuildMemberUpdate.js +44 -0
  30. package/src/client/actions/GuildRoleCreate.js +25 -0
  31. package/src/client/actions/GuildRoleDelete.js +31 -0
  32. package/src/client/actions/GuildRoleUpdate.js +39 -0
  33. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  34. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  35. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  36. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  37. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  38. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  39. package/src/client/actions/GuildStickerCreate.js +20 -0
  40. package/src/client/actions/GuildStickerDelete.js +21 -0
  41. package/src/client/actions/GuildStickerUpdate.js +20 -0
  42. package/src/client/actions/GuildStickersUpdate.js +34 -0
  43. package/src/client/actions/GuildUpdate.js +33 -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 +50 -0
  47. package/src/client/actions/MessageDelete.js +32 -0
  48. package/src/client/actions/MessageDeleteBulk.js +46 -0
  49. package/src/client/actions/MessagePollVoteAdd.js +33 -0
  50. package/src/client/actions/MessagePollVoteRemove.js +33 -0
  51. package/src/client/actions/MessageReactionAdd.js +68 -0
  52. package/src/client/actions/MessageReactionRemove.js +50 -0
  53. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  54. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  55. package/src/client/actions/MessageUpdate.js +26 -0
  56. package/src/client/actions/PresenceUpdate.js +50 -0
  57. package/src/client/actions/StageInstanceCreate.js +28 -0
  58. package/src/client/actions/StageInstanceDelete.js +33 -0
  59. package/src/client/actions/StageInstanceUpdate.js +30 -0
  60. package/src/client/actions/ThreadCreate.js +24 -0
  61. package/src/client/actions/ThreadDelete.js +32 -0
  62. package/src/client/actions/ThreadListSync.js +59 -0
  63. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  64. package/src/client/actions/ThreadMembersUpdate.js +34 -0
  65. package/src/client/actions/TypingStart.js +29 -0
  66. package/src/client/actions/UserUpdate.js +35 -0
  67. package/src/client/actions/VoiceStateUpdate.js +50 -0
  68. package/src/client/actions/WebhooksUpdate.js +20 -0
  69. package/src/client/voice/ClientVoiceManager.js +151 -0
  70. package/src/client/voice/VoiceConnection.js +1249 -0
  71. package/src/client/voice/dispatcher/AnnexBDispatcher.js +120 -0
  72. package/src/client/voice/dispatcher/AudioDispatcher.js +145 -0
  73. package/src/client/voice/dispatcher/BaseDispatcher.js +459 -0
  74. package/src/client/voice/dispatcher/VPxDispatcher.js +54 -0
  75. package/src/client/voice/dispatcher/VideoDispatcher.js +68 -0
  76. package/src/client/voice/networking/VoiceUDPClient.js +173 -0
  77. package/src/client/voice/networking/VoiceWebSocket.js +286 -0
  78. package/src/client/voice/player/MediaPlayer.js +321 -0
  79. package/src/client/voice/player/processing/AnnexBNalSplitter.js +244 -0
  80. package/src/client/voice/player/processing/IvfSplitter.js +106 -0
  81. package/src/client/voice/player/processing/PCMInsertSilence.js +37 -0
  82. package/src/client/voice/receiver/PacketHandler.js +260 -0
  83. package/src/client/voice/receiver/Receiver.js +96 -0
  84. package/src/client/voice/receiver/Recorder.js +173 -0
  85. package/src/client/voice/util/Function.js +116 -0
  86. package/src/client/voice/util/PlayInterface.js +122 -0
  87. package/src/client/voice/util/Secretbox.js +64 -0
  88. package/src/client/voice/util/Silence.js +16 -0
  89. package/src/client/voice/util/Socket.js +62 -0
  90. package/src/client/voice/util/VolumeInterface.js +104 -0
  91. package/src/client/websocket/WebSocketManager.js +392 -0
  92. package/src/client/websocket/WebSocketShard.js +907 -0
  93. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  94. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  95. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  96. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  97. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  98. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  99. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  100. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  101. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  102. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  103. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  104. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  105. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  106. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  107. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -0
  108. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  109. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  110. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  111. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  112. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  113. package/src/client/websocket/handlers/GUILD_CREATE.js +52 -0
  114. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  115. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  116. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  117. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  118. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  119. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  120. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  121. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  122. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  123. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  124. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  125. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  126. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  127. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  128. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  129. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  130. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  131. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -0
  132. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  133. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  134. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  135. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  136. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  137. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +5 -0
  138. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -0
  139. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  140. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  141. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  142. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  143. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  144. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  145. package/src/client/websocket/handlers/READY.js +121 -0
  146. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -0
  147. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -0
  148. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -0
  149. package/src/client/websocket/handlers/RESUMED.js +14 -0
  150. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  151. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  152. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  153. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  154. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  155. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  156. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  157. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  158. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  159. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  160. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -0
  161. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  162. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -0
  163. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -0
  164. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  165. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
  166. package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
  167. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  168. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  169. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  170. package/src/client/websocket/handlers/index.js +84 -0
  171. package/src/errors/DJSError.js +61 -0
  172. package/src/errors/Messages.js +217 -0
  173. package/src/errors/index.js +4 -0
  174. package/src/index.js +172 -0
  175. package/src/managers/ApplicationCommandManager.js +264 -0
  176. package/src/managers/ApplicationCommandPermissionsManager.js +417 -0
  177. package/src/managers/AutoModerationRuleManager.js +296 -0
  178. package/src/managers/BaseGuildEmojiManager.js +80 -0
  179. package/src/managers/BaseManager.js +19 -0
  180. package/src/managers/BillingManager.js +66 -0
  181. package/src/managers/CachedManager.js +71 -0
  182. package/src/managers/ChannelManager.js +148 -0
  183. package/src/managers/ClientUserSettingManager.js +372 -0
  184. package/src/managers/DataManager.js +61 -0
  185. package/src/managers/DeveloperManager.js +254 -0
  186. package/src/managers/GuildBanManager.js +250 -0
  187. package/src/managers/GuildChannelManager.js +488 -0
  188. package/src/managers/GuildEmojiManager.js +171 -0
  189. package/src/managers/GuildEmojiRoleManager.js +118 -0
  190. package/src/managers/GuildForumThreadManager.js +108 -0
  191. package/src/managers/GuildInviteManager.js +213 -0
  192. package/src/managers/GuildManager.js +338 -0
  193. package/src/managers/GuildMemberManager.js +599 -0
  194. package/src/managers/GuildMemberRoleManager.js +195 -0
  195. package/src/managers/GuildScheduledEventManager.js +314 -0
  196. package/src/managers/GuildSettingManager.js +155 -0
  197. package/src/managers/GuildStickerManager.js +179 -0
  198. package/src/managers/GuildTextThreadManager.js +98 -0
  199. package/src/managers/InteractionManager.js +39 -0
  200. package/src/managers/MessageManager.js +423 -0
  201. package/src/managers/PermissionOverwriteManager.js +164 -0
  202. package/src/managers/PresenceManager.js +71 -0
  203. package/src/managers/QuestManager.js +353 -0
  204. package/src/managers/ReactionManager.js +67 -0
  205. package/src/managers/ReactionUserManager.js +73 -0
  206. package/src/managers/RelationshipManager.js +278 -0
  207. package/src/managers/RoleManager.js +448 -0
  208. package/src/managers/SessionManager.js +66 -0
  209. package/src/managers/StageInstanceManager.js +162 -0
  210. package/src/managers/ThreadManager.js +175 -0
  211. package/src/managers/ThreadMemberManager.js +186 -0
  212. package/src/managers/UserManager.js +136 -0
  213. package/src/managers/UserNoteManager.js +53 -0
  214. package/src/managers/VoiceStateManager.js +59 -0
  215. package/src/rest/APIRequest.js +154 -0
  216. package/src/rest/APIRouter.js +53 -0
  217. package/src/rest/DiscordAPIError.js +119 -0
  218. package/src/rest/HTTPError.js +62 -0
  219. package/src/rest/RESTManager.js +67 -0
  220. package/src/rest/RateLimitError.js +55 -0
  221. package/src/rest/RequestHandler.js +466 -0
  222. package/src/sharding/Shard.js +444 -0
  223. package/src/sharding/ShardClientUtil.js +279 -0
  224. package/src/sharding/ShardingManager.js +319 -0
  225. package/src/structures/AnonymousGuild.js +98 -0
  226. package/src/structures/ApplicationCommand.js +593 -0
  227. package/src/structures/ApplicationRoleConnectionMetadata.js +48 -0
  228. package/src/structures/AutoModerationActionExecution.js +89 -0
  229. package/src/structures/AutoModerationRule.js +294 -0
  230. package/src/structures/AutocompleteInteraction.js +107 -0
  231. package/src/structures/Base.js +43 -0
  232. package/src/structures/BaseCommandInteraction.js +211 -0
  233. package/src/structures/BaseGuild.js +116 -0
  234. package/src/structures/BaseGuildEmoji.js +56 -0
  235. package/src/structures/BaseGuildTextChannel.js +191 -0
  236. package/src/structures/BaseGuildVoiceChannel.js +241 -0
  237. package/src/structures/BaseMessageComponent.js +181 -0
  238. package/src/structures/ButtonInteraction.js +11 -0
  239. package/src/structures/CallState.js +63 -0
  240. package/src/structures/CategoryChannel.js +85 -0
  241. package/src/structures/Channel.js +284 -0
  242. package/src/structures/ClientPresence.js +77 -0
  243. package/src/structures/ClientUser.js +655 -0
  244. package/src/structures/CommandInteraction.js +41 -0
  245. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  246. package/src/structures/ContainerComponent.js +68 -0
  247. package/src/structures/ContextMenuInteraction.js +65 -0
  248. package/src/structures/DMChannel.js +219 -0
  249. package/src/structures/DirectoryChannel.js +20 -0
  250. package/src/structures/Emoji.js +148 -0
  251. package/src/structures/FileComponent.js +49 -0
  252. package/src/structures/ForumChannel.js +31 -0
  253. package/src/structures/GroupDMChannel.js +394 -0
  254. package/src/structures/Guild.js +1791 -0
  255. package/src/structures/GuildAuditLogs.js +746 -0
  256. package/src/structures/GuildBan.js +59 -0
  257. package/src/structures/GuildBoost.js +108 -0
  258. package/src/structures/GuildChannel.js +470 -0
  259. package/src/structures/GuildEmoji.js +161 -0
  260. package/src/structures/GuildMember.js +636 -0
  261. package/src/structures/GuildPreview.js +191 -0
  262. package/src/structures/GuildPreviewEmoji.js +27 -0
  263. package/src/structures/GuildScheduledEvent.js +536 -0
  264. package/src/structures/GuildTemplate.js +236 -0
  265. package/src/structures/Integration.js +188 -0
  266. package/src/structures/IntegrationApplication.js +96 -0
  267. package/src/structures/Interaction.js +290 -0
  268. package/src/structures/InteractionCollector.js +248 -0
  269. package/src/structures/InteractionWebhook.js +43 -0
  270. package/src/structures/Invite.js +358 -0
  271. package/src/structures/InviteGuild.js +23 -0
  272. package/src/structures/InviteStageInstance.js +86 -0
  273. package/src/structures/MediaChannel.js +11 -0
  274. package/src/structures/MediaGalleryComponent.js +41 -0
  275. package/src/structures/MediaGalleryItem.js +47 -0
  276. package/src/structures/Message.js +1252 -0
  277. package/src/structures/MessageActionRow.js +105 -0
  278. package/src/structures/MessageAttachment.js +216 -0
  279. package/src/structures/MessageButton.js +166 -0
  280. package/src/structures/MessageCollector.js +146 -0
  281. package/src/structures/MessageComponentInteraction.js +120 -0
  282. package/src/structures/MessageContextMenuInteraction.js +20 -0
  283. package/src/structures/MessageEmbed.js +596 -0
  284. package/src/structures/MessageMentions.js +273 -0
  285. package/src/structures/MessagePayload.js +354 -0
  286. package/src/structures/MessageReaction.js +181 -0
  287. package/src/structures/MessageSelectMenu.js +141 -0
  288. package/src/structures/Modal.js +161 -0
  289. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  290. package/src/structures/ModalSubmitInteraction.js +119 -0
  291. package/src/structures/NewsChannel.js +32 -0
  292. package/src/structures/OAuth2Guild.js +28 -0
  293. package/src/structures/PermissionOverwrites.js +198 -0
  294. package/src/structures/Poll.js +108 -0
  295. package/src/structures/PollAnswer.js +88 -0
  296. package/src/structures/Presence.js +1157 -0
  297. package/src/structures/ReactionCollector.js +229 -0
  298. package/src/structures/ReactionEmoji.js +31 -0
  299. package/src/structures/Role.js +590 -0
  300. package/src/structures/SectionComponent.js +48 -0
  301. package/src/structures/SelectMenuInteraction.js +21 -0
  302. package/src/structures/SeparatorComponent.js +48 -0
  303. package/src/structures/Session.js +81 -0
  304. package/src/structures/StageChannel.js +104 -0
  305. package/src/structures/StageInstance.js +208 -0
  306. package/src/structures/Sticker.js +310 -0
  307. package/src/structures/StickerPack.js +95 -0
  308. package/src/structures/StoreChannel.js +56 -0
  309. package/src/structures/Team.js +118 -0
  310. package/src/structures/TeamMember.js +80 -0
  311. package/src/structures/TextChannel.js +33 -0
  312. package/src/structures/TextDisplayComponent.js +40 -0
  313. package/src/structures/TextInputComponent.js +132 -0
  314. package/src/structures/ThreadChannel.js +605 -0
  315. package/src/structures/ThreadMember.js +105 -0
  316. package/src/structures/ThreadOnlyChannel.js +249 -0
  317. package/src/structures/ThumbnailComponent.js +57 -0
  318. package/src/structures/Typing.js +74 -0
  319. package/src/structures/UnfurledMediaItem.js +29 -0
  320. package/src/structures/User.js +640 -0
  321. package/src/structures/UserContextMenuInteraction.js +29 -0
  322. package/src/structures/VoiceChannel.js +110 -0
  323. package/src/structures/VoiceChannelEffect.js +69 -0
  324. package/src/structures/VoiceRegion.js +53 -0
  325. package/src/structures/VoiceState.js +354 -0
  326. package/src/structures/WebEmbed.js +373 -0
  327. package/src/structures/Webhook.js +478 -0
  328. package/src/structures/WelcomeChannel.js +60 -0
  329. package/src/structures/WelcomeScreen.js +48 -0
  330. package/src/structures/Widget.js +87 -0
  331. package/src/structures/WidgetMember.js +99 -0
  332. package/src/structures/interfaces/Application.js +953 -0
  333. package/src/structures/interfaces/Collector.js +300 -0
  334. package/src/structures/interfaces/InteractionResponses.js +313 -0
  335. package/src/structures/interfaces/TextBasedChannel.js +821 -0
  336. package/src/util/APITypes.js +59 -0
  337. package/src/util/ActivityFlags.js +44 -0
  338. package/src/util/ApplicationFlags.js +76 -0
  339. package/src/util/AttachmentFlags.js +38 -0
  340. package/src/util/BitField.js +170 -0
  341. package/src/util/ChannelFlags.js +45 -0
  342. package/src/util/Constants.js +1914 -0
  343. package/src/util/DataResolver.js +146 -0
  344. package/src/util/Formatters.js +228 -0
  345. package/src/util/GuildMemberFlags.js +43 -0
  346. package/src/util/Intents.js +74 -0
  347. package/src/util/InviteFlags.js +34 -0
  348. package/src/util/LimitedCollection.js +131 -0
  349. package/src/util/MessageFlags.js +63 -0
  350. package/src/util/Options.js +358 -0
  351. package/src/util/Permissions.js +202 -0
  352. package/src/util/PremiumUsageFlags.js +31 -0
  353. package/src/util/PurchasedFlags.js +33 -0
  354. package/src/util/RemoteAuth.js +415 -0
  355. package/src/util/RoleFlags.js +37 -0
  356. package/src/util/SnowflakeUtil.js +92 -0
  357. package/src/util/Speaking.js +33 -0
  358. package/src/util/Sweepers.js +466 -0
  359. package/src/util/SystemChannelFlags.js +55 -0
  360. package/src/util/ThreadMemberFlags.js +30 -0
  361. package/src/util/UserFlags.js +104 -0
  362. package/src/util/Util.js +1048 -0
  363. package/typings/enums.d.ts +439 -0
  364. package/typings/index.d.ts +8505 -0
  365. package/typings/index.test-d.ts +0 -0
  366. package/typings/rawDataTypes.d.ts +403 -0
@@ -0,0 +1,1914 @@
1
+ 'use strict';
2
+
3
+ const { Error, RangeError, TypeError } = require('../errors');
4
+
5
+ /**
6
+ * Max bulk deletable message age
7
+ * @typedef {number} MaxBulkDeletableMessageAge
8
+ */
9
+ exports.MaxBulkDeletableMessageAge = 1_209_600_000;
10
+
11
+ exports.UserAgent =
12
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) discord/1.0.9210 Chrome/134.0.6998.205 Electron/35.3.0 Safari/537.36';
13
+
14
+ /**
15
+ * Chrome TLS ciphers
16
+ * @see {@link https://tls.browserleaks.com/tls}
17
+ * @see {@link https://github.com/yifeikong/curl-impersonate}
18
+ * @typedef {Array<string>} Ciphers
19
+ */
20
+ exports.ciphers = [
21
+ 'TLS_AES_128_GCM_SHA256',
22
+ 'TLS_AES_256_GCM_SHA384',
23
+ 'TLS_CHACHA20_POLY1305_SHA256',
24
+ 'ECDHE-ECDSA-AES128-GCM-SHA256',
25
+ 'ECDHE-RSA-AES128-GCM-SHA256',
26
+ 'ECDHE-ECDSA-AES256-GCM-SHA384',
27
+ 'ECDHE-RSA-AES256-GCM-SHA384',
28
+ 'ECDHE-ECDSA-CHACHA20-POLY1305',
29
+ 'ECDHE-RSA-CHACHA20-POLY1305',
30
+ 'ECDHE-RSA-AES128-SHA',
31
+ 'ECDHE-RSA-AES256-SHA',
32
+ 'AES128-GCM-SHA256',
33
+ 'AES256-GCM-SHA384',
34
+ 'AES128-SHA',
35
+ 'AES256-SHA',
36
+ ];
37
+
38
+ /**
39
+ * The types of WebSocket error codes:
40
+ * * 1000: WS_CLOSE_REQUESTED
41
+ * * 1011: INTERNAL_ERROR
42
+ * * 4004: TOKEN_INVALID
43
+ * * 4010: SHARDING_INVALID
44
+ * * 4011: SHARDING_REQUIRED
45
+ * * 4013: INVALID_INTENTS
46
+ * * 4014: DISALLOWED_INTENTS
47
+ * @typedef {Object<number, string>} WSCodes
48
+ */
49
+ exports.WSCodes = {
50
+ 1000: 'WS_CLOSE_REQUESTED',
51
+ 1011: 'INTERNAL_ERROR',
52
+ 4004: 'TOKEN_INVALID',
53
+ 4010: 'SHARDING_INVALID',
54
+ 4011: 'SHARDING_REQUIRED',
55
+ 4013: 'INVALID_INTENTS',
56
+ 4014: 'DISALLOWED_INTENTS',
57
+ };
58
+
59
+ const AllowedImageFormats = ['webp', 'png', 'jpg', 'jpeg', 'gif'];
60
+
61
+ const AllowedImageSizes = [16, 32, 56, 64, 96, 128, 256, 300, 512, 600, 1024, 2048, 4096];
62
+
63
+ function makeImageUrl(root, { format = 'webp', size } = {}) {
64
+ if (!['undefined', 'number'].includes(typeof size)) throw new TypeError('INVALID_TYPE', 'size', 'number');
65
+ if (format && !AllowedImageFormats.includes(format)) throw new Error('IMAGE_FORMAT', format);
66
+ if (size && !AllowedImageSizes.includes(size)) throw new RangeError('IMAGE_SIZE', size);
67
+ return `${root}.${format}${size ? `?size=${size}` : ''}`;
68
+ }
69
+
70
+ /**
71
+ * Options for Image URLs.
72
+ * @typedef {StaticImageURLOptions} ImageURLOptions
73
+ * @property {boolean} [dynamic=false] If true, the format will dynamically change to `gif` for animated avatars.
74
+ */
75
+
76
+ /**
77
+ * Options for static Image URLs.
78
+ * @typedef {Object} StaticImageURLOptions
79
+ * @property {string} [format='webp'] One of `webp`, `png`, `jpg`, `jpeg`.
80
+ * @property {number} [size] One of `16`, `32`, `56`, `64`, `96`, `128`, `256`, `300`, `512`, `600`, `1024`, `2048`,
81
+ * `4096`
82
+ */
83
+
84
+ /**
85
+ * An object containing functions that return certain endpoints on the API.
86
+ * @typedef {Object<string, Function|string>} Endpoints
87
+ * @see {@link https://discord.com/developers/docs/reference#image-formatting-cdn-endpoints}
88
+ */
89
+ exports.Endpoints = {
90
+ CDN(root) {
91
+ return {
92
+ Emoji: (emojiId, format = 'webp') => `${root}/emojis/${emojiId}.${format}`,
93
+ Asset: name => `${root}/assets/${name}`,
94
+ DefaultAvatar: index => `${root}/embed/avatars/${index}.png`,
95
+ Avatar: (userId, hash, format, size, dynamic = false) => {
96
+ if (dynamic && hash.startsWith('a_')) format = 'gif';
97
+ return makeImageUrl(`${root}/avatars/${userId}/${hash}`, { format, size });
98
+ },
99
+ AvatarDecoration: hash => makeImageUrl(`${root}/avatar-decoration-presets/${hash}`, { format: 'png' }),
100
+ GuildTagBadge: (guildId, hash) => `${root}/guild-tag-badges/${guildId}/${hash}.png`,
101
+ GuildMemberAvatar: (guildId, memberId, hash, format = 'webp', size, dynamic = false) => {
102
+ if (dynamic && hash.startsWith('a_')) format = 'gif';
103
+ return makeImageUrl(`${root}/guilds/${guildId}/users/${memberId}/avatars/${hash}`, { format, size });
104
+ },
105
+ GuildMemberBanner: (guildId, memberId, hash, format = 'webp', size, dynamic = false) => {
106
+ if (dynamic && hash.startsWith('a_')) format = 'gif';
107
+ return makeImageUrl(`${root}/guilds/${guildId}/users/${memberId}/banners/${hash}`, { format, size });
108
+ },
109
+ Banner: (id, hash, format, size, dynamic = false) => {
110
+ if (dynamic && hash.startsWith('a_')) format = 'gif';
111
+ return makeImageUrl(`${root}/banners/${id}/${hash}`, { format, size });
112
+ },
113
+ Icon: (guildId, hash, format, size, dynamic = false) => {
114
+ if (dynamic && hash.startsWith('a_')) format = 'gif';
115
+ return makeImageUrl(`${root}/icons/${guildId}/${hash}`, { format, size });
116
+ },
117
+ AppIcon: (appId, hash, options) => makeImageUrl(`${root}/app-icons/${appId}/${hash}`, options),
118
+ AppAsset: (appId, hash, options) => makeImageUrl(`${root}/app-assets/${appId}/${hash}`, options),
119
+ StickerPackBanner: (bannerId, format, size) =>
120
+ makeImageUrl(`${root}/app-assets/710982414301790216/store/${bannerId}`, { size, format }),
121
+ GDMIcon: (channelId, hash, format, size) =>
122
+ makeImageUrl(`${root}/channel-icons/${channelId}/${hash}`, { size, format }),
123
+ Splash: (guildId, hash, format, size) => makeImageUrl(`${root}/splashes/${guildId}/${hash}`, { size, format }),
124
+ DiscoverySplash: (guildId, hash, format, size) =>
125
+ makeImageUrl(`${root}/discovery-splashes/${guildId}/${hash}`, { size, format }),
126
+ TeamIcon: (teamId, hash, options) => makeImageUrl(`${root}/team-icons/${teamId}/${hash}`, options),
127
+ Sticker: (stickerId, stickerFormat) =>
128
+ `${root}/stickers/${stickerId}.${
129
+ stickerFormat === 'LOTTIE' ? 'json' : stickerFormat === 'GIF' ? 'gif' : 'png'
130
+ }`,
131
+ RoleIcon: (roleId, hash, format = 'webp', size) =>
132
+ makeImageUrl(`${root}/role-icons/${roleId}/${hash}`, { size, format }),
133
+ GuildScheduledEventCover: (scheduledEventId, coverHash, format, size) =>
134
+ makeImageUrl(`${root}/guild-events/${scheduledEventId}/${coverHash}`, { size, format }),
135
+ };
136
+ },
137
+ invite: (root, code, eventId) => (eventId ? `${root}/${code}?event=${eventId}` : `${root}/${code}`),
138
+ scheduledEvent: (root, guildId, eventId) => `${root}/${guildId}/${eventId}`,
139
+ botGateway: '/gateway',
140
+ };
141
+
142
+ /**
143
+ * The current status of the client. Here are the available statuses:
144
+ * * READY: 0
145
+ * * CONNECTING: 1
146
+ * * RECONNECTING: 2
147
+ * * IDLE: 3
148
+ * * NEARLY: 4
149
+ * * DISCONNECTED: 5
150
+ * * WAITING_FOR_GUILDS: 6
151
+ * * IDENTIFYING: 7
152
+ * * RESUMING: 8
153
+ * @typedef {Object<string, number>} Status
154
+ */
155
+ exports.Status = {
156
+ READY: 0,
157
+ CONNECTING: 1,
158
+ RECONNECTING: 2,
159
+ IDLE: 3,
160
+ NEARLY: 4,
161
+ DISCONNECTED: 5,
162
+ WAITING_FOR_GUILDS: 6,
163
+ IDENTIFYING: 7,
164
+ RESUMING: 8,
165
+ };
166
+
167
+ /**
168
+ * The current status of a voice connection. Here are the available statuses:
169
+ * * CONNECTED: 0
170
+ * * CONNECTING: 1
171
+ * * AUTHENTICATING: 2
172
+ * * RECONNECTING: 3
173
+ * * DISCONNECTED: 4
174
+ * @typedef {number} VoiceStatus
175
+ */
176
+ exports.VoiceStatus = {
177
+ CONNECTED: 0,
178
+ CONNECTING: 1,
179
+ AUTHENTICATING: 2,
180
+ RECONNECTING: 3,
181
+ DISCONNECTED: 4,
182
+ };
183
+
184
+ /**
185
+ * The Opcodes sent to the Gateway:
186
+ * * DISPATCH: 0
187
+ * * HEARTBEAT: 1
188
+ * * IDENTIFY: 2
189
+ * * STATUS_UPDATE: 3
190
+ * * VOICE_STATE_UPDATE: 4
191
+ * * VOICE_GUILD_PING: 5
192
+ * * RESUME: 6
193
+ * * RECONNECT: 7
194
+ * * REQUEST_GUILD_MEMBERS: 8
195
+ * * INVALID_SESSION: 9
196
+ * * HELLO: 10
197
+ * * HEARTBEAT_ACK: 11
198
+ * * GUILD_SYNC: 12 [Unused]
199
+ * * DM_UPDATE: 13 # Send => used to get dm features
200
+ * * GUILD_SUBSCRIPTIONS: 14 # Send => discord responds back with GUILD_MEMBER_LIST_UPDATE type SYNC...
201
+ * * LOBBY_CONNECT: 15
202
+ * * LOBBY_DISCONNECT: 16
203
+ * * LOBBY_VOICE_STATE_UPDATE: 17 # Receive
204
+ * * STREAM_CREATE: 18
205
+ * * STREAM_DELETE: 19
206
+ * * STREAM_WATCH: 20
207
+ * * STREAM_PING: 21 # Send
208
+ * * STREAM_SET_PAUSED: 22
209
+ * * LFG_SUBSCRIPTIONS: 23 [Unused]
210
+ * * REQUEST_GUILD_APPLICATION_COMMANDS: 24 [Unused]
211
+ * * EMBEDDED_ACTIVITY_LAUNCH: 25 => Launch an embedded activity in a voice channel or call.
212
+ * * EMBEDDED_ACTIVITY_CLOSE: 26 => Stop an embedded activity.
213
+ * * EMBEDDED_ACTIVITY_UPDATE: 27 => Update an embedded activity.
214
+ * * REQUEST_FORUM_UNREADS: 28 => Request forum channel unread counts.
215
+ * * REMOTE_COMMAND: 29 => Send a remote command to an embedded (Xbox, PlayStation) voice session.
216
+ * * GET_DELETED_ENTITY_IDS_NOT_MATCHING_HASH: 30 => Request deleted entity IDs not matching a given hash for a guild.
217
+ * * REQUEST_SOUNDBOARD_SOUNDS: 31
218
+ * * SPEED_TEST_CREATE: 32 => Create a voice speed test.
219
+ * * SPEED_TEST_DELETE: 33 => Delete a voice speed test.
220
+ * * REQUEST_LAST_MESSAGES: 34 => Request last messages for a guild's channels.
221
+ * * SEARCH_RECENT_MEMBERS: 35 => ~ Opcode 8 (Member Safety)
222
+ * * REQUEST_CHANNEL_STATUSES: 36 => Request Voice Channel status.
223
+ * * GUILD_SUBSCRIPTIONS_BULK: 37 => ~ Opcode 14
224
+ * @typedef {Object<string, number>} Opcodes
225
+ */
226
+ exports.Opcodes = {
227
+ DISPATCH: 0,
228
+ HEARTBEAT: 1,
229
+ IDENTIFY: 2,
230
+ STATUS_UPDATE: 3,
231
+ VOICE_STATE_UPDATE: 4,
232
+ VOICE_GUILD_PING: 5,
233
+ RESUME: 6,
234
+ RECONNECT: 7,
235
+ REQUEST_GUILD_MEMBERS: 8,
236
+ INVALID_SESSION: 9,
237
+ HELLO: 10,
238
+ HEARTBEAT_ACK: 11,
239
+ GUILD_SYNC: 12,
240
+ DM_UPDATE: 13,
241
+ GUILD_SUBSCRIPTIONS: 14,
242
+ LOBBY_CONNECT: 15,
243
+ LOBBY_DISCONNECT: 16,
244
+ LOBBY_VOICE_STATE_UPDATE: 17,
245
+ STREAM_CREATE: 18,
246
+ STREAM_DELETE: 19,
247
+ STREAM_WATCH: 20,
248
+ STREAM_PING: 21,
249
+ STREAM_SET_PAUSED: 22,
250
+ REQUEST_GUILD_APPLICATION_COMMANDS: 24,
251
+ EMBEDDED_ACTIVITY_LAUNCH: 25,
252
+ EMBEDDED_ACTIVITY_CLOSE: 26,
253
+ EMBEDDED_ACTIVITY_UPDATE: 27,
254
+ REQUEST_FORUM_UNREADS: 28, // Payload: { guild_id: Snowflake, channel_id: Snowflake, threads: { thread_id: Snowflake, ack_message_id: Snowflake }[] }
255
+ REMOTE_COMMAND: 29, // Payload: { target_session_id: string, payload: any }
256
+ GET_DELETED_ENTITY_IDS_NOT_MATCHING_HASH: 30, // Payload: { guild_id: Snowflake, channel_ids_hash: string[], role_ids_hash: string[], emoji_ids_hash: string[], sticker_ids_hash: string[] }
257
+ REQUEST_SOUNDBOARD_SOUNDS: 31, // Payload: { guild_ids: string[] }
258
+ SPEED_TEST_CREATE: 32, // Payload: { preferred_region: string }
259
+ SPEED_TEST_DELETE: 33, // Payload: null
260
+ REQUEST_LAST_MESSAGES: 34, // Payload: { guild_id: string, channel_ids: string[] }
261
+ SEARCH_RECENT_MEMBERS: 35, // Payload: { guild_id: string, query: string, continuation_token?: Snowflake }
262
+ REQUEST_CHANNEL_STATUSES: 36, // Payload: { guild_id: string } | Response: CHANNEL_STATUSES | { guild_id, channels: { status, id }[] }
263
+ GUILD_SUBSCRIPTIONS_BULK: 37, // Payload: { subscriptions: Object<guild_id, { Payload_op14 - guild_id }> } | Response: Opcode 14
264
+ // Updated: 23/1/2024
265
+ };
266
+
267
+ /**
268
+ * @typedef {Opject<string, number>} VoiceOpcodes
269
+ */
270
+ exports.VoiceOpcodes = {
271
+ IDENTIFY: 0,
272
+ SELECT_PROTOCOL: 1,
273
+ READY: 2,
274
+ HEARTBEAT: 3,
275
+ SESSION_DESCRIPTION: 4,
276
+ SPEAKING: 5,
277
+ HEARTBEAT_ACK: 6,
278
+ RESUME: 7,
279
+ HELLO: 8,
280
+ RESUMED: 9,
281
+ SOURCES: 12,
282
+ CLIENT_DISCONNECT: 13,
283
+ SESSION_UPDATE: 14,
284
+ MEDIA_SINK_WANTS: 15,
285
+ VOICE_BACKEND_VERSION: 16,
286
+ CHANNEL_OPTIONS_UPDATE: 17,
287
+ };
288
+
289
+ /**
290
+ * The types of events emitted by the Client:
291
+ * * RATE_LIMIT: rateLimit
292
+ * * INVALID_REQUEST_WARNING: invalidRequestWarning
293
+ * * API_RESPONSE: apiResponse
294
+ * * API_REQUEST: apiRequest
295
+ * * CLIENT_READY: ready
296
+ * * APPLICATION_COMMAND_CREATE: applicationCommandCreate (deprecated)
297
+ * * APPLICATION_COMMAND_DELETE: applicationCommandDelete (deprecated)
298
+ * * APPLICATION_COMMAND_UPDATE: applicationCommandUpdate (deprecated)
299
+ * * APPLICATION_COMMAND_PERMISSIONS_UPDATE: applicationCommandPermissionsUpdate
300
+ * * AUTO_MODERATION_ACTION_EXECUTION: autoModerationActionExecution
301
+ * * AUTO_MODERATION_RULE_CREATE: autoModerationRuleCreate
302
+ * * AUTO_MODERATION_RULE_DELETE: autoModerationRuleDelete
303
+ * * AUTO_MODERATION_RULE_UPDATE: autoModerationRuleUpdate
304
+ * * GUILD_AVAILABLE: guildAvailable
305
+ * * GUILD_CREATE: guildCreate
306
+ * * GUILD_DELETE: guildDelete
307
+ * * GUILD_UPDATE: guildUpdate
308
+ * * GUILD_UNAVAILABLE: guildUnavailable
309
+ * * GUILD_MEMBER_ADD: guildMemberAdd
310
+ * * GUILD_MEMBER_REMOVE: guildMemberRemove
311
+ * * GUILD_MEMBER_UPDATE: guildMemberUpdate
312
+ * * GUILD_MEMBER_AVAILABLE: guildMemberAvailable
313
+ * * GUILD_MEMBERS_CHUNK: guildMembersChunk
314
+ * * GUILD_INTEGRATIONS_UPDATE: guildIntegrationsUpdate
315
+ * * GUILD_ROLE_CREATE: roleCreate
316
+ * * GUILD_ROLE_DELETE: roleDelete
317
+ * * INVITE_CREATE: inviteCreate
318
+ * * INVITE_DELETE: inviteDelete
319
+ * * GUILD_ROLE_UPDATE: roleUpdate
320
+ * * GUILD_EMOJI_CREATE: emojiCreate
321
+ * * GUILD_EMOJI_DELETE: emojiDelete
322
+ * * GUILD_EMOJI_UPDATE: emojiUpdate
323
+ * * GUILD_BAN_ADD: guildBanAdd
324
+ * * GUILD_BAN_REMOVE: guildBanRemove
325
+ * * CHANNEL_CREATE: channelCreate
326
+ * * CHANNEL_DELETE: channelDelete
327
+ * * CHANNEL_UPDATE: channelUpdate
328
+ * * CHANNEL_PINS_UPDATE: channelPinsUpdate
329
+ * * MESSAGE_CREATE: messageCreate
330
+ * * MESSAGE_DELETE: messageDelete
331
+ * * MESSAGE_UPDATE: messageUpdate
332
+ * * MESSAGE_BULK_DELETE: messageDeleteBulk
333
+ * * MESSAGE_REACTION_ADD: messageReactionAdd
334
+ * * MESSAGE_REACTION_REMOVE: messageReactionRemove
335
+ * * MESSAGE_REACTION_REMOVE_ALL: messageReactionRemoveAll
336
+ * * MESSAGE_REACTION_REMOVE_EMOJI: messageReactionRemoveEmoji
337
+ * * THREAD_CREATE: threadCreate
338
+ * * THREAD_DELETE: threadDelete
339
+ * * THREAD_UPDATE: threadUpdate
340
+ * * THREAD_LIST_SYNC: threadListSync
341
+ * * THREAD_MEMBER_UPDATE: threadMemberUpdate
342
+ * * THREAD_MEMBERS_UPDATE: threadMembersUpdate
343
+ * * USER_UPDATE: userUpdate
344
+ * * PRESENCE_UPDATE: presenceUpdate
345
+ * * VOICE_SERVER_UPDATE: voiceServerUpdate
346
+ * * VOICE_STATE_UPDATE: voiceStateUpdate
347
+ * * TYPING_START: typingStart
348
+ * * WEBHOOKS_UPDATE: webhookUpdate
349
+ * * ERROR: error
350
+ * * WARN: warn
351
+ * * DEBUG: debug
352
+ * * CACHE_SWEEP: cacheSweep
353
+ * * SHARD_DISCONNECT: shardDisconnect
354
+ * * SHARD_ERROR: shardError
355
+ * * SHARD_RECONNECTING: shardReconnecting
356
+ * * SHARD_READY: shardReady
357
+ * * SHARD_RESUME: shardResume
358
+ * * INVALIDATED: invalidated
359
+ * * RAW: raw
360
+ * * STAGE_INSTANCE_CREATE: stageInstanceCreate
361
+ * * STAGE_INSTANCE_UPDATE: stageInstanceUpdate
362
+ * * STAGE_INSTANCE_DELETE: stageInstanceDelete
363
+ * * GUILD_STICKER_CREATE: stickerCreate
364
+ * * GUILD_STICKER_DELETE: stickerDelete
365
+ * * GUILD_STICKER_UPDATE: stickerUpdate
366
+ * * GUILD_SCHEDULED_EVENT_CREATE: guildScheduledEventCreate
367
+ * * GUILD_SCHEDULED_EVENT_UPDATE: guildScheduledEventUpdate
368
+ * * GUILD_SCHEDULED_EVENT_DELETE: guildScheduledEventDelete
369
+ * * GUILD_SCHEDULED_EVENT_USER_ADD: guildScheduledEventUserAdd
370
+ * * GUILD_SCHEDULED_EVENT_USER_REMOVE: guildScheduledEventUserRemove
371
+ * * GUILD_AUDIT_LOG_ENTRY_CREATE: guildAuditLogEntryCreate
372
+ * * UNHANDLED_PACKET: unhandledPacket
373
+ * * RELATIONSHIP_ADD: relationshipAdd
374
+ * * RELATIONSHIP_REMOVE: relationshipRemove
375
+ * * RELATIONSHIP_UPDATE: relationshipUpdate
376
+ * * CHANNEL_RECIPIENT_ADD: channelRecipientAdd
377
+ * * CHANNEL_RECIPIENT_REMOVE: channelRecipientRemove
378
+ * * INTERACTION_MODAL_CREATE: interactionModalCreate
379
+ * * CALL_CREATE: callCreate
380
+ * * CALL_UPDATE: callUpdate
381
+ * * CALL_DELETE: callDelete
382
+ * * VOICE_CHANNEL_EFFECT_SEND: voiceChannelEffectSend
383
+ * @typedef {Object<string, string>} Events
384
+ */
385
+ exports.Events = {
386
+ RATE_LIMIT: 'rateLimit',
387
+ INVALID_REQUEST_WARNING: 'invalidRequestWarning',
388
+ API_RESPONSE: 'apiResponse',
389
+ API_REQUEST: 'apiRequest',
390
+ CLIENT_READY: 'ready',
391
+ APPLICATION_COMMAND_CREATE: 'applicationCommandCreate',
392
+ APPLICATION_COMMAND_DELETE: 'applicationCommandDelete',
393
+ APPLICATION_COMMAND_UPDATE: 'applicationCommandUpdate',
394
+ APPLICATION_COMMAND_PERMISSIONS_UPDATE: 'applicationCommandPermissionsUpdate',
395
+ AUTO_MODERATION_ACTION_EXECUTION: 'autoModerationActionExecution',
396
+ AUTO_MODERATION_RULE_CREATE: 'autoModerationRuleCreate',
397
+ AUTO_MODERATION_RULE_DELETE: 'autoModerationRuleDelete',
398
+ AUTO_MODERATION_RULE_UPDATE: 'autoModerationRuleUpdate',
399
+ GUILD_AVAILABLE: 'guildAvailable',
400
+ GUILD_CREATE: 'guildCreate',
401
+ GUILD_DELETE: 'guildDelete',
402
+ GUILD_UPDATE: 'guildUpdate',
403
+ GUILD_UNAVAILABLE: 'guildUnavailable',
404
+ GUILD_MEMBER_ADD: 'guildMemberAdd',
405
+ GUILD_MEMBER_REMOVE: 'guildMemberRemove',
406
+ GUILD_MEMBER_UPDATE: 'guildMemberUpdate',
407
+ GUILD_MEMBER_AVAILABLE: 'guildMemberAvailable',
408
+ GUILD_MEMBERS_CHUNK: 'guildMembersChunk',
409
+ GUILD_INTEGRATIONS_UPDATE: 'guildIntegrationsUpdate',
410
+ GUILD_ROLE_CREATE: 'roleCreate',
411
+ GUILD_ROLE_DELETE: 'roleDelete',
412
+ INVITE_CREATE: 'inviteCreate',
413
+ INVITE_DELETE: 'inviteDelete',
414
+ GUILD_ROLE_UPDATE: 'roleUpdate',
415
+ GUILD_EMOJI_CREATE: 'emojiCreate',
416
+ GUILD_EMOJI_DELETE: 'emojiDelete',
417
+ GUILD_EMOJI_UPDATE: 'emojiUpdate',
418
+ GUILD_BAN_ADD: 'guildBanAdd',
419
+ GUILD_BAN_REMOVE: 'guildBanRemove',
420
+ CHANNEL_CREATE: 'channelCreate',
421
+ CHANNEL_DELETE: 'channelDelete',
422
+ CHANNEL_UPDATE: 'channelUpdate',
423
+ CHANNEL_PINS_UPDATE: 'channelPinsUpdate',
424
+ MESSAGE_CREATE: 'messageCreate',
425
+ MESSAGE_DELETE: 'messageDelete',
426
+ MESSAGE_UPDATE: 'messageUpdate',
427
+ MESSAGE_BULK_DELETE: 'messageDeleteBulk',
428
+ MESSAGE_REACTION_ADD: 'messageReactionAdd',
429
+ MESSAGE_REACTION_REMOVE: 'messageReactionRemove',
430
+ MESSAGE_REACTION_REMOVE_ALL: 'messageReactionRemoveAll',
431
+ MESSAGE_REACTION_REMOVE_EMOJI: 'messageReactionRemoveEmoji',
432
+ THREAD_CREATE: 'threadCreate',
433
+ THREAD_DELETE: 'threadDelete',
434
+ THREAD_UPDATE: 'threadUpdate',
435
+ THREAD_LIST_SYNC: 'threadListSync',
436
+ THREAD_MEMBER_UPDATE: 'threadMemberUpdate',
437
+ THREAD_MEMBERS_UPDATE: 'threadMembersUpdate',
438
+ USER_UPDATE: 'userUpdate',
439
+ PRESENCE_UPDATE: 'presenceUpdate',
440
+ VOICE_SERVER_UPDATE: 'voiceServerUpdate',
441
+ VOICE_STATE_UPDATE: 'voiceStateUpdate',
442
+ TYPING_START: 'typingStart',
443
+ WEBHOOKS_UPDATE: 'webhookUpdate',
444
+ ERROR: 'error',
445
+ WARN: 'warn',
446
+ DEBUG: 'debug',
447
+ CACHE_SWEEP: 'cacheSweep',
448
+ SHARD_DISCONNECT: 'shardDisconnect',
449
+ SHARD_ERROR: 'shardError',
450
+ SHARD_RECONNECTING: 'shardReconnecting',
451
+ SHARD_READY: 'shardReady',
452
+ SHARD_RESUME: 'shardResume',
453
+ INVALIDATED: 'invalidated',
454
+ RAW: 'raw',
455
+ STAGE_INSTANCE_CREATE: 'stageInstanceCreate',
456
+ STAGE_INSTANCE_UPDATE: 'stageInstanceUpdate',
457
+ STAGE_INSTANCE_DELETE: 'stageInstanceDelete',
458
+ GUILD_STICKER_CREATE: 'stickerCreate',
459
+ GUILD_STICKER_DELETE: 'stickerDelete',
460
+ GUILD_STICKER_UPDATE: 'stickerUpdate',
461
+ GUILD_SCHEDULED_EVENT_CREATE: 'guildScheduledEventCreate',
462
+ GUILD_SCHEDULED_EVENT_UPDATE: 'guildScheduledEventUpdate',
463
+ GUILD_SCHEDULED_EVENT_DELETE: 'guildScheduledEventDelete',
464
+ GUILD_SCHEDULED_EVENT_USER_ADD: 'guildScheduledEventUserAdd',
465
+ GUILD_SCHEDULED_EVENT_USER_REMOVE: 'guildScheduledEventUserRemove',
466
+ GUILD_AUDIT_LOG_ENTRY_CREATE: 'guildAuditLogEntryCreate',
467
+ UNHANDLED_PACKET: 'unhandledPacket',
468
+ RELATIONSHIP_ADD: 'relationshipAdd',
469
+ RELATIONSHIP_UPDATE: 'relationshipUpdate',
470
+ RELATIONSHIP_REMOVE: 'relationshipRemove',
471
+ CHANNEL_RECIPIENT_ADD: 'channelRecipientAdd',
472
+ CHANNEL_RECIPIENT_REMOVE: 'channelRecipientRemove',
473
+ INTERACTION_MODAL_CREATE: 'interactionModalCreate',
474
+ CALL_CREATE: 'callCreate',
475
+ CALL_UPDATE: 'callUpdate',
476
+ CALL_DELETE: 'callDelete',
477
+ MESSAGE_POLL_VOTE_ADD: 'messagePollVoteAdd',
478
+ MESSAGE_POLL_VOTE_REMOVE: 'messagePollVoteRemove',
479
+ VOICE_CHANNEL_EFFECT_SEND: 'voiceChannelEffectSend',
480
+ // Djs v12
481
+ VOICE_BROADCAST_SUBSCRIBE: 'subscribe',
482
+ VOICE_BROADCAST_UNSUBSCRIBE: 'unsubscribe',
483
+ };
484
+
485
+ /**
486
+ * The types of events emitted by a Shard:
487
+ * * CLOSE: close
488
+ * * DESTROYED: destroyed
489
+ * * INVALID_SESSION: invalidSession
490
+ * * READY: ready
491
+ * * RESUMED: resumed
492
+ * * ALL_READY: allReady
493
+ * @typedef {Object<string, string>} ShardEvents
494
+ */
495
+ exports.ShardEvents = {
496
+ CLOSE: 'close',
497
+ DESTROYED: 'destroyed',
498
+ INVALID_SESSION: 'invalidSession',
499
+ READY: 'ready',
500
+ RESUMED: 'resumed',
501
+ ALL_READY: 'allReady',
502
+ };
503
+
504
+ /**
505
+ * The type of Structure allowed to be a partial:
506
+ * * USER
507
+ * * CHANNEL (only affects DMChannels)
508
+ * * GUILD_MEMBER
509
+ * * MESSAGE
510
+ * * REACTION
511
+ * * GUILD_SCHEDULED_EVENT
512
+ * <warn>Partials require you to put checks in place when handling data. See the "Partial Structures" topic on the
513
+ * [guide](https://discordjs.guide/popular-topics/partials.html) for more information.</warn>
514
+ * @typedef {string} PartialType
515
+ */
516
+ exports.PartialTypes = keyMirror(['USER', 'CHANNEL', 'GUILD_MEMBER', 'MESSAGE', 'REACTION', 'GUILD_SCHEDULED_EVENT']);
517
+
518
+ /**
519
+ * The type of a WebSocket message event, e.g. `MESSAGE_CREATE`. Here are the available events:
520
+ * * READY
521
+ * * RESUMED
522
+ * * APPLICATION_COMMAND_CREATE (deprecated)
523
+ * * APPLICATION_COMMAND_DELETE (deprecated)
524
+ * * APPLICATION_COMMAND_PERMISSIONS_UPDATE
525
+ * * APPLICATION_COMMAND_UPDATE (deprecated)
526
+ * * AUTO_MODERATION_ACTION_EXECUTION
527
+ * * AUTO_MODERATION_RULE_CREATE
528
+ * * AUTO_MODERATION_RULE_DELETE
529
+ * * AUTO_MODERATION_RULE_UPDATE
530
+ * * GUILD_CREATE
531
+ * * GUILD_DELETE
532
+ * * GUILD_UPDATE
533
+ * * INVITE_CREATE
534
+ * * INVITE_DELETE
535
+ * * GUILD_MEMBER_ADD
536
+ * * GUILD_MEMBER_REMOVE
537
+ * * GUILD_MEMBER_UPDATE
538
+ * * GUILD_MEMBERS_CHUNK
539
+ * * GUILD_INTEGRATIONS_UPDATE
540
+ * * GUILD_ROLE_CREATE
541
+ * * GUILD_ROLE_DELETE
542
+ * * GUILD_ROLE_UPDATE
543
+ * * GUILD_BAN_ADD
544
+ * * GUILD_BAN_REMOVE
545
+ * * GUILD_EMOJIS_UPDATE
546
+ * * CHANNEL_CREATE
547
+ * * CHANNEL_DELETE
548
+ * * CHANNEL_UPDATE
549
+ * * CHANNEL_PINS_UPDATE
550
+ * * MESSAGE_CREATE
551
+ * * MESSAGE_DELETE
552
+ * * MESSAGE_UPDATE
553
+ * * MESSAGE_DELETE_BULK
554
+ * * MESSAGE_REACTION_ADD
555
+ * * MESSAGE_REACTION_REMOVE
556
+ * * MESSAGE_REACTION_REMOVE_ALL
557
+ * * MESSAGE_REACTION_REMOVE_EMOJI
558
+ * * THREAD_CREATE
559
+ * * THREAD_UPDATE
560
+ * * THREAD_DELETE
561
+ * * THREAD_LIST_SYNC
562
+ * * THREAD_MEMBER_UPDATE
563
+ * * THREAD_MEMBERS_UPDATE
564
+ * * USER_UPDATE
565
+ * * PRESENCE_UPDATE
566
+ * * TYPING_START
567
+ * * VOICE_STATE_UPDATE
568
+ * * VOICE_SERVER_UPDATE
569
+ * * WEBHOOKS_UPDATE
570
+ * * STAGE_INSTANCE_CREATE
571
+ * * STAGE_INSTANCE_UPDATE
572
+ * * STAGE_INSTANCE_DELETE
573
+ * * GUILD_STICKERS_UPDATE
574
+ * * GUILD_SCHEDULED_EVENT_CREATE
575
+ * * GUILD_SCHEDULED_EVENT_UPDATE
576
+ * * GUILD_SCHEDULED_EVENT_DELETE
577
+ * * GUILD_SCHEDULED_EVENT_USER_ADD
578
+ * * GUILD_SCHEDULED_EVENT_USER_REMOVE
579
+ * * GUILD_AUDIT_LOG_ENTRY_CREATE
580
+ * @typedef {string} WSEventType
581
+ * @see {@link https://discord.com/developers/docs/topics/gateway-events#receive-events}
582
+ */
583
+ exports.WSEvents = keyMirror([
584
+ 'READY',
585
+ 'RESUMED',
586
+ 'APPLICATION_COMMAND_CREATE',
587
+ 'APPLICATION_COMMAND_DELETE',
588
+ 'APPLICATION_COMMAND_UPDATE',
589
+ 'APPLICATION_COMMAND_PERMISSIONS_UPDATE',
590
+ 'AUTO_MODERATION_ACTION_EXECUTION',
591
+ 'AUTO_MODERATION_RULE_CREATE',
592
+ 'AUTO_MODERATION_RULE_DELETE',
593
+ 'AUTO_MODERATION_RULE_UPDATE',
594
+ 'GUILD_CREATE',
595
+ 'GUILD_DELETE',
596
+ 'GUILD_UPDATE',
597
+ 'INVITE_CREATE',
598
+ 'INVITE_DELETE',
599
+ 'GUILD_MEMBER_ADD',
600
+ 'GUILD_MEMBER_REMOVE',
601
+ 'GUILD_MEMBER_UPDATE',
602
+ 'GUILD_MEMBERS_CHUNK',
603
+ 'GUILD_INTEGRATIONS_UPDATE',
604
+ 'GUILD_ROLE_CREATE',
605
+ 'GUILD_ROLE_DELETE',
606
+ 'GUILD_ROLE_UPDATE',
607
+ 'GUILD_BAN_ADD',
608
+ 'GUILD_BAN_REMOVE',
609
+ 'GUILD_EMOJIS_UPDATE',
610
+ 'CHANNEL_CREATE',
611
+ 'CHANNEL_DELETE',
612
+ 'CHANNEL_UPDATE',
613
+ 'CHANNEL_PINS_UPDATE',
614
+ 'MESSAGE_CREATE',
615
+ 'MESSAGE_DELETE',
616
+ 'MESSAGE_UPDATE',
617
+ 'MESSAGE_DELETE_BULK',
618
+ 'MESSAGE_REACTION_ADD',
619
+ 'MESSAGE_REACTION_REMOVE',
620
+ 'MESSAGE_REACTION_REMOVE_ALL',
621
+ 'MESSAGE_REACTION_REMOVE_EMOJI',
622
+ 'THREAD_CREATE',
623
+ 'THREAD_UPDATE',
624
+ 'THREAD_DELETE',
625
+ 'THREAD_LIST_SYNC',
626
+ 'THREAD_MEMBER_UPDATE',
627
+ 'THREAD_MEMBERS_UPDATE',
628
+ 'USER_UPDATE',
629
+ 'PRESENCE_UPDATE',
630
+ 'TYPING_START',
631
+ 'VOICE_STATE_UPDATE',
632
+ 'VOICE_SERVER_UPDATE',
633
+ 'WEBHOOKS_UPDATE',
634
+ 'STAGE_INSTANCE_CREATE',
635
+ 'STAGE_INSTANCE_UPDATE',
636
+ 'STAGE_INSTANCE_DELETE',
637
+ 'GUILD_STICKERS_UPDATE',
638
+ 'GUILD_SCHEDULED_EVENT_CREATE',
639
+ 'GUILD_SCHEDULED_EVENT_UPDATE',
640
+ 'GUILD_SCHEDULED_EVENT_DELETE',
641
+ 'GUILD_SCHEDULED_EVENT_USER_ADD',
642
+ 'GUILD_SCHEDULED_EVENT_USER_REMOVE',
643
+ 'GUILD_AUDIT_LOG_ENTRY_CREATE',
644
+ ]);
645
+
646
+ /**
647
+ * A valid scope to request when generating an invite link.
648
+ * <warn>Scopes that require whitelist are not considered valid for this generator</warn>
649
+ * * `applications.builds.read`: allows reading build data for a users applications
650
+ * * `applications.commands`: allows this bot to create commands in the server
651
+ * * `applications.entitlements`: allows reading entitlements for a users applications
652
+ * * `applications.store.update`: allows reading and updating of store data for a users applications
653
+ * * `bot`: makes the bot join the selected guild
654
+ * * `connections`: makes the endpoint for getting a users connections available
655
+ * * `email`: allows the `/users/@me` endpoint return with an email
656
+ * * `identify`: allows the `/users/@me` endpoint without an email
657
+ * * `guilds`: makes the `/users/@me/guilds` endpoint available for a user
658
+ * * `guilds.join`: allows the bot to join the user to any guild it is in using Guild#addMember
659
+ * * `gdm.join`: allows joining the user to a group dm
660
+ * * `webhook.incoming`: generates a webhook to a channel
661
+ * * `role_connections.write`: allows your app to update a user's connection and metadata for the app
662
+ * @typedef {string} InviteScope
663
+ * @see {@link https://discord.com/developers/docs/topics/oauth2#shared-resources-oauth2-scopes}
664
+ */
665
+ exports.InviteScopes = [
666
+ 'applications.builds.read',
667
+ 'applications.commands',
668
+ 'applications.entitlements',
669
+ 'applications.store.update',
670
+ 'bot',
671
+ 'connections',
672
+ 'email',
673
+ 'identify',
674
+ 'guilds',
675
+ 'guilds.join',
676
+ 'gdm.join',
677
+ 'webhook.incoming',
678
+ 'role_connections.write',
679
+ ];
680
+
681
+ // TODO: change Integration#expireBehavior to this and clean up Integration
682
+ /**
683
+ * The behavior of expiring subscribers for Integrations. This can be:
684
+ * * REMOVE_ROLE
685
+ * * KICK
686
+ * @typedef {string} IntegrationExpireBehavior
687
+ * @see {@link https://discord.com/developers/docs/resources/guild#integration-object-integration-expire-behaviors}
688
+ */
689
+ exports.IntegrationExpireBehaviors = createEnum(['REMOVE_ROLE', 'KICK']);
690
+
691
+ /**
692
+ * The type of a message, e.g. `DEFAULT`. Here are the available types:
693
+ * * DEFAULT
694
+ * * RECIPIENT_ADD
695
+ * * RECIPIENT_REMOVE
696
+ * * CALL
697
+ * * CHANNEL_NAME_CHANGE
698
+ * * CHANNEL_ICON_CHANGE
699
+ * * CHANNEL_PINNED_MESSAGE
700
+ * * GUILD_MEMBER_JOIN
701
+ * * USER_PREMIUM_GUILD_SUBSCRIPTION
702
+ * * USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1
703
+ * * USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2
704
+ * * USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3
705
+ * * CHANNEL_FOLLOW_ADD
706
+ * * GUILD_DISCOVERY_DISQUALIFIED
707
+ * * GUILD_DISCOVERY_REQUALIFIED
708
+ * * GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING
709
+ * * GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING
710
+ * * THREAD_CREATED
711
+ * * REPLY
712
+ * * APPLICATION_COMMAND
713
+ * * THREAD_STARTER_MESSAGE
714
+ * * GUILD_INVITE_REMINDER
715
+ * * CONTEXT_MENU_COMMAND
716
+ * * AUTO_MODERATION_ACTION
717
+ * * ROLE_SUBSCRIPTION_PURCHASE
718
+ * * INTERACTION_PREMIUM_UPSELL
719
+ * * STAGE_START
720
+ * * STAGE_END
721
+ * * STAGE_SPEAKER
722
+ * * STAGE_RAISE_HAND
723
+ * * STAGE_TOPIC
724
+ * * GUILD_APPLICATION_PREMIUM_SUBSCRIPTION
725
+ * * PREMIUM_REFERRAL
726
+ * * GUILD_INCIDENT_ALERT_MODE_ENABLED
727
+ * * GUILD_INCIDENT_ALERT_MODE_DISABLED
728
+ * * GUILD_INCIDENT_REPORT_RAID
729
+ * * GUILD_INCIDENT_REPORT_FALSE_ALARM
730
+ * * GUILD_DEADCHAT_REVIVE_PROMPT
731
+ * * CUSTOM_GIFT
732
+ * * GUILD_GAMING_STATS_PROMPT
733
+ * * PURCHASE_NOTIFICATION
734
+ * * POLL_RESULT
735
+ * * CHANGELOG
736
+ * * NITRO_NOTIFICATION
737
+ * @typedef {string} MessageType
738
+ * @see {@link https://discord.com/developers/docs/resources/channel#message-object-message-types}
739
+ * @see {@link https://docs.discord.food/resources/message#message-type}
740
+ */
741
+ exports.MessageTypes = [
742
+ 'DEFAULT', // 0
743
+ 'RECIPIENT_ADD',
744
+ 'RECIPIENT_REMOVE',
745
+ 'CALL',
746
+ 'CHANNEL_NAME_CHANGE',
747
+ 'CHANNEL_ICON_CHANGE',
748
+ 'CHANNEL_PINNED_MESSAGE',
749
+ 'GUILD_MEMBER_JOIN',
750
+ 'USER_PREMIUM_GUILD_SUBSCRIPTION',
751
+ 'USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1',
752
+ 'USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2',
753
+ 'USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3',
754
+ 'CHANNEL_FOLLOW_ADD',
755
+ null, // 13
756
+ 'GUILD_DISCOVERY_DISQUALIFIED',
757
+ 'GUILD_DISCOVERY_REQUALIFIED',
758
+ 'GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING',
759
+ 'GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING',
760
+ 'THREAD_CREATED',
761
+ 'REPLY',
762
+ 'APPLICATION_COMMAND',
763
+ 'THREAD_STARTER_MESSAGE',
764
+ 'GUILD_INVITE_REMINDER',
765
+ 'CONTEXT_MENU_COMMAND',
766
+ 'AUTO_MODERATION_ACTION',
767
+ 'ROLE_SUBSCRIPTION_PURCHASE',
768
+ 'INTERACTION_PREMIUM_UPSELL',
769
+ 'STAGE_START',
770
+ 'STAGE_END',
771
+ 'STAGE_SPEAKER',
772
+ 'STAGE_RAISE_HAND',
773
+ 'STAGE_TOPIC',
774
+ 'GUILD_APPLICATION_PREMIUM_SUBSCRIPTION',
775
+ null, // 33
776
+ null,
777
+ 'PREMIUM_REFERRAL',
778
+ 'GUILD_INCIDENT_ALERT_MODE_ENABLED',
779
+ 'GUILD_INCIDENT_ALERT_MODE_DISABLED',
780
+ 'GUILD_INCIDENT_REPORT_RAID',
781
+ 'GUILD_INCIDENT_REPORT_FALSE_ALARM',
782
+ 'GUILD_DEADCHAT_REVIVE_PROMPT',
783
+ 'CUSTOM_GIFT',
784
+ 'GUILD_GAMING_STATS_PROMPT',
785
+ null,
786
+ 'PURCHASE_NOTIFICATION',
787
+ null,
788
+ 'POLL_RESULT',
789
+ 'CHANGELOG',
790
+ 'NITRO_NOTIFICATION',
791
+ ];
792
+
793
+ /**
794
+ * The type of a message reference, e.g. `DEFAULT`. Here are the available types:
795
+ * * DEFAULT
796
+ * * FORWARD
797
+ * @typedef {string} MessageReferenceType
798
+ * @see {@link https://discord.com/developers/docs/resources/message#message-reference-types}
799
+ */
800
+ exports.MessageReferenceTypes = createEnum([
801
+ 'DEFAULT', // 0
802
+ 'FORWARD',
803
+ ]);
804
+
805
+ /**
806
+ * The name of an item to be swept in Sweepers
807
+ * * `applicationCommands` - both global and guild commands
808
+ * * `autoModerationRules`
809
+ * * `bans`
810
+ * * `emojis`
811
+ * * `invites` - accepts the `lifetime` property, using it will sweep based on expires timestamp
812
+ * * `guildMembers`
813
+ * * `messages` - accepts the `lifetime` property, using it will sweep based on edited or created timestamp
814
+ * * `presences`
815
+ * * `reactions`
816
+ * * `stageInstances`
817
+ * * `stickers`
818
+ * * `threadMembers`
819
+ * * `threads` - accepts the `lifetime` property, using it will sweep archived threads based on archived timestamp
820
+ * * `users`
821
+ * * `voiceStates`
822
+ * @typedef {string} SweeperKey
823
+ */
824
+ exports.SweeperKeys = [
825
+ 'applicationCommands',
826
+ 'autoModerationRules',
827
+ 'bans',
828
+ 'emojis',
829
+ 'invites',
830
+ 'guildMembers',
831
+ 'messages',
832
+ 'presences',
833
+ 'reactions',
834
+ 'stageInstances',
835
+ 'stickers',
836
+ 'threadMembers',
837
+ 'threads',
838
+ 'users',
839
+ 'voiceStates',
840
+ ];
841
+
842
+ /**
843
+ * The types of messages that are `System`. The available types are `MessageTypes` excluding:
844
+ * * DEFAULT
845
+ * * REPLY
846
+ * * APPLICATION_COMMAND
847
+ * * CONTEXT_MENU_COMMAND
848
+ * @typedef {string} SystemMessageType
849
+ */
850
+ exports.SystemMessageTypes = exports.MessageTypes.filter(
851
+ type => type && !['DEFAULT', 'REPLY', 'APPLICATION_COMMAND', 'CONTEXT_MENU_COMMAND'].includes(type),
852
+ );
853
+
854
+ /**
855
+ * <info>Bots cannot set a `CUSTOM` activity type, it is only for custom statuses received from users</info>
856
+ * The type of an activity of a user's presence. Here are the available types:
857
+ * * PLAYING
858
+ * * STREAMING
859
+ * * LISTENING
860
+ * * WATCHING
861
+ * * CUSTOM
862
+ * * COMPETING
863
+ * * HANG
864
+ * @typedef {string} ActivityType
865
+ * @see {@link https://discord.com/developers/docs/game-sdk/activities#data-models-activitytype-enum}
866
+ */
867
+ exports.ActivityTypes = createEnum(['PLAYING', 'STREAMING', 'LISTENING', 'WATCHING', 'CUSTOM', 'COMPETING', 'HANG']);
868
+
869
+ /**
870
+ * All available channel types:
871
+ * * `GUILD_TEXT` - a guild text channel
872
+ * * `DM` - a DM channel
873
+ * * `GUILD_VOICE` - a guild voice channel
874
+ * * `GROUP_DM` - a group DM channel
875
+ * * `GUILD_CATEGORY` - a guild category channel
876
+ * * `GUILD_NEWS` - a guild news channel
877
+ * * `GUILD_STORE` - a guild store channel
878
+ * <warn>Store channels are deprecated and will be removed from Discord in March 2022. See
879
+ * [Self-serve Game Selling Deprecation](https://support-dev.discord.com/hc/en-us/articles/6309018858647)
880
+ * for more information.</warn>
881
+ * * `GUILD_NEWS_THREAD` - a guild news channel's public thread channel
882
+ * * `GUILD_PUBLIC_THREAD` - a guild text channel's public thread channel
883
+ * * `GUILD_PRIVATE_THREAD` - a guild text channel's private thread channel
884
+ * * `GUILD_STAGE_VOICE` - a guild stage voice channel
885
+ * * `GUILD_DIRECTORY` - the channel in a hub containing guilds
886
+ * * `GUILD_FORUM` - a channel that can only contain threads
887
+ * * `GUILD_MEDIA` - a channel that can only contain threads, similar to `GUILD_FORUM` channels
888
+ * * `UNKNOWN` - a generic channel of unknown type, could be Channel or GuildChannel
889
+ * @typedef {string} ChannelType
890
+ * @see {@link https://discord.com/developers/docs/resources/channel#channel-object-channel-types}
891
+ */
892
+ exports.ChannelTypes = createEnum([
893
+ 'GUILD_TEXT',
894
+ 'DM',
895
+ 'GUILD_VOICE',
896
+ 'GROUP_DM',
897
+ 'GUILD_CATEGORY',
898
+ 'GUILD_NEWS',
899
+ 'GUILD_STORE',
900
+ ...Array(3).fill(null),
901
+ // 10
902
+ 'GUILD_NEWS_THREAD',
903
+ 'GUILD_PUBLIC_THREAD',
904
+ 'GUILD_PRIVATE_THREAD',
905
+ 'GUILD_STAGE_VOICE',
906
+ 'GUILD_DIRECTORY',
907
+ 'GUILD_FORUM',
908
+ 'GUILD_MEDIA',
909
+ ]);
910
+
911
+ /**
912
+ * The channels that are text-based.
913
+ * * DMChannel
914
+ * * TextChannel
915
+ * * NewsChannel
916
+ * * ThreadChannel
917
+ * * VoiceChannel
918
+ * * StageChannel
919
+ * @typedef {DMChannel|TextChannel|NewsChannel|ThreadChannel|VoiceChannel|StageChannel} TextBasedChannels
920
+ */
921
+
922
+ /**
923
+ * Data that resolves to give a text-based channel. This can be:
924
+ * * A text-based channel
925
+ * * A snowflake
926
+ * @typedef {TextBasedChannels|Snowflake} TextBasedChannelsResolvable
927
+ */
928
+
929
+ /**
930
+ * The types of channels that are text-based. The available types are:
931
+ * * DM
932
+ * * GUILD_TEXT
933
+ * * GUILD_NEWS
934
+ * * GUILD_NEWS_THREAD
935
+ * * GUILD_PUBLIC_THREAD
936
+ * * GUILD_PRIVATE_THREAD
937
+ * * GUILD_VOICE
938
+ * * GUILD_STAGE_VOICE
939
+ * @typedef {string} TextBasedChannelTypes
940
+ */
941
+ exports.TextBasedChannelTypes = [
942
+ 'DM',
943
+ 'GUILD_TEXT',
944
+ 'GUILD_NEWS',
945
+ 'GUILD_NEWS_THREAD',
946
+ 'GUILD_PUBLIC_THREAD',
947
+ 'GUILD_PRIVATE_THREAD',
948
+ 'GUILD_VOICE',
949
+ 'GUILD_STAGE_VOICE',
950
+ ];
951
+
952
+ /**
953
+ * The types of channels that are threads. The available types are:
954
+ * * GUILD_NEWS_THREAD
955
+ * * GUILD_PUBLIC_THREAD
956
+ * * GUILD_PRIVATE_THREAD
957
+ * @typedef {string} ThreadChannelTypes
958
+ */
959
+ exports.ThreadChannelTypes = ['GUILD_NEWS_THREAD', 'GUILD_PUBLIC_THREAD', 'GUILD_PRIVATE_THREAD'];
960
+
961
+ /**
962
+ * The types of channels that are voice-based. The available types are:
963
+ * * GUILD_VOICE
964
+ * * GUILD_STAGE_VOICE
965
+ * @typedef {string} VoiceBasedChannelTypes
966
+ */
967
+ exports.VoiceBasedChannelTypes = ['GUILD_VOICE', 'GUILD_STAGE_VOICE'];
968
+
969
+ /**
970
+ * The types of assets of an application:
971
+ * * SMALL: 1
972
+ * * BIG: 2
973
+ * @typedef {Object<string, number>} ClientApplicationAssetTypes
974
+ */
975
+ exports.ClientApplicationAssetTypes = {
976
+ SMALL: 1,
977
+ BIG: 2,
978
+ };
979
+
980
+ /**
981
+ * A commonly used color:
982
+ * * DEFAULT
983
+ * * WHITE
984
+ * * AQUA
985
+ * * GREEN
986
+ * * BLUE
987
+ * * YELLOW
988
+ * * PURPLE
989
+ * * LUMINOUS_VIVID_PINK
990
+ * * FUCHSIA
991
+ * * GOLD
992
+ * * ORANGE
993
+ * * RED
994
+ * * GREY
995
+ * * NAVY
996
+ * * DARK_AQUA
997
+ * * DARK_GREEN
998
+ * * DARK_BLUE
999
+ * * DARK_PURPLE
1000
+ * * DARK_VIVID_PINK
1001
+ * * DARK_GOLD
1002
+ * * DARK_ORANGE
1003
+ * * DARK_RED
1004
+ * * DARK_GREY
1005
+ * * DARKER_GREY
1006
+ * * LIGHT_GREY
1007
+ * * DARK_NAVY
1008
+ * * BLURPLE
1009
+ * * GREYPLE
1010
+ * * DARK_BUT_NOT_BLACK
1011
+ * * NOT_QUITE_BLACK
1012
+ * @typedef {string} Color
1013
+ */
1014
+ exports.Colors = {
1015
+ DEFAULT: 0x000000,
1016
+ WHITE: 0xffffff,
1017
+ AQUA: 0x1abc9c,
1018
+ GREEN: 0x57f287,
1019
+ BLUE: 0x3498db,
1020
+ YELLOW: 0xfee75c,
1021
+ PURPLE: 0x9b59b6,
1022
+ LUMINOUS_VIVID_PINK: 0xe91e63,
1023
+ FUCHSIA: 0xeb459e,
1024
+ GOLD: 0xf1c40f,
1025
+ ORANGE: 0xe67e22,
1026
+ RED: 0xed4245,
1027
+ GREY: 0x95a5a6,
1028
+ NAVY: 0x34495e,
1029
+ DARK_AQUA: 0x11806a,
1030
+ DARK_GREEN: 0x1f8b4c,
1031
+ DARK_BLUE: 0x206694,
1032
+ DARK_PURPLE: 0x71368a,
1033
+ DARK_VIVID_PINK: 0xad1457,
1034
+ DARK_GOLD: 0xc27c0e,
1035
+ DARK_ORANGE: 0xa84300,
1036
+ DARK_RED: 0x992d22,
1037
+ DARK_GREY: 0x979c9f,
1038
+ DARKER_GREY: 0x7f8c8d,
1039
+ LIGHT_GREY: 0xbcc0c0,
1040
+ DARK_NAVY: 0x2c3e50,
1041
+ BLURPLE: 0x5865f2,
1042
+ GREYPLE: 0x99aab5,
1043
+ DARK_BUT_NOT_BLACK: 0x2c2f33,
1044
+ NOT_QUITE_BLACK: 0x23272a,
1045
+ };
1046
+
1047
+ /**
1048
+ * Holographic color values for role styling.
1049
+ * When using `tertiaryColor`, the API enforces these specific values for holographic effect.
1050
+ *
1051
+ * * PRIMARY: 11127295 (0xA9FFFF)
1052
+ * * SECONDARY: 16759788 (0xFFCCCC)
1053
+ * * TERTIARY: 16761760 (0xFFE0A0)
1054
+ * @typedef {Object<string, number>} HolographicStyle
1055
+ */
1056
+ exports.HolographicStyles = {
1057
+ PRIMARY: 11_127_295,
1058
+ SECONDARY: 16_759_788,
1059
+ TERTIARY: 16_761_760,
1060
+ };
1061
+
1062
+ /**
1063
+ * The value set for the explicit content filter levels for a guild:
1064
+ * * DISABLED
1065
+ * * MEMBERS_WITHOUT_ROLES
1066
+ * * ALL_MEMBERS
1067
+ * @typedef {string} ExplicitContentFilterLevel
1068
+ * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-explicit-content-filter-level}
1069
+ */
1070
+ exports.ExplicitContentFilterLevels = createEnum(['DISABLED', 'MEMBERS_WITHOUT_ROLES', 'ALL_MEMBERS']);
1071
+
1072
+ /**
1073
+ * The value set for the verification levels for a guild:
1074
+ * * NONE
1075
+ * * LOW
1076
+ * * MEDIUM
1077
+ * * HIGH
1078
+ * * VERY_HIGH
1079
+ * @typedef {string} VerificationLevel
1080
+ * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-verification-level}
1081
+ */
1082
+ exports.VerificationLevels = createEnum(['NONE', 'LOW', 'MEDIUM', 'HIGH', 'VERY_HIGH']);
1083
+
1084
+ /**
1085
+ * An error encountered while performing an API request. Here are the potential errors:
1086
+ * * UNKNOWN_ACCOUNT
1087
+ * * UNKNOWN_APPLICATION
1088
+ * * UNKNOWN_CHANNEL
1089
+ * * UNKNOWN_GUILD
1090
+ * * UNKNOWN_INTEGRATION
1091
+ * * UNKNOWN_INVITE
1092
+ * * UNKNOWN_MEMBER
1093
+ * * UNKNOWN_MESSAGE
1094
+ * * UNKNOWN_OVERWRITE
1095
+ * * UNKNOWN_PROVIDER
1096
+ * * UNKNOWN_ROLE
1097
+ * * UNKNOWN_TOKEN
1098
+ * * UNKNOWN_USER
1099
+ * * UNKNOWN_EMOJI
1100
+ * * UNKNOWN_WEBHOOK
1101
+ * * UNKNOWN_WEBHOOK_SERVICE
1102
+ * * UNKNOWN_SESSION
1103
+ * * UNKNOWN_BAN
1104
+ * * UNKNOWN_SKU
1105
+ * * UNKNOWN_STORE_LISTING
1106
+ * * UNKNOWN_ENTITLEMENT
1107
+ * * UNKNOWN_BUILD
1108
+ * * UNKNOWN_LOBBY
1109
+ * * UNKNOWN_BRANCH
1110
+ * * UNKNOWN_STORE_DIRECTORY_LAYOUT
1111
+ * * UNKNOWN_REDISTRIBUTABLE
1112
+ * * UNKNOWN_GIFT_CODE
1113
+ * * UNKNOWN_STREAM
1114
+ * * UNKNOWN_PREMIUM_SERVER_SUBSCRIBE_COOLDOWN
1115
+ * * UNKNOWN_GUILD_TEMPLATE
1116
+ * * UNKNOWN_DISCOVERABLE_SERVER_CATEGORY
1117
+ * * UNKNOWN_STICKER
1118
+ * * UNKNOWN_INTERACTION
1119
+ * * UNKNOWN_APPLICATION_COMMAND
1120
+ * * UNKNOWN_APPLICATION_COMMAND_PERMISSIONS
1121
+ * * UNKNOWN_STAGE_INSTANCE
1122
+ * * UNKNOWN_GUILD_MEMBER_VERIFICATION_FORM
1123
+ * * UNKNOWN_GUILD_WELCOME_SCREEN
1124
+ * * UNKNOWN_GUILD_SCHEDULED_EVENT
1125
+ * * UNKNOWN_GUILD_SCHEDULED_EVENT_USER
1126
+ * * BOT_PROHIBITED_ENDPOINT
1127
+ * * BOT_ONLY_ENDPOINT
1128
+ * * CANNOT_SEND_EXPLICIT_CONTENT
1129
+ * * NOT_AUTHORIZED
1130
+ * * SLOWMODE_RATE_LIMIT
1131
+ * * ACCOUNT_OWNER_ONLY
1132
+ * * ANNOUNCEMENT_EDIT_LIMIT_EXCEEDED
1133
+ * * CHANNEL_HIT_WRITE_RATELIMIT
1134
+ * * SERVER_HIT_WRITE_RATELIMIT
1135
+ * * CONTENT_NOT_ALLOWED
1136
+ * * GUILD_PREMIUM_LEVEL_TOO_LOW
1137
+ * * MAXIMUM_GUILDS
1138
+ * * MAXIMUM_FRIENDS
1139
+ * * MAXIMUM_PINS
1140
+ * * MAXIMUM_RECIPIENTS
1141
+ * * MAXIMUM_ROLES
1142
+ * * MAXIMUM_WEBHOOKS
1143
+ * * MAXIMUM_EMOJIS
1144
+ * * MAXIMUM_REACTIONS
1145
+ * * MAXIMUM_CHANNELS
1146
+ * * MAXIMUM_ATTACHMENTS
1147
+ * * MAXIMUM_INVITES
1148
+ * * MAXIMUM_ANIMATED_EMOJIS
1149
+ * * MAXIMUM_SERVER_MEMBERS
1150
+ * * MAXIMUM_NUMBER_OF_SERVER_CATEGORIES
1151
+ * * GUILD_ALREADY_HAS_TEMPLATE
1152
+ * * MAXIMUM_THREAD_PARTICIPANTS
1153
+ * * MAXIMUM_NON_GUILD_MEMBERS_BANS
1154
+ * * MAXIMUM_BAN_FETCHES
1155
+ * * MAXIMUM_NUMBER_OF_UNCOMPLETED_GUILD_SCHEDULED_EVENTS_REACHED
1156
+ * * MAXIMUM_NUMBER_OF_STICKERS_REACHED
1157
+ * * MAXIMUM_PRUNE_REQUESTS
1158
+ * * MAXIMUM_GUILD_WIDGET_SETTINGS_UPDATE
1159
+ * * UNAUTHORIZED
1160
+ * * ACCOUNT_VERIFICATION_REQUIRED
1161
+ * * DIRECT_MESSAGES_TOO_FAST
1162
+ * * REQUEST_ENTITY_TOO_LARGE
1163
+ * * FEATURE_TEMPORARILY_DISABLED
1164
+ * * USER_BANNED
1165
+ * * TARGET_USER_NOT_CONNECTED_TO_VOICE
1166
+ * * ALREADY_CROSSPOSTED
1167
+ * * MISSING_ACCESS
1168
+ * * INVALID_ACCOUNT_TYPE
1169
+ * * CANNOT_EXECUTE_ON_DM
1170
+ * * EMBED_DISABLED
1171
+ * * CANNOT_EDIT_MESSAGE_BY_OTHER
1172
+ * * CANNOT_SEND_EMPTY_MESSAGE
1173
+ * * CANNOT_MESSAGE_USER
1174
+ * * CANNOT_SEND_MESSAGES_IN_VOICE_CHANNEL
1175
+ * * CHANNEL_VERIFICATION_LEVEL_TOO_HIGH
1176
+ * * OAUTH2_APPLICATION_BOT_ABSENT
1177
+ * * MAXIMUM_OAUTH2_APPLICATIONS
1178
+ * * INVALID_OAUTH_STATE
1179
+ * * MISSING_PERMISSIONS
1180
+ * * INVALID_AUTHENTICATION_TOKEN
1181
+ * * NOTE_TOO_LONG
1182
+ * * INVALID_BULK_DELETE_QUANTITY
1183
+ * * CANNOT_PIN_MESSAGE_IN_OTHER_CHANNEL
1184
+ * * INVALID_OR_TAKEN_INVITE_CODE
1185
+ * * CANNOT_EXECUTE_ON_SYSTEM_MESSAGE
1186
+ * * CANNOT_EXECUTE_ON_CHANNEL_TYPE
1187
+ * * INVALID_OAUTH_TOKEN
1188
+ * * MISSING_OAUTH_SCOPE
1189
+ * * INVALID_WEBHOOK_TOKEN
1190
+ * * INVALID_ROLE
1191
+ * * INVALID_RECIPIENTS
1192
+ * * BULK_DELETE_MESSAGE_TOO_OLD
1193
+ * * INVALID_FORM_BODY
1194
+ * * INVITE_ACCEPTED_TO_GUILD_NOT_CONTAINING_BOT
1195
+ * * INVALID_API_VERSION
1196
+ * * FILE_UPLOADED_EXCEEDS_MAXIMUM_SIZE
1197
+ * * INVALID_FILE_UPLOADED
1198
+ * * CANNOT_SELF_REDEEM_GIFT
1199
+ * * INVALID_GUILD
1200
+ * * INVALID_MESSAGE_TYPE
1201
+ * * PAYMENT_SOURCE_REQUIRED
1202
+ * * CANNOT_DELETE_COMMUNITY_REQUIRED_CHANNEL
1203
+ * * INVALID_STICKER_SENT
1204
+ * * INVALID_OPERATION_ON_ARCHIVED_THREAD
1205
+ * * INVALID_THREAD_NOTIFICATION_SETTINGS
1206
+ * * PARAMETER_EARLIER_THAN_CREATION
1207
+ * * GUILD_NOT_AVAILABLE_IN_LOCATION
1208
+ * * GUILD_MONETIZATION_REQUIRED
1209
+ * * INSUFFICIENT_BOOSTS
1210
+ * * INVALID_JSON
1211
+ * * TWO_FACTOR_REQUIRED
1212
+ * * NO_USERS_WITH_DISCORDTAG_EXIST
1213
+ * * REACTION_BLOCKED
1214
+ * * RESOURCE_OVERLOADED
1215
+ * * STAGE_ALREADY_OPEN
1216
+ * * CANNOT_REPLY_WITHOUT_READ_MESSAGE_HISTORY_PERMISSION
1217
+ * * MESSAGE_ALREADY_HAS_THREAD
1218
+ * * THREAD_LOCKED
1219
+ * * MAXIMUM_ACTIVE_THREADS
1220
+ * * MAXIMUM_ACTIVE_ANNOUNCEMENT_THREADS
1221
+ * * INVALID_JSON_FOR_UPLOADED_LOTTIE_FILE
1222
+ * * UPLOADED_LOTTIES_CANNOT_CONTAIN_RASTERIZED_IMAGES
1223
+ * * STICKER_MAXIMUM_FRAMERATE_EXCEEDED
1224
+ * * STICKER_FRAME_COUNT_EXCEEDS_MAXIMUM_OF_1000_FRAMES
1225
+ * * LOTTIE_ANIMATION_MAXIMUM_DIMENSIONS_EXCEEDED
1226
+ * * STICKER_FRAME_RATE_IS_TOO_SMALL_OR_TOO_LARGE
1227
+ * * STICKER_ANIMATION_DURATION_EXCEEDS_MAXIMUM_OF_5_SECONDS
1228
+ * * CANNOT_UPDATE_A_FINISHED_EVENT
1229
+ * * FAILED_TO_CREATE_STAGE_NEEDED_FOR_STAGE_EVENT
1230
+ * @typedef {string} APIError
1231
+ * @see {@link https://discord.com/developers/docs/topics/opcodes-and-status-codes#json-json-error-codes}
1232
+ * @see {@link https://gist.github.com/Dziurwa14/de2498e5ee28d2089f095aa037957cbb}
1233
+ */
1234
+ exports.APIErrors = {
1235
+ UNKNOWN_ACCOUNT: 10001,
1236
+ UNKNOWN_APPLICATION: 10002,
1237
+ UNKNOWN_CHANNEL: 10003,
1238
+ UNKNOWN_GUILD: 10004,
1239
+ UNKNOWN_INTEGRATION: 10005,
1240
+ UNKNOWN_INVITE: 10006,
1241
+ UNKNOWN_MEMBER: 10007,
1242
+ UNKNOWN_MESSAGE: 10008,
1243
+ UNKNOWN_OVERWRITE: 10009,
1244
+ UNKNOWN_PROVIDER: 10010,
1245
+ UNKNOWN_ROLE: 10011,
1246
+ UNKNOWN_TOKEN: 10012,
1247
+ UNKNOWN_USER: 10013,
1248
+ UNKNOWN_EMOJI: 10014,
1249
+ UNKNOWN_WEBHOOK: 10015,
1250
+ UNKNOWN_WEBHOOK_SERVICE: 10016,
1251
+ UNKNOWN_SESSION: 10020,
1252
+ UNKNOWN_BAN: 10026,
1253
+ UNKNOWN_SKU: 10027,
1254
+ UNKNOWN_STORE_LISTING: 10028,
1255
+ UNKNOWN_ENTITLEMENT: 10029,
1256
+ UNKNOWN_BUILD: 10030,
1257
+ UNKNOWN_LOBBY: 10031,
1258
+ UNKNOWN_BRANCH: 10032,
1259
+ UNKNOWN_STORE_DIRECTORY_LAYOUT: 10033,
1260
+ UNKNOWN_REDISTRIBUTABLE: 10036,
1261
+ UNKNOWN_GIFT_CODE: 10038,
1262
+ UNKNOWN_STREAM: 10049,
1263
+ UNKNOWN_PREMIUM_SERVER_SUBSCRIBE_COOLDOWN: 10050,
1264
+ UNKNOWN_GUILD_TEMPLATE: 10057,
1265
+ UNKNOWN_DISCOVERABLE_SERVER_CATEGORY: 10059,
1266
+ UNKNOWN_STICKER: 10060,
1267
+ UNKNOWN_INTERACTION: 10062,
1268
+ UNKNOWN_APPLICATION_COMMAND: 10063,
1269
+ UNKNOWN_APPLICATION_COMMAND_PERMISSIONS: 10066,
1270
+ UNKNOWN_STAGE_INSTANCE: 10067,
1271
+ UNKNOWN_GUILD_MEMBER_VERIFICATION_FORM: 10068,
1272
+ UNKNOWN_GUILD_WELCOME_SCREEN: 10069,
1273
+ UNKNOWN_GUILD_SCHEDULED_EVENT: 10070,
1274
+ UNKNOWN_GUILD_SCHEDULED_EVENT_USER: 10071,
1275
+ BOT_PROHIBITED_ENDPOINT: 20001,
1276
+ BOT_ONLY_ENDPOINT: 20002,
1277
+ CANNOT_SEND_EXPLICIT_CONTENT: 20009,
1278
+ NOT_AUTHORIZED: 20012,
1279
+ SLOWMODE_RATE_LIMIT: 20016,
1280
+ ACCOUNT_OWNER_ONLY: 20018,
1281
+ ANNOUNCEMENT_EDIT_LIMIT_EXCEEDED: 20022,
1282
+ CHANNEL_HIT_WRITE_RATELIMIT: 20028,
1283
+ SERVER_HIT_WRITE_RATELIMIT: 20029,
1284
+ CONTENT_NOT_ALLOWED: 20031,
1285
+ GUILD_PREMIUM_LEVEL_TOO_LOW: 20035,
1286
+ MAXIMUM_GUILDS: 30001,
1287
+ MAXIMUM_FRIENDS: 30002,
1288
+ MAXIMUM_PINS: 30003,
1289
+ MAXIMUM_RECIPIENTS: 30004,
1290
+ MAXIMUM_ROLES: 30005,
1291
+ MAXIMUM_WEBHOOKS: 30007,
1292
+ MAXIMUM_EMOJIS: 30008,
1293
+ MAXIMUM_REACTIONS: 30010,
1294
+ MAXIMUM_CHANNELS: 30013,
1295
+ MAXIMUM_ATTACHMENTS: 30015,
1296
+ MAXIMUM_INVITES: 30016,
1297
+ MAXIMUM_ANIMATED_EMOJIS: 30018,
1298
+ MAXIMUM_SERVER_MEMBERS: 30019,
1299
+ MAXIMUM_NUMBER_OF_SERVER_CATEGORIES: 30030,
1300
+ GUILD_ALREADY_HAS_TEMPLATE: 30031,
1301
+ MAXIMUM_THREAD_PARTICIPANTS: 30033,
1302
+ MAXIMUM_NON_GUILD_MEMBERS_BANS: 30035,
1303
+ MAXIMUM_BAN_FETCHES: 30037,
1304
+ MAXIMUM_NUMBER_OF_UNCOMPLETED_GUILD_SCHEDULED_EVENTS_REACHED: 30038,
1305
+ MAXIMUM_NUMBER_OF_STICKERS_REACHED: 30039,
1306
+ MAXIMUM_PRUNE_REQUESTS: 30040,
1307
+ MAXIMUM_GUILD_WIDGET_SETTINGS_UPDATE: 30042,
1308
+ MAXIMUM_NUMBER_OF_PREMIUM_EMOJIS: 30056,
1309
+ UNAUTHORIZED: 40001,
1310
+ ACCOUNT_VERIFICATION_REQUIRED: 40002,
1311
+ DIRECT_MESSAGES_TOO_FAST: 40003,
1312
+ REQUEST_ENTITY_TOO_LARGE: 40005,
1313
+ FEATURE_TEMPORARILY_DISABLED: 40006,
1314
+ USER_BANNED: 40007,
1315
+ TARGET_USER_NOT_CONNECTED_TO_VOICE: 40032,
1316
+ ALREADY_CROSSPOSTED: 40033,
1317
+ MISSING_ACCESS: 50001,
1318
+ INVALID_ACCOUNT_TYPE: 50002,
1319
+ CANNOT_EXECUTE_ON_DM: 50003,
1320
+ EMBED_DISABLED: 50004,
1321
+ CANNOT_EDIT_MESSAGE_BY_OTHER: 50005,
1322
+ CANNOT_SEND_EMPTY_MESSAGE: 50006,
1323
+ CANNOT_MESSAGE_USER: 50007,
1324
+ CANNOT_SEND_MESSAGES_IN_VOICE_CHANNEL: 50008,
1325
+ CHANNEL_VERIFICATION_LEVEL_TOO_HIGH: 50009,
1326
+ OAUTH2_APPLICATION_BOT_ABSENT: 50010,
1327
+ MAXIMUM_OAUTH2_APPLICATIONS: 50011,
1328
+ INVALID_OAUTH_STATE: 50012,
1329
+ MISSING_PERMISSIONS: 50013,
1330
+ INVALID_AUTHENTICATION_TOKEN: 50014,
1331
+ NOTE_TOO_LONG: 50015,
1332
+ INVALID_BULK_DELETE_QUANTITY: 50016,
1333
+ CANNOT_PIN_MESSAGE_IN_OTHER_CHANNEL: 50019,
1334
+ INVALID_OR_TAKEN_INVITE_CODE: 50020,
1335
+ CANNOT_EXECUTE_ON_SYSTEM_MESSAGE: 50021,
1336
+ CANNOT_EXECUTE_ON_CHANNEL_TYPE: 50024,
1337
+ INVALID_OAUTH_TOKEN: 50025,
1338
+ MISSING_OAUTH_SCOPE: 50026,
1339
+ INVALID_WEBHOOK_TOKEN: 50027,
1340
+ INVALID_ROLE: 50028,
1341
+ INVALID_RECIPIENTS: 50033,
1342
+ BULK_DELETE_MESSAGE_TOO_OLD: 50034,
1343
+ INVALID_FORM_BODY: 50035,
1344
+ INVITE_ACCEPTED_TO_GUILD_NOT_CONTAINING_BOT: 50036,
1345
+ INVALID_API_VERSION: 50041,
1346
+ FILE_UPLOADED_EXCEEDS_MAXIMUM_SIZE: 50045,
1347
+ INVALID_FILE_UPLOADED: 50046,
1348
+ CANNOT_SELF_REDEEM_GIFT: 50054,
1349
+ INVALID_GUILD: 50055,
1350
+ INVALID_MESSAGE_TYPE: 50068,
1351
+ PAYMENT_SOURCE_REQUIRED: 50070,
1352
+ CANNOT_DELETE_COMMUNITY_REQUIRED_CHANNEL: 50074,
1353
+ INVALID_STICKER_SENT: 50081,
1354
+ INVALID_OPERATION_ON_ARCHIVED_THREAD: 50083,
1355
+ INVALID_THREAD_NOTIFICATION_SETTINGS: 50084,
1356
+ PARAMETER_EARLIER_THAN_CREATION: 50085,
1357
+ GUILD_NOT_AVAILABLE_IN_LOCATION: 50095,
1358
+ GUILD_MONETIZATION_REQUIRED: 50097,
1359
+ INSUFFICIENT_BOOSTS: 50101,
1360
+ INVALID_JSON: 50109,
1361
+ CANNOT_MIX_SUBSCRIPTION_AND_NON_SUBSCRIPTION_ROLES_FOR_EMOJI: 50144,
1362
+ CANNOT_CONVERT_PREMIUM_EMOJI_TO_NORMAL_EMOJI: 50145,
1363
+ VOICE_MESSAGES_DO_NOT_SUPPORT_ADDITIONAL_CONTENT: 50159,
1364
+ VOICE_MESSAGES_MUST_HAVE_A_SINGLE_AUDIO_ATTACHMENT: 50160,
1365
+ VOICE_MESSAGES_MUST_HAVE_SUPPORTING_METADATA: 50161,
1366
+ VOICE_MESSAGES_CANNOT_BE_EDITED: 50162,
1367
+ YOU_CANNOT_SEND_VOICE_MESSAGES_IN_THIS_CHANNEL: 50173,
1368
+ TWO_FACTOR_REQUIRED: 60003,
1369
+ NO_USERS_WITH_DISCORDTAG_EXIST: 80004,
1370
+ REACTION_BLOCKED: 90001,
1371
+ RESOURCE_OVERLOADED: 130000,
1372
+ STAGE_ALREADY_OPEN: 150006,
1373
+ CANNOT_REPLY_WITHOUT_READ_MESSAGE_HISTORY_PERMISSION: 160002,
1374
+ MESSAGE_ALREADY_HAS_THREAD: 160004,
1375
+ THREAD_LOCKED: 160005,
1376
+ MAXIMUM_ACTIVE_THREADS: 160006,
1377
+ MAXIMUM_ACTIVE_ANNOUNCEMENT_THREADS: 160007,
1378
+ INVALID_JSON_FOR_UPLOADED_LOTTIE_FILE: 170001,
1379
+ UPLOADED_LOTTIES_CANNOT_CONTAIN_RASTERIZED_IMAGES: 170002,
1380
+ STICKER_MAXIMUM_FRAMERATE_EXCEEDED: 170003,
1381
+ STICKER_FRAME_COUNT_EXCEEDS_MAXIMUM_OF_1000_FRAMES: 170004,
1382
+ LOTTIE_ANIMATION_MAXIMUM_DIMENSIONS_EXCEEDED: 170005,
1383
+ STICKER_FRAME_RATE_IS_TOO_SMALL_OR_TOO_LARGE: 170006,
1384
+ STICKER_ANIMATION_DURATION_EXCEEDS_MAXIMUM_OF_5_SECONDS: 170007,
1385
+ CANNOT_UPDATE_A_FINISHED_EVENT: 180000,
1386
+ FAILED_TO_CREATE_STAGE_NEEDED_FOR_STAGE_EVENT: 180002,
1387
+ };
1388
+
1389
+ /**
1390
+ * The value set for a guild's default message notifications, e.g. `ALL_MESSAGES`. Here are the available types:
1391
+ * * ALL_MESSAGES
1392
+ * * ONLY_MENTIONS
1393
+ * @typedef {string} DefaultMessageNotificationLevel
1394
+ * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-default-message-notification-level}
1395
+ */
1396
+ exports.DefaultMessageNotificationLevels = createEnum(['ALL_MESSAGES', 'ONLY_MENTIONS']);
1397
+
1398
+ /**
1399
+ * The value set for a team member's membership state:
1400
+ * * INVITED
1401
+ * * ACCEPTED
1402
+ * @typedef {string} MembershipState
1403
+ * @see {@link https://discord.com/developers/docs/topics/teams#data-models-membership-state-enum}
1404
+ */
1405
+ exports.MembershipStates = createEnum([null, 'INVITED', 'ACCEPTED']);
1406
+
1407
+ /**
1408
+ * The value set for a webhook's type:
1409
+ * * Incoming
1410
+ * * Channel Follower
1411
+ * * Application
1412
+ * @typedef {string} WebhookType
1413
+ * @see {@link https://discord.com/developers/docs/resources/webhook#webhook-object-webhook-types}
1414
+ */
1415
+ exports.WebhookTypes = createEnum([null, 'Incoming', 'Channel Follower', 'Application']);
1416
+
1417
+ /**
1418
+ * The value set for a sticker's type:
1419
+ * * STANDARD
1420
+ * * GUILD
1421
+ * @typedef {string} StickerType
1422
+ * @see {@link https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-types}
1423
+ */
1424
+ exports.StickerTypes = createEnum([null, 'STANDARD', 'GUILD']);
1425
+
1426
+ /**
1427
+ * The value set for a sticker's format type:
1428
+ * * PNG
1429
+ * * APNG
1430
+ * * LOTTIE
1431
+ * * GIF
1432
+ * @typedef {string} StickerFormatType
1433
+ * @see {@link https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-format-types}
1434
+ */
1435
+ exports.StickerFormatTypes = createEnum([null, 'PNG', 'APNG', 'LOTTIE', 'GIF']);
1436
+
1437
+ /**
1438
+ * An overwrite type:
1439
+ * * role
1440
+ * * member
1441
+ * @typedef {string} OverwriteType
1442
+ * @see {@link https://discord.com/developers/docs/resources/channel#overwrite-object-overwrite-structure}
1443
+ */
1444
+ exports.OverwriteTypes = createEnum(['role', 'member']);
1445
+
1446
+ /* eslint-disable max-len */
1447
+ /**
1448
+ * The type of an {@link ApplicationCommand} object:
1449
+ * * CHAT_INPUT
1450
+ * * USER
1451
+ * * MESSAGE
1452
+ * @typedef {string} ApplicationCommandType
1453
+ * @see {@link https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-types}
1454
+ */
1455
+ exports.ApplicationCommandTypes = createEnum([null, 'CHAT_INPUT', 'USER', 'MESSAGE']);
1456
+
1457
+ /**
1458
+ * The type of an {@link ApplicationCommandOption} object:
1459
+ * * SUB_COMMAND
1460
+ * * SUB_COMMAND_GROUP
1461
+ * * STRING
1462
+ * * INTEGER
1463
+ * * BOOLEAN
1464
+ * * USER
1465
+ * * CHANNEL
1466
+ * * ROLE
1467
+ * * MENTIONABLE
1468
+ * * NUMBER
1469
+ * * ATTACHMENT
1470
+ * @typedef {string} ApplicationCommandOptionType
1471
+ * @see {@link https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type}
1472
+ */
1473
+ exports.ApplicationCommandOptionTypes = createEnum([
1474
+ null,
1475
+ 'SUB_COMMAND',
1476
+ 'SUB_COMMAND_GROUP',
1477
+ 'STRING',
1478
+ 'INTEGER',
1479
+ 'BOOLEAN',
1480
+ 'USER',
1481
+ 'CHANNEL',
1482
+ 'ROLE',
1483
+ 'MENTIONABLE',
1484
+ 'NUMBER',
1485
+ 'ATTACHMENT',
1486
+ ]);
1487
+
1488
+ /**
1489
+ * The type of an {@link ApplicationCommandPermissions} object:
1490
+ * * ROLE
1491
+ * * USER
1492
+ * @typedef {string} ApplicationCommandPermissionType
1493
+ * @see {@link https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-application-command-permission-type}
1494
+ */
1495
+ exports.ApplicationCommandPermissionTypes = createEnum([null, 'ROLE', 'USER']);
1496
+
1497
+ /**
1498
+ * Each metadata type offers a comparison operation that allows
1499
+ * guilds to configure role requirements based on metadata values stored by the bot.
1500
+ * Bots specify a metadata value for each user and guilds specify
1501
+ * the required guild's configured value within the guild role settings.
1502
+ * All available channel types:
1503
+ * * INTEGER_LESS_THAN_OR_EQUAL
1504
+ * * INTEGER_GREATER_THAN_OR_EQUAL
1505
+ * * INTEGER_EQUAL
1506
+ * * INTEGER_NOT_EQUAL
1507
+ * * DATATIME_LESS_THAN_OR_EQUAL
1508
+ * * DATATIME_GREATER_THAN_OR_EQUAL
1509
+ * * BOOLEAN_EQUAL
1510
+ * * BOOLEAN_NOT_EQUAL
1511
+ * @typedef {string} ApplicationRoleConnectionMetadataType
1512
+ * @see{@link https://discord.com/developers/docs/resources/application-role-connection-metadata#application-role-connection-metadata-object-application-role-connection-metadata-type}
1513
+ */
1514
+ exports.ApplicationRoleConnectionMetadataTypes = createEnum([
1515
+ null,
1516
+ 'INTEGER_LESS_THAN_OR_EQUAL',
1517
+ 'INTEGER_GREATER_THAN_OR_EQUAL',
1518
+ 'INTEGER_EQUAL',
1519
+ 'INTEGER_NOT_EQUAL',
1520
+ 'DATATIME_LESS_THAN_OR_EQUAL',
1521
+ 'DATATIME_GREATER_THAN_OR_EQUAL',
1522
+ 'BOOLEAN_EQUAL',
1523
+ 'BOOLEAN_NOT_EQUAL',
1524
+ ]);
1525
+
1526
+ /**
1527
+ * The type of an {@link AutoModerationRuleTriggerTypes} object:
1528
+ * * KEYWORD
1529
+ * * SPAM
1530
+ * * KEYWORD_PRESET
1531
+ * * MENTION_SPAM
1532
+ * @typedef {string} AutoModerationRuleTriggerType
1533
+ * @see {@link https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-trigger-types}
1534
+ */
1535
+ exports.AutoModerationRuleTriggerTypes = createEnum([null, 'KEYWORD', null, 'SPAM', 'KEYWORD_PRESET', 'MENTION_SPAM']);
1536
+
1537
+ /**
1538
+ * The type of an {@link AutoModerationRuleKeywordPresetTypes} object:
1539
+ * * KEYWORD
1540
+ * * SPAM
1541
+ * * KEYWORD_PRESET
1542
+ * * MENTION_SPAM
1543
+ * @typedef {string} AutoModerationRuleKeywordPresetType
1544
+ * @see {@link https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-preset-types}
1545
+ */
1546
+ exports.AutoModerationRuleKeywordPresetTypes = createEnum([null, 'PROFANITY', 'SEXUAL_CONTENT', 'SLURS']);
1547
+ /**
1548
+ * The type of an {@link AutoModerationActionTypes} object:
1549
+ * * BLOCK_MESSAGE
1550
+ * * SEND_ALERT_MESSAGE
1551
+ * * TIMEOUT
1552
+ * @typedef {string} AutoModerationActionType
1553
+ * @see {@link https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-types}
1554
+ */
1555
+ exports.AutoModerationActionTypes = createEnum([null, 'BLOCK_MESSAGE', 'SEND_ALERT_MESSAGE', 'TIMEOUT']);
1556
+
1557
+ /**
1558
+ * The type of an {@link AutoModerationRuleEventTypes} object:
1559
+ * * MESSAGE_SEND
1560
+ * @typedef {string} AutoModerationRuleEventType
1561
+ * @see {@link https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-event-types}
1562
+ */
1563
+
1564
+ exports.AutoModerationRuleEventTypes = createEnum([null, 'MESSAGE_SEND']);
1565
+ /**
1566
+ * The type of an {@link Interaction} object:
1567
+ * * PING
1568
+ * * APPLICATION_COMMAND
1569
+ * * MESSAGE_COMPONENT
1570
+ * * APPLICATION_COMMAND_AUTOCOMPLETE
1571
+ * * MODAL_SUBMIT
1572
+ * @typedef {string} InteractionType
1573
+ * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-type}
1574
+ */
1575
+ exports.InteractionTypes = createEnum([
1576
+ null,
1577
+ 'PING',
1578
+ 'APPLICATION_COMMAND',
1579
+ 'MESSAGE_COMPONENT',
1580
+ 'APPLICATION_COMMAND_AUTOCOMPLETE',
1581
+ 'MODAL_SUBMIT',
1582
+ ]);
1583
+
1584
+ /**
1585
+ * The type of an interaction response:
1586
+ * * PONG
1587
+ * * CHANNEL_MESSAGE_WITH_SOURCE
1588
+ * * DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE
1589
+ * * DEFERRED_MESSAGE_UPDATE
1590
+ * * UPDATE_MESSAGE
1591
+ * * APPLICATION_COMMAND_AUTOCOMPLETE_RESULT
1592
+ * * MODAL
1593
+ * @typedef {string} InteractionResponseType
1594
+ * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-response-object-interaction-callback-type}
1595
+ */
1596
+ exports.InteractionResponseTypes = createEnum([
1597
+ null,
1598
+ 'PONG',
1599
+ null,
1600
+ null,
1601
+ 'CHANNEL_MESSAGE_WITH_SOURCE',
1602
+ 'DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE',
1603
+ 'DEFERRED_MESSAGE_UPDATE',
1604
+ 'UPDATE_MESSAGE',
1605
+ 'APPLICATION_COMMAND_AUTOCOMPLETE_RESULT',
1606
+ 'MODAL',
1607
+ ]);
1608
+
1609
+ /**
1610
+ * The type of a message component
1611
+ * * ACTION_ROW
1612
+ * * BUTTON
1613
+ * * STRING_SELECT
1614
+ * * TEXT_INPUT
1615
+ * * USER_SELECT
1616
+ * * ROLE_SELECT
1617
+ * * MENTIONABLE_SELECT
1618
+ * * CHANNEL_SELECT
1619
+ * @typedef {string} MessageComponentType
1620
+ * @see {@link https://discord.com/developers/docs/interactions/message-components#component-object-component-types}
1621
+ */
1622
+ exports.MessageComponentTypes = createEnum([
1623
+ null,
1624
+ 'ACTION_ROW',
1625
+ 'BUTTON',
1626
+ 'STRING_SELECT',
1627
+ 'TEXT_INPUT',
1628
+ 'USER_SELECT',
1629
+ 'ROLE_SELECT',
1630
+ 'MENTIONABLE_SELECT',
1631
+ 'CHANNEL_SELECT',
1632
+ 'SECTION',
1633
+ 'TEXT_DISPLAY',
1634
+ 'THUMBNAIL',
1635
+ 'MEDIA_GALLERY',
1636
+ 'FILE',
1637
+ 'SEPARATOR',
1638
+ null,
1639
+ null,
1640
+ 'CONTAINER',
1641
+ ]);
1642
+
1643
+ /**
1644
+ * The types of components that are select menus. The available types are:
1645
+ * * STRING_MENU
1646
+ * * USER_SELECT
1647
+ * * ROLE_SELECT
1648
+ * * MENTIONABLE_SELECT
1649
+ * * CHANNEL_SELECT
1650
+ * @typedef {string} SelectMenuComponentType
1651
+ * @see {@link https://discord.com/developers/docs/interactions/message-components#component-object-component-types}
1652
+ */
1653
+ exports.SelectMenuComponentTypes = createEnum([
1654
+ ...new Array(3).fill(null),
1655
+ 'STRING_MENU',
1656
+ null,
1657
+ 'USER_SELECT',
1658
+ 'ROLE_SELECT',
1659
+ 'MENTIONABLE_SELECT',
1660
+ 'CHANNEL_SELECT',
1661
+ ]);
1662
+
1663
+ /**
1664
+ * The style of a message button
1665
+ * * PRIMARY
1666
+ * * SECONDARY
1667
+ * * SUCCESS
1668
+ * * DANGER
1669
+ * * LINK
1670
+ * @typedef {string} MessageButtonStyle
1671
+ * @see {@link https://discord.com/developers/docs/interactions/message-components#button-object-button-styles}
1672
+ */
1673
+ exports.MessageButtonStyles = createEnum([null, 'PRIMARY', 'SECONDARY', 'SUCCESS', 'DANGER', 'LINK']);
1674
+
1675
+ /**
1676
+ * The required MFA level for a guild
1677
+ * * NONE
1678
+ * * ELEVATED
1679
+ * @typedef {string} MFALevel
1680
+ * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-mfa-level}
1681
+ */
1682
+ exports.MFALevels = createEnum(['NONE', 'ELEVATED']);
1683
+
1684
+ /**
1685
+ * NSFW level of a Guild:
1686
+ * * DEFAULT
1687
+ * * EXPLICIT
1688
+ * * SAFE
1689
+ * * AGE_RESTRICTED
1690
+ * @typedef {string} NSFWLevel
1691
+ * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-guild-nsfw-level}
1692
+ */
1693
+ exports.NSFWLevels = createEnum(['DEFAULT', 'EXPLICIT', 'SAFE', 'AGE_RESTRICTED']);
1694
+
1695
+ /**
1696
+ * Privacy level of a {@link StageInstance} object:
1697
+ * * PUBLIC
1698
+ * * GUILD_ONLY
1699
+ * @typedef {string} PrivacyLevel
1700
+ * @see {@link https://discord.com/developers/docs/resources/stage-instance#stage-instance-object-privacy-level}
1701
+ */
1702
+ exports.PrivacyLevels = createEnum([null, 'PUBLIC', 'GUILD_ONLY']);
1703
+
1704
+ /**
1705
+ * The style of a text input component
1706
+ * * SHORT
1707
+ * * PARAGRAPH
1708
+ * @typedef {string} TextInputStyle
1709
+ * @see {@link https://discord.com/developers/docs/interactions/message-components#text-inputs-text-input-styles}
1710
+ */
1711
+ exports.TextInputStyles = createEnum([null, 'SHORT', 'PARAGRAPH']);
1712
+
1713
+ /**
1714
+ * Privacy level of a {@link GuildScheduledEvent} object:
1715
+ * * GUILD_ONLY
1716
+ * @typedef {string} GuildScheduledEventPrivacyLevel
1717
+ * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level}
1718
+ */
1719
+ exports.GuildScheduledEventPrivacyLevels = createEnum([null, null, 'GUILD_ONLY']);
1720
+
1721
+ /**
1722
+ * The premium tier (Server Boost level) of a guild:
1723
+ * * NONE
1724
+ * * TIER_1
1725
+ * * TIER_2
1726
+ * * TIER_3
1727
+ * @typedef {string} PremiumTier
1728
+ * @see {@link https://discord.com/developers/docs/resources/guild#guild-object-premium-tier}
1729
+ */
1730
+ exports.PremiumTiers = createEnum(['NONE', 'TIER_1', 'TIER_2', 'TIER_3']);
1731
+
1732
+ /**
1733
+ * The status of a {@link GuildScheduledEvent}:
1734
+ * * SCHEDULED
1735
+ * * ACTIVE
1736
+ * * COMPLETED
1737
+ * * CANCELED
1738
+ * @typedef {string} GuildScheduledEventStatus
1739
+ * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status}
1740
+ */
1741
+ exports.GuildScheduledEventStatuses = createEnum([null, 'SCHEDULED', 'ACTIVE', 'COMPLETED', 'CANCELED']);
1742
+
1743
+ /**
1744
+ * The entity type of a {@link GuildScheduledEvent}:
1745
+ * * NONE
1746
+ * * STAGE_INSTANCE
1747
+ * * VOICE
1748
+ * * EXTERNAL
1749
+ * @typedef {string} GuildScheduledEventEntityType
1750
+ * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types}
1751
+ */
1752
+ exports.GuildScheduledEventEntityTypes = createEnum([null, 'STAGE_INSTANCE', 'VOICE', 'EXTERNAL']);
1753
+ /* eslint-enable max-len */
1754
+
1755
+ /**
1756
+ * The camera video quality mode of a {@link VoiceChannel}:
1757
+ * * AUTO
1758
+ * * FULL
1759
+ * @typedef {string} VideoQualityMode
1760
+ * @see {@link https://discord.com/developers/docs/resources/channel#channel-object-video-quality-modes}
1761
+ */
1762
+ exports.VideoQualityModes = createEnum([null, 'AUTO', 'FULL']);
1763
+
1764
+ /**
1765
+ * The type of reaction
1766
+ * * NORMAL
1767
+ * * BURST
1768
+ * @typedef {string} ReactionType
1769
+ * @see {@link https://discord.com/developers/docs/resources/channel#channel-object-video-quality-modes}
1770
+ */
1771
+ exports.ReactionTypes = createEnum(['NORMAL', 'BURST']);
1772
+
1773
+ /**
1774
+ * Sort {@link ThreadOnlyChannel} posts by creation time or activity
1775
+ * * LATEST_ACTIVITY
1776
+ * * CREATION_DATE
1777
+ * @typedef {string} SortOrderType
1778
+ * @see {@link https://discord.com/developers/docs/resources/channel/#channel-object-sort-order-types}
1779
+ */
1780
+ exports.SortOrderTypes = createEnum([null, 'LATEST_ACTIVITY', 'CREATION_DATE']);
1781
+
1782
+ /**
1783
+ * The default forum layout to set on the {@link ForumChannel}
1784
+ * * NOT_SET
1785
+ * * LIST_VIEW
1786
+ * * GALLERY_VIEW
1787
+ * @typedef {string} ForumLayoutType
1788
+ * @see {@link https://discord.com/developers/docs/resources/channel/#channel-object-forum-layout-types}
1789
+ */
1790
+ exports.ForumLayoutTypes = createEnum(['NOT_SET', 'LIST_VIEW', 'GALLERY_VIEW']);
1791
+
1792
+ /**
1793
+ * Different layouts for {@link MessagePoll} will come in the future. For now though, this value will always be `DEFAULT`.
1794
+ * * DEFAULT
1795
+ * * IMAGE_ONLY_ANSWERS
1796
+ * @typedef {string} PollLayoutType
1797
+ * @see {@link https://docs.discord.food/resources/message#poll-layout-type}
1798
+ */
1799
+ exports.PollLayoutTypes = createEnum([null, 'DEFAULT', 'IMAGE_ONLY_ANSWERS']);
1800
+
1801
+ /**
1802
+ * Relationship Enums:
1803
+ * * 0: NONE
1804
+ * * 1: FRIEND
1805
+ * * 2: BLOCKED
1806
+ * * 3: PENDING_INCOMING
1807
+ * * 4: PENDING_OUTGOING
1808
+ * * 5: IMPLICIT
1809
+ * @typedef {string} RelationshipType
1810
+ * @see {@link https://luna.gitlab.io/discord-unofficial-docs/relationships.html}
1811
+ */
1812
+
1813
+ exports.RelationshipTypes = createEnum([
1814
+ 'NONE',
1815
+ 'FRIEND',
1816
+ 'BLOCKED',
1817
+ 'PENDING_INCOMING',
1818
+ 'PENDING_OUTGOING',
1819
+ 'IMPLICIT',
1820
+ ]);
1821
+
1822
+ exports.SeparatorSpacingSizes = createEnum([null, 'SMALL', 'LARGE']);
1823
+
1824
+ exports._cleanupSymbol = Symbol('djsCleanup');
1825
+
1826
+ function keyMirror(arr) {
1827
+ let tmp = Object.create(null);
1828
+ for (const value of arr) tmp[value] = value;
1829
+ return tmp;
1830
+ }
1831
+
1832
+ function createEnum(keys) {
1833
+ const obj = {};
1834
+ for (const [index, key] of keys.entries()) {
1835
+ if (key === null) continue;
1836
+ obj[key] = index;
1837
+ obj[index] = key;
1838
+ }
1839
+ return obj;
1840
+ }
1841
+
1842
+ /**
1843
+ * @typedef {Object} Constants Constants that can be used in an enum or object-like way.
1844
+ * @property {Object<ActivityType, number>} ActivityTypes The type of an activity of a users presence.
1845
+ * @property {Object<APIError, number>} APIErrors An error encountered while performing an API request.
1846
+ * @property {Object<ApplicationCommandOptionType, number>} ApplicationCommandOptionTypes
1847
+ * The type of an {@link ApplicationCommandOption} object.
1848
+ * @property {Object<ApplicationCommandPermissionType, number>} ApplicationCommandPermissionTypes
1849
+ * The type of an {@link ApplicationCommandPermissions} object.
1850
+ * @property {Object<ApplicationCommandType, number>} ApplicationCommandTypes
1851
+ * The type of an {@link ApplicationCommand} object.
1852
+ * @property {Object<ApplicationRoleConnectionMetadataType, number>} ApplicationRoleConnectionMetadataTypes
1853
+ * The type of an {@link ApplicationRoleConnectionMetadata} object.
1854
+ * @property {Object<AutoModerationActionType, number>} AutoModerationActionTypes
1855
+ * A type of an action which executes whenever a rule is triggered.
1856
+ * @property {Object<AutoModerationRuleEventType, number>} AutoModerationRuleEventTypes Indicates in what event context
1857
+ * a rule should be checked.
1858
+ * @property {Object<AutoModerationRuleKeywordPresetType, number>} AutoModerationRuleKeywordPresetTypes
1859
+ * The internally pre-defined wordsetswhich will be searched for in content
1860
+ * @property {Object<AutoModerationRuleTriggerType, number>} AutoModerationRuleTriggerTypes Characterizes the type
1861
+ * of content which can trigger the rule.
1862
+ * @property {Object<ChannelType, number>} ChannelTypes All available channel types.
1863
+ * @property {ClientApplicationAssetTypes} ClientApplicationAssetTypes The types of an {@link ApplicationAsset} object.
1864
+ * @property {Object<Color, number>} Colors An object with regularly used colors.
1865
+ * @property {Object<DefaultMessageNotificationLevel, number>} DefaultMessageNotificationLevels
1866
+ * The value set for a guilds default message notifications.
1867
+ * @property {Endpoints} Endpoints Object containing functions that return certain endpoints on the API.
1868
+ * @property {Events} Events The types of events emitted by the Client.
1869
+ * @property {Object<ExplicitContentFilterLevel, number>} ExplicitContentFilterLevels
1870
+ * The value set for the explicit content filter levels for a guild.
1871
+ * @property {Object<GuildScheduledEventEntityType, number>} GuildScheduledEventEntityTypes
1872
+ * The entity type of a {@link GuildScheduledEvent} object.
1873
+ * @property {Object<GuildScheduledEventPrivacyLevel, number>} GuildScheduledEventPrivacyLevels
1874
+ * Privacy level of a {@link GuildScheduledEvent} object.
1875
+ * @property {Object<GuildScheduledEventStatus, number>} GuildScheduledEventStatuses
1876
+ * The status of a {@link GuildScheduledEvent} object.
1877
+ * @property {Object<IntegrationExpireBehavior, number>} IntegrationExpireBehaviors
1878
+ * The behavior of expiring subscribers for Integrations.
1879
+ * @property {Object<InteractionResponseType, number>} InteractionResponseTypes The type of an interaction response.
1880
+ * @property {Object<InteractionType, number>} InteractionTypes The type of an {@link Interaction} object.
1881
+ * @property {InviteScope[]} InviteScopes The scopes of an invite.
1882
+ * @property {Object<RelationshipType, number>} RelationshipTypes Relationship Enums
1883
+ * @property {Object<SeparatorSpacingSize, number>} SeparatorSpacingSize Size of separator padding (Enums)
1884
+ * @property {Object<MembershipState, number>} MembershipStates The value set for a team members membership state.
1885
+ * @property {Object<MessageButtonStyle, number>} MessageButtonStyles The style of a message button.
1886
+ * @property {Object<MessageComponentType, number>} MessageComponentTypes The type of a message component.
1887
+ * @property {MessageType[]} MessageTypes The type of a {@link Message} object.
1888
+ * @property {Object<MFALevel, number>} MFALevels The required MFA level for a guild.
1889
+ * @property {Object<NSFWLevel, number>} NSFWLevels NSFW level of a guild.
1890
+ * @property {Opcodes} Opcodes The types of Opcodes sent to the Gateway.
1891
+ * @property {Object<OverwriteType, number>} OverwriteTypes An overwrite type.
1892
+ * @property {Object} Package The package.json of the library.
1893
+ * @property {Object<PartialType, PartialType>} PartialTypes The type of Structure allowed to be a partial.
1894
+ * @property {Object<PremiumTier, number>} PremiumTiers The premium tier (Server Boost level) of a guild.
1895
+ * @property {Object<PrivacyLevel, number>} PrivacyLevels Privacy level of a {@link StageInstance} object.
1896
+ * @property {ShardEvents} ShardEvents The type of events emitted by a Shard.
1897
+ * @property {Status} Status The available statuses of the client.
1898
+ * @property {Object<SelectMenuComponentType, number>} SelectMenuComponentTypes The type of any select menu.
1899
+ * @property {Object<StickerFormatType, number>} StickerFormatTypes The value set for a stickers format type.
1900
+ * @property {Object<StickerType, number>} StickerTypes The value set for a stickers type.
1901
+ * @property {SweeperKey[]} SweeperKeys The name of an item to be swept in Sweepers.
1902
+ * @property {SystemMessageType[]} SystemMessageTypes The types of messages that are `System`.
1903
+ * @property {Object<TextInputStyle, number>} TextInputStyles The style of a text input component.
1904
+ * @property {ThreadChannelTypes[]} ThreadChannelTypes The type of a {@link ThreadChannel} object.
1905
+ * @property {string} UserAgent The user agent used for requests.
1906
+ * @property {Object<VerificationLevel, number>} VerificationLevels
1907
+ * The value set for the verification levels for a guild.
1908
+ * @property {Object<VideoQualityMode, number>} VideoQualityModes
1909
+ * The camera video quality mode for a {@link VoiceChannel}.
1910
+ * @property {Object<WebhookType, number>} WebhookTypes The value set for a webhooks type.
1911
+ * @property {WSCodes} WSCodes The types of WebSocket error codes.
1912
+ * @property {Object<WSEventType, WSEventType>} WSEvents The type of a WebSocket message event.
1913
+ * @property {HolographicStyle} HolographicStyles Holographic color values for role styling.
1914
+ */