djs-selfbot-v13 3.1.8 → 3.7.1

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