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