@biggy1337/discord-sbjs 1.3.11

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 (373) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +147 -0
  3. package/package.json +80 -0
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +110 -0
  6. package/src/client/Client.js +1076 -0
  7. package/src/client/WebhookClient.js +61 -0
  8. package/src/client/actions/Action.js +133 -0
  9. package/src/client/actions/ActionsManager.js +80 -0
  10. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  11. package/src/client/actions/AutoModerationActionExecution.js +27 -0
  12. package/src/client/actions/AutoModerationRuleCreate.js +28 -0
  13. package/src/client/actions/AutoModerationRuleDelete.js +32 -0
  14. package/src/client/actions/AutoModerationRuleUpdate.js +30 -0
  15. package/src/client/actions/ChannelCreate.js +23 -0
  16. package/src/client/actions/ChannelDelete.js +39 -0
  17. package/src/client/actions/ChannelUpdate.js +43 -0
  18. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  19. package/src/client/actions/GuildBanAdd.js +20 -0
  20. package/src/client/actions/GuildBanRemove.js +25 -0
  21. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  22. package/src/client/actions/GuildDelete.js +65 -0
  23. package/src/client/actions/GuildEmojiCreate.js +20 -0
  24. package/src/client/actions/GuildEmojiDelete.js +21 -0
  25. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  26. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  27. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  28. package/src/client/actions/GuildMemberRemove.js +33 -0
  29. package/src/client/actions/GuildMemberUpdate.js +44 -0
  30. package/src/client/actions/GuildRoleCreate.js +25 -0
  31. package/src/client/actions/GuildRoleDelete.js +31 -0
  32. package/src/client/actions/GuildRoleUpdate.js +39 -0
  33. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  34. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  35. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  36. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  37. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  38. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  39. package/src/client/actions/GuildStickerCreate.js +20 -0
  40. package/src/client/actions/GuildStickerDelete.js +21 -0
  41. package/src/client/actions/GuildStickerUpdate.js +20 -0
  42. package/src/client/actions/GuildStickersUpdate.js +34 -0
  43. package/src/client/actions/GuildUpdate.js +33 -0
  44. package/src/client/actions/InviteCreate.js +28 -0
  45. package/src/client/actions/InviteDelete.js +30 -0
  46. package/src/client/actions/MessageCreate.js +50 -0
  47. package/src/client/actions/MessageDelete.js +34 -0
  48. package/src/client/actions/MessageDeleteBulk.js +43 -0
  49. package/src/client/actions/MessagePollVoteAdd.js +33 -0
  50. package/src/client/actions/MessagePollVoteRemove.js +33 -0
  51. package/src/client/actions/MessageReactionAdd.js +71 -0
  52. package/src/client/actions/MessageReactionRemove.js +39 -0
  53. package/src/client/actions/MessageReactionRemoveAll.js +36 -0
  54. package/src/client/actions/MessageReactionRemoveEmoji.js +30 -0
  55. package/src/client/actions/MessageUpdate.js +28 -0
  56. package/src/client/actions/PresenceUpdate.js +55 -0
  57. package/src/client/actions/StageInstanceCreate.js +28 -0
  58. package/src/client/actions/StageInstanceDelete.js +33 -0
  59. package/src/client/actions/StageInstanceUpdate.js +30 -0
  60. package/src/client/actions/ThreadCreate.js +24 -0
  61. package/src/client/actions/ThreadDelete.js +32 -0
  62. package/src/client/actions/ThreadListSync.js +60 -0
  63. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  64. package/src/client/actions/ThreadMembersUpdate.js +38 -0
  65. package/src/client/actions/TypingStart.js +31 -0
  66. package/src/client/actions/UserUpdate.js +35 -0
  67. package/src/client/actions/VoiceStateUpdate.js +63 -0
  68. package/src/client/actions/WebhooksUpdate.js +20 -0
  69. package/src/client/voice/ClientVoiceManager.js +162 -0
  70. package/src/client/voice/StreamEventRouter.js +60 -0
  71. package/src/client/voice/VoiceConnection.js +1173 -0
  72. package/src/client/voice/dispatcher/AnnexBDispatcher.js +120 -0
  73. package/src/client/voice/dispatcher/AudioDispatcher.js +145 -0
  74. package/src/client/voice/dispatcher/BaseDispatcher.js +459 -0
  75. package/src/client/voice/dispatcher/VPxDispatcher.js +54 -0
  76. package/src/client/voice/dispatcher/VideoDispatcher.js +68 -0
  77. package/src/client/voice/networking/VoiceUDPClient.js +187 -0
  78. package/src/client/voice/networking/VoiceWebSocket.js +347 -0
  79. package/src/client/voice/player/MediaPlayer.js +321 -0
  80. package/src/client/voice/player/processing/AnnexBNalSplitter.js +244 -0
  81. package/src/client/voice/player/processing/IvfSplitter.js +106 -0
  82. package/src/client/voice/player/processing/PCMInsertSilence.js +37 -0
  83. package/src/client/voice/receiver/PacketHandler.js +260 -0
  84. package/src/client/voice/receiver/Receiver.js +96 -0
  85. package/src/client/voice/receiver/Recorder.js +191 -0
  86. package/src/client/voice/util/Function.js +116 -0
  87. package/src/client/voice/util/PlayInterface.js +122 -0
  88. package/src/client/voice/util/Secretbox.js +64 -0
  89. package/src/client/voice/util/Silence.js +16 -0
  90. package/src/client/voice/util/Socket.js +62 -0
  91. package/src/client/voice/util/VolumeInterface.js +104 -0
  92. package/src/client/websocket/DispatchTable.js +7 -0
  93. package/src/client/websocket/GatewaySendScheduler.js +122 -0
  94. package/src/client/websocket/WebSocketManager.js +439 -0
  95. package/src/client/websocket/WebSocketShard.js +1085 -0
  96. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  97. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  98. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  99. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  100. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  101. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  102. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  103. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  104. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  105. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  106. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  107. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  108. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  109. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  110. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -0
  111. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  112. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  113. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  114. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  115. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  116. package/src/client/websocket/handlers/GUILD_CREATE.js +51 -0
  117. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  118. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  119. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  120. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +45 -0
  121. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  122. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  123. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  124. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  125. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  126. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  127. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  128. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  129. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  130. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  131. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  132. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  133. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  134. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -0
  135. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  136. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  137. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  138. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  139. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  140. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +5 -0
  141. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -0
  142. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  143. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  144. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  145. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  146. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  147. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  148. package/src/client/websocket/handlers/READY.js +156 -0
  149. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -0
  150. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -0
  151. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -0
  152. package/src/client/websocket/handlers/RESUMED.js +14 -0
  153. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  154. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  155. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  156. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  157. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  158. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  159. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  160. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  161. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  162. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  163. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -0
  164. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  165. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +82 -0
  166. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -0
  167. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  168. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
  169. package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
  170. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +12 -0
  171. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  172. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  173. package/src/client/websocket/handlers/index.js +84 -0
  174. package/src/errors/DJSError.js +61 -0
  175. package/src/errors/Messages.js +218 -0
  176. package/src/errors/index.js +4 -0
  177. package/src/index.js +172 -0
  178. package/src/managers/ApplicationCommandManager.js +264 -0
  179. package/src/managers/ApplicationCommandPermissionsManager.js +417 -0
  180. package/src/managers/AutoModerationRuleManager.js +296 -0
  181. package/src/managers/BaseGuildEmojiManager.js +80 -0
  182. package/src/managers/BaseManager.js +19 -0
  183. package/src/managers/BillingManager.js +66 -0
  184. package/src/managers/CachedManager.js +72 -0
  185. package/src/managers/ChannelManager.js +148 -0
  186. package/src/managers/ClientUserSettingManager.js +372 -0
  187. package/src/managers/DataManager.js +61 -0
  188. package/src/managers/DeveloperManager.js +265 -0
  189. package/src/managers/GuildBanManager.js +252 -0
  190. package/src/managers/GuildChannelManager.js +488 -0
  191. package/src/managers/GuildEmojiManager.js +171 -0
  192. package/src/managers/GuildEmojiRoleManager.js +118 -0
  193. package/src/managers/GuildForumThreadManager.js +108 -0
  194. package/src/managers/GuildInviteManager.js +213 -0
  195. package/src/managers/GuildManager.js +401 -0
  196. package/src/managers/GuildMemberManager.js +608 -0
  197. package/src/managers/GuildMemberRoleManager.js +195 -0
  198. package/src/managers/GuildScheduledEventManager.js +314 -0
  199. package/src/managers/GuildSettingManager.js +155 -0
  200. package/src/managers/GuildStickerManager.js +179 -0
  201. package/src/managers/GuildTextThreadManager.js +98 -0
  202. package/src/managers/InteractionManager.js +39 -0
  203. package/src/managers/MessageManager.js +457 -0
  204. package/src/managers/PermissionOverwriteManager.js +169 -0
  205. package/src/managers/PresenceManager.js +71 -0
  206. package/src/managers/QuestManager.js +391 -0
  207. package/src/managers/ReactionManager.js +67 -0
  208. package/src/managers/ReactionUserManager.js +73 -0
  209. package/src/managers/RelationshipManager.js +341 -0
  210. package/src/managers/RoleManager.js +448 -0
  211. package/src/managers/SessionManager.js +66 -0
  212. package/src/managers/StageInstanceManager.js +162 -0
  213. package/src/managers/ThreadManager.js +175 -0
  214. package/src/managers/ThreadMemberManager.js +186 -0
  215. package/src/managers/UserManager.js +274 -0
  216. package/src/managers/UserNoteManager.js +53 -0
  217. package/src/managers/VoiceStateManager.js +59 -0
  218. package/src/rest/APIRequest.js +198 -0
  219. package/src/rest/APIRouter.js +94 -0
  220. package/src/rest/DiscordAPIError.js +120 -0
  221. package/src/rest/HTTPError.js +62 -0
  222. package/src/rest/RESTManager.js +203 -0
  223. package/src/rest/RateLimitCoordinator.js +156 -0
  224. package/src/rest/RateLimitError.js +55 -0
  225. package/src/rest/RequestHandler.js +552 -0
  226. package/src/sharding/Shard.js +444 -0
  227. package/src/sharding/ShardClientUtil.js +279 -0
  228. package/src/sharding/ShardingManager.js +319 -0
  229. package/src/structures/AnonymousGuild.js +98 -0
  230. package/src/structures/ApplicationCommand.js +593 -0
  231. package/src/structures/ApplicationRoleConnectionMetadata.js +48 -0
  232. package/src/structures/AutoModerationActionExecution.js +89 -0
  233. package/src/structures/AutoModerationRule.js +294 -0
  234. package/src/structures/AutocompleteInteraction.js +107 -0
  235. package/src/structures/Base.js +43 -0
  236. package/src/structures/BaseCommandInteraction.js +211 -0
  237. package/src/structures/BaseGuild.js +124 -0
  238. package/src/structures/BaseGuildEmoji.js +56 -0
  239. package/src/structures/BaseGuildTextChannel.js +191 -0
  240. package/src/structures/BaseGuildVoiceChannel.js +241 -0
  241. package/src/structures/BaseMessageComponent.js +181 -0
  242. package/src/structures/ButtonInteraction.js +11 -0
  243. package/src/structures/CallState.js +63 -0
  244. package/src/structures/CategoryChannel.js +85 -0
  245. package/src/structures/Channel.js +284 -0
  246. package/src/structures/ClientPresence.js +77 -0
  247. package/src/structures/ClientUser.js +706 -0
  248. package/src/structures/CommandInteraction.js +41 -0
  249. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  250. package/src/structures/ContainerComponent.js +68 -0
  251. package/src/structures/ContextMenuInteraction.js +65 -0
  252. package/src/structures/DMChannel.js +222 -0
  253. package/src/structures/DirectoryChannel.js +20 -0
  254. package/src/structures/Emoji.js +148 -0
  255. package/src/structures/FileComponent.js +49 -0
  256. package/src/structures/ForumChannel.js +31 -0
  257. package/src/structures/GroupDMChannel.js +415 -0
  258. package/src/structures/Guild.js +1804 -0
  259. package/src/structures/GuildAuditLogs.js +746 -0
  260. package/src/structures/GuildBan.js +59 -0
  261. package/src/structures/GuildBoost.js +108 -0
  262. package/src/structures/GuildChannel.js +470 -0
  263. package/src/structures/GuildEmoji.js +161 -0
  264. package/src/structures/GuildMember.js +636 -0
  265. package/src/structures/GuildPreview.js +191 -0
  266. package/src/structures/GuildPreviewEmoji.js +27 -0
  267. package/src/structures/GuildScheduledEvent.js +536 -0
  268. package/src/structures/GuildTemplate.js +236 -0
  269. package/src/structures/Integration.js +188 -0
  270. package/src/structures/IntegrationApplication.js +96 -0
  271. package/src/structures/Interaction.js +290 -0
  272. package/src/structures/InteractionCollector.js +248 -0
  273. package/src/structures/InteractionWebhook.js +43 -0
  274. package/src/structures/Invite.js +358 -0
  275. package/src/structures/InviteGuild.js +23 -0
  276. package/src/structures/InviteStageInstance.js +86 -0
  277. package/src/structures/MediaChannel.js +11 -0
  278. package/src/structures/MediaGalleryComponent.js +41 -0
  279. package/src/structures/MediaGalleryItem.js +47 -0
  280. package/src/structures/Message.js +1272 -0
  281. package/src/structures/MessageActionRow.js +105 -0
  282. package/src/structures/MessageAttachment.js +216 -0
  283. package/src/structures/MessageButton.js +166 -0
  284. package/src/structures/MessageCollector.js +146 -0
  285. package/src/structures/MessageComponentInteraction.js +120 -0
  286. package/src/structures/MessageContextMenuInteraction.js +20 -0
  287. package/src/structures/MessageEmbed.js +596 -0
  288. package/src/structures/MessageMentions.js +273 -0
  289. package/src/structures/MessagePayload.js +354 -0
  290. package/src/structures/MessageReaction.js +181 -0
  291. package/src/structures/MessageSelectMenu.js +141 -0
  292. package/src/structures/Modal.js +161 -0
  293. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  294. package/src/structures/ModalSubmitInteraction.js +119 -0
  295. package/src/structures/NewsChannel.js +32 -0
  296. package/src/structures/OAuth2Guild.js +28 -0
  297. package/src/structures/PermissionOverwrites.js +198 -0
  298. package/src/structures/Poll.js +108 -0
  299. package/src/structures/PollAnswer.js +88 -0
  300. package/src/structures/Presence.js +1165 -0
  301. package/src/structures/ReactionCollector.js +229 -0
  302. package/src/structures/ReactionEmoji.js +31 -0
  303. package/src/structures/Role.js +590 -0
  304. package/src/structures/SectionComponent.js +48 -0
  305. package/src/structures/SelectMenuInteraction.js +21 -0
  306. package/src/structures/SeparatorComponent.js +48 -0
  307. package/src/structures/Session.js +81 -0
  308. package/src/structures/StageChannel.js +104 -0
  309. package/src/structures/StageInstance.js +208 -0
  310. package/src/structures/Sticker.js +310 -0
  311. package/src/structures/StickerPack.js +95 -0
  312. package/src/structures/StoreChannel.js +56 -0
  313. package/src/structures/Team.js +118 -0
  314. package/src/structures/TeamMember.js +80 -0
  315. package/src/structures/TextChannel.js +33 -0
  316. package/src/structures/TextDisplayComponent.js +40 -0
  317. package/src/structures/TextInputComponent.js +132 -0
  318. package/src/structures/ThreadChannel.js +605 -0
  319. package/src/structures/ThreadMember.js +105 -0
  320. package/src/structures/ThreadOnlyChannel.js +249 -0
  321. package/src/structures/ThumbnailComponent.js +57 -0
  322. package/src/structures/Typing.js +74 -0
  323. package/src/structures/UnfurledMediaItem.js +29 -0
  324. package/src/structures/User.js +992 -0
  325. package/src/structures/UserContextMenuInteraction.js +29 -0
  326. package/src/structures/VoiceChannel.js +110 -0
  327. package/src/structures/VoiceChannelEffect.js +69 -0
  328. package/src/structures/VoiceRegion.js +53 -0
  329. package/src/structures/VoiceState.js +354 -0
  330. package/src/structures/WebEmbed.js +373 -0
  331. package/src/structures/Webhook.js +478 -0
  332. package/src/structures/WelcomeChannel.js +60 -0
  333. package/src/structures/WelcomeScreen.js +48 -0
  334. package/src/structures/Widget.js +87 -0
  335. package/src/structures/WidgetMember.js +100 -0
  336. package/src/structures/interfaces/Application.js +953 -0
  337. package/src/structures/interfaces/Collector.js +301 -0
  338. package/src/structures/interfaces/InteractionResponses.js +313 -0
  339. package/src/structures/interfaces/TextBasedChannel.js +821 -0
  340. package/src/util/APITypes.js +59 -0
  341. package/src/util/ActivityFlags.js +44 -0
  342. package/src/util/ApplicationFlags.js +76 -0
  343. package/src/util/AttachmentFlags.js +38 -0
  344. package/src/util/BitField.js +170 -0
  345. package/src/util/ChannelFlags.js +45 -0
  346. package/src/util/Constants.js +1953 -0
  347. package/src/util/DataResolver.js +162 -0
  348. package/src/util/FastQueue.js +93 -0
  349. package/src/util/FetchUtil.js +77 -0
  350. package/src/util/Formatters.js +228 -0
  351. package/src/util/GuildMemberFlags.js +43 -0
  352. package/src/util/Intents.js +74 -0
  353. package/src/util/InviteFlags.js +34 -0
  354. package/src/util/LimitedCollection.js +131 -0
  355. package/src/util/ListenerUtil.js +12 -0
  356. package/src/util/MessageFlags.js +63 -0
  357. package/src/util/Options.js +431 -0
  358. package/src/util/Permissions.js +202 -0
  359. package/src/util/PremiumUsageFlags.js +31 -0
  360. package/src/util/PurchasedFlags.js +33 -0
  361. package/src/util/RemoteAuth.js +425 -0
  362. package/src/util/RoleFlags.js +37 -0
  363. package/src/util/SnowflakeUtil.js +92 -0
  364. package/src/util/Speaking.js +33 -0
  365. package/src/util/Sweepers.js +493 -0
  366. package/src/util/SystemChannelFlags.js +55 -0
  367. package/src/util/ThreadMemberFlags.js +30 -0
  368. package/src/util/UserFlags.js +104 -0
  369. package/src/util/Util.js +1144 -0
  370. package/typings/enums.d.ts +437 -0
  371. package/typings/index.d.ts +8857 -0
  372. package/typings/index.test-d.ts +0 -0
  373. package/typings/rawDataTypes.d.ts +403 -0
@@ -0,0 +1,156 @@
1
+ 'use strict';
2
+
3
+ const { Buffer } = require('node:buffer');
4
+ const USER_REQUIRED_ACTION = require('./USER_REQUIRED_ACTION_UPDATE');
5
+ const { Opcodes } = require('../../../util/Constants');
6
+
7
+ let ClientUser;
8
+ const MAX_SUBSCRIPTION_PACKET_BYTES = 14 * 1024;
9
+ const SUBSCRIPTION_PAYLOAD_PREFIX = `{"op":${Opcodes.GUILD_SUBSCRIPTIONS_BULK},"d":{"subscriptions":{`;
10
+ const SUBSCRIPTION_PAYLOAD_SUFFIX = '}}}';
11
+ const SUBSCRIPTION_PAYLOAD_BASE_SIZE =
12
+ Buffer.byteLength(SUBSCRIPTION_PAYLOAD_PREFIX) + Buffer.byteLength(SUBSCRIPTION_PAYLOAD_SUFFIX);
13
+
14
+ const createSubscription = () => ({
15
+ typing: true,
16
+ threads: true,
17
+ activities: true,
18
+ member_updates: true,
19
+ thread_member_lists: [],
20
+ members: [],
21
+ channels: {},
22
+ });
23
+ const SERIALIZED_SUBSCRIPTION = JSON.stringify(createSubscription());
24
+ const SERIALIZED_SUBSCRIPTION_SIZE = Buffer.byteLength(SERIALIZED_SUBSCRIPTION);
25
+ const getSubscriptionEntrySize = guildId =>
26
+ Buffer.byteLength(JSON.stringify(guildId)) + 1 + SERIALIZED_SUBSCRIPTION_SIZE;
27
+
28
+ module.exports = (client, { d: data }, shard) => {
29
+ const buildSubscriptionChunks = guilds => {
30
+ const chunks = [];
31
+ let subscriptions = {};
32
+ let subscriptionCount = 0;
33
+ let payloadSize = SUBSCRIPTION_PAYLOAD_BASE_SIZE;
34
+
35
+ for (const guild of guilds) {
36
+ const entrySize = getSubscriptionEntrySize(guild.id);
37
+ const separatorSize = subscriptionCount > 0 ? 1 : 0;
38
+
39
+ if (subscriptionCount > 0 && payloadSize + separatorSize + entrySize > MAX_SUBSCRIPTION_PACKET_BYTES) {
40
+ chunks.push(subscriptions);
41
+
42
+ subscriptions = {};
43
+ subscriptionCount = 0;
44
+ payloadSize = SUBSCRIPTION_PAYLOAD_BASE_SIZE;
45
+ }
46
+
47
+ subscriptions[guild.id] = createSubscription();
48
+ payloadSize += (subscriptionCount > 0 ? 1 : 0) + entrySize;
49
+ subscriptionCount++;
50
+
51
+ if (subscriptionCount === 1 && payloadSize > MAX_SUBSCRIPTION_PACKET_BYTES) {
52
+ chunks.push(subscriptions);
53
+ subscriptions = {};
54
+ subscriptionCount = 0;
55
+ payloadSize = SUBSCRIPTION_PAYLOAD_BASE_SIZE;
56
+ }
57
+ }
58
+
59
+ if (subscriptionCount > 0) {
60
+ chunks.push(subscriptions);
61
+ }
62
+
63
+ return chunks;
64
+ };
65
+
66
+ // Check
67
+ USER_REQUIRED_ACTION(client, { d: data });
68
+
69
+ // Overwrite ClientPresence
70
+ client.presence.userId = data.user.id;
71
+
72
+ if (client.user) {
73
+ client.user._patch(data.user);
74
+ } else {
75
+ ClientUser ??= require('../../../structures/ClientUser');
76
+ client.user = new ClientUser(client, data.user);
77
+ client.users.cache.set(client.user.id, client.user);
78
+ }
79
+
80
+ for (const private_channel of Array.isArray(data.private_channels) ? data.private_channels : []) {
81
+ if (private_channel?.id) client.channels._add(private_channel);
82
+ }
83
+
84
+ for (const guild of data.guilds) {
85
+ guild.shardId = shard.id;
86
+ client.guilds._add(guild);
87
+ }
88
+
89
+ // User Notes
90
+ client.notes._reload(data.notes);
91
+
92
+ // Relationship
93
+ client.relationships._setup(data.relationships);
94
+
95
+ if (Array.isArray(data.relationships)) {
96
+ for (const relation of data.relationships) {
97
+ if (!relation?.user) continue;
98
+ const user = client.users._add(relation.user);
99
+ if (!user) continue;
100
+ if (relation.type === 1) {
101
+ client.user.friends.set(user.id, user);
102
+ } else if (relation.type === 2) {
103
+ client.user.blocked.set(user.id, user);
104
+ } else if (relation.type === 3) {
105
+ client.user.pending.set(user.id, user);
106
+ } else if (relation.type === 4) {
107
+ client.user.outgoing.set(user.id, user);
108
+ }
109
+ }
110
+ }
111
+
112
+ // ClientSetting
113
+ client.settings._patch(data.user_settings);
114
+
115
+ // GuildSetting
116
+ for (const gSetting of Array.isArray(data.user_guild_settings) ? data.user_guild_settings : []) {
117
+ const guild = client.guilds.cache.get(gSetting.guild_id);
118
+ if (guild) guild.settings._patch(gSetting);
119
+ }
120
+ // Todo: data.auth_session_id_hash
121
+ client.sessions.currentSessionIdHash = data.auth_session_id_hash;
122
+
123
+ const installationId = data.apex_experiments?.installation ?? data.installation;
124
+ if (installationId && typeof client.rest.setInstallationId === 'function') {
125
+ client.rest.setInstallationId(installationId);
126
+ }
127
+
128
+ if (data.guilds.length) {
129
+ for (const subscriptions of buildSubscriptionChunks(data.guilds)) {
130
+ shard.send({
131
+ op: Opcodes.GUILD_SUBSCRIPTIONS_BULK,
132
+ d: {
133
+ subscriptions,
134
+ },
135
+ });
136
+ }
137
+ }
138
+
139
+ const dmChannels = Array.isArray(data.private_channels) ? data.private_channels : [];
140
+ const { DMChannelVoiceStatusSync } = client.options;
141
+
142
+ if (DMChannelVoiceStatusSync >= 1 && dmChannels.length) {
143
+ for (const c of dmChannels) {
144
+ shard.send({
145
+ op: Opcodes.DM_UPDATE,
146
+ d: {
147
+ channel_id: c.id,
148
+ },
149
+ });
150
+ }
151
+
152
+ client.sleep(DMChannelVoiceStatusSync * (dmChannels.length - 1)).then(() => shard.checkReady());
153
+ } else {
154
+ Promise.resolve().then(() => shard.checkReady());
155
+ }
156
+ };
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ const { Events } = require('../../../util/Constants');
4
+
5
+ module.exports = (client, { d: data }) => {
6
+ if (data.user) {
7
+ client.users._add(data.user);
8
+ }
9
+ client.relationships.cache.set(data.id, data.type);
10
+ client.relationships.friendNicknames.set(data.id, data.nickname);
11
+ client.relationships.sinceCache.set(data.id, new Date(data.since || 0));
12
+ /**
13
+ * Emitted when a relationship is created, relevant to the current user.
14
+ * @event Client#relationshipAdd
15
+ * @param {Snowflake} user Target userId
16
+ * @param {boolean} shouldNotify Whether the client should notify the user of this relationship's creation
17
+ */
18
+ client.emit(Events.RELATIONSHIP_ADD, data.id, Boolean(data.should_notify));
19
+ };
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ const { Events } = require('../../../util/Constants');
4
+
5
+ module.exports = (client, { d: data }) => {
6
+ client.relationships.cache.delete(data.id);
7
+ client.relationships.friendNicknames.delete(data.id);
8
+ client.relationships.sinceCache.delete(data.id);
9
+ /**
10
+ * Emitted when a relationship is removed, relevant to the current user.
11
+ * @event Client#relationshipRemove
12
+ * @param {Snowflake} user The userID that was updated
13
+ * @param {RelationshipType} type The type of the old relationship
14
+ * @param {string | null} nickname The nickname of the user in this relationship (1-32 characters)
15
+ */
16
+ client.emit(Events.RELATIONSHIP_REMOVE, data.id, data.type, data.nickname);
17
+ };
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ const { Events } = require('../../../util/Constants');
4
+
5
+ module.exports = (client, { d: data }) => {
6
+ /**
7
+ * @typedef {Object} RelationshipUpdateObject
8
+ * @property {RelationshipType} type The type of relationship
9
+ * @property {Date} since When the user requested a relationship
10
+ * @property {string | null} nickname The nickname of the user in this relationship (1-32 characters)
11
+ */
12
+ /**
13
+ * Emitted when a relationship is updated, relevant to the current user (e.g. friend nickname changed).
14
+ * <info>This is not sent when the type of a relationship changes; see {@link Client#relationshipAdd} and {@link Client#relationshipRemove} for that.</info>
15
+ * @event Client#relationshipUpdate
16
+ * @param {Snowflake} user The userID that was updated
17
+ * @param {RelationshipUpdateObject} oldData Old data
18
+ * @param {RelationshipUpdateObject} newData New data
19
+ */
20
+ const oldType = client.relationships.cache.get(data.id);
21
+ const oldSince = client.relationships.sinceCache.get(data.id);
22
+ const oldNickname = client.relationships.friendNicknames.get(data.id);
23
+ // Update
24
+ if (data.type) client.relationships.cache.set(data.id, data.type);
25
+ if (data.nickname) client.relationships.friendNicknames.set(data.id, data.nickname);
26
+ if (data.since) client.relationships.sinceCache.set(data.id, new Date(data.since || 0));
27
+ client.emit(
28
+ Events.RELATIONSHIP_UPDATE,
29
+ data.id,
30
+ {
31
+ type: oldType,
32
+ nickname: oldNickname,
33
+ since: oldSince,
34
+ },
35
+ {
36
+ type: data.type,
37
+ nickname: data.nickname,
38
+ since: new Date(data.since || 0),
39
+ },
40
+ );
41
+ };
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ const { Events } = require('../../../util/Constants');
4
+
5
+ module.exports = (client, packet, shard) => {
6
+ const replayed = shard.sequence - shard.closeSequence;
7
+ /**
8
+ * Emitted when a shard resumes successfully.
9
+ * @event Client#shardResume
10
+ * @param {number} id The shard id that resumed
11
+ * @param {number} replayedEvents The amount of replayed events
12
+ */
13
+ client.emit(Events.SHARD_RESUME, shard.id, replayed);
14
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.StageInstanceCreate.handle(packet.d);
5
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.StageInstanceDelete.handle(packet.d);
5
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.StageInstanceUpdate.handle(packet.d);
5
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.ThreadCreate.handle(packet.d);
5
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.ThreadDelete.handle(packet.d);
5
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.ThreadListSync.handle(packet.d);
5
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.ThreadMembersUpdate.handle(packet.d);
5
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.ThreadMemberUpdate.handle(packet.d);
5
+ };
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ const { Events } = require('../../../util/Constants');
4
+
5
+ module.exports = (client, packet) => {
6
+ const { old, updated } = client.actions.ChannelUpdate.handle(packet.d);
7
+ if (old && updated) {
8
+ /**
9
+ * Emitted whenever a thread is updated - e.g. name change, archive state change, locked state change.
10
+ * @event Client#threadUpdate
11
+ * @param {ThreadChannel} oldThread The thread before the update
12
+ * @param {ThreadChannel} newThread The thread after the update
13
+ */
14
+ client.emit(Events.THREAD_UPDATE, old, updated);
15
+ }
16
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.TypingStart.handle(packet.d);
5
+ };
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, { d: data }) => {
4
+ const guild = client.guilds.cache.get(data.guild_id);
5
+ if (guild) guild?.settings._patch(data);
6
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, { d: data }) => {
4
+ client.notes.cache.set(data.id, data.note);
5
+ };
@@ -0,0 +1,82 @@
1
+ 'use strict';
2
+
3
+ const { Events } = require('../../../util/Constants');
4
+ const { hasListener } = require('../../../util/ListenerUtil');
5
+
6
+ module.exports = (client, { d: data }) => {
7
+ const hasDebugListener = hasListener(client, Events.DEBUG);
8
+ const emitDebug = message => {
9
+ if (hasDebugListener) {
10
+ client.emit(Events.DEBUG, message);
11
+ }
12
+ };
13
+
14
+ let msg;
15
+ switch (data.required_action) {
16
+ case undefined:
17
+ case null: {
18
+ msg = 'All required actions have been completed.';
19
+ break;
20
+ }
21
+ case 'AGREEMENTS': {
22
+ msg = 'You need to accept the new Terms of Service and Privacy Policy.';
23
+ // https://discord.com/api/v9/users/@me/agreements
24
+ client.api
25
+ .users('@me')
26
+ .agreements.patch({
27
+ data: {
28
+ terms: true,
29
+ privacy: true,
30
+ },
31
+ })
32
+ .then(() => {
33
+ emitDebug('[USER_REQUIRED_ACTION] Successfully accepted the new Terms of Service and Privacy Policy.');
34
+ })
35
+ .catch(e => {
36
+ emitDebug(`[USER_REQUIRED_ACTION] Failed to accept the new Terms of Service and Privacy Policy: ${e}`);
37
+ });
38
+ break;
39
+ }
40
+ case 'REQUIRE_CAPTCHA': {
41
+ msg = 'You need to complete a captcha.';
42
+ break;
43
+ }
44
+ case 'REQUIRE_VERIFIED_EMAIL': {
45
+ msg = 'You need to verify your email.';
46
+ break;
47
+ }
48
+ case 'REQUIRE_REVERIFIED_EMAIL': {
49
+ msg = 'You need to reverify your email.';
50
+ break;
51
+ }
52
+ case 'REQUIRE_VERIFIED_PHONE': {
53
+ msg = 'You need to verify your phone number.';
54
+ break;
55
+ }
56
+ case 'REQUIRE_REVERIFIED_PHONE': {
57
+ msg = 'You need to reverify your phone number.';
58
+ break;
59
+ }
60
+ case 'REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE': {
61
+ msg = 'You need to verify your email or verify your phone number.';
62
+ break;
63
+ }
64
+ case 'REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE': {
65
+ msg = 'You need to reverify your email or verify your phone number.';
66
+ break;
67
+ }
68
+ case 'REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE': {
69
+ msg = 'You need to verify your email or reverify your phone number.';
70
+ break;
71
+ }
72
+ case 'REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE': {
73
+ msg = 'You need to reverify your email or reverify your phone number.';
74
+ break;
75
+ }
76
+ default: {
77
+ msg = `Unknown required action: ${data.required_action}`;
78
+ break;
79
+ }
80
+ }
81
+ emitDebug(`[USER_REQUIRED_ACTION] ${msg}`);
82
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, { d: data }) => {
4
+ client.settings._patch(data);
5
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.UserUpdate.handle(packet.d);
5
+ };
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ const VoiceChannelEffect = require('../../../structures/VoiceChannelEffect');
4
+ const { Events } = require('../../../util/Constants');
5
+
6
+ module.exports = (client, { d: data }) => {
7
+ const guild = client.guilds.cache.get(data.guild_id);
8
+ if (!guild) return;
9
+
10
+ /**
11
+ * Emmited when someone sends an effect, such as an emoji reaction, in a voice channel the client is connected to.
12
+ * @event Client#voiceChannelEffectSend
13
+ * @param {VoiceChannelEffect} voiceChannelEffect The sent voice channel effect
14
+ */
15
+ client.emit(Events.VOICE_CHANNEL_EFFECT_SEND, new VoiceChannelEffect(data, guild));
16
+ };
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ const { Events } = require('../../../util/Constants');
4
+
5
+ module.exports = (client, { d: data }) => {
6
+ const channel = client.channels.cache.get(data.id);
7
+ if (channel) {
8
+ const old = channel._clone();
9
+ channel.status = data.status;
10
+ client.emit(Events.CHANNEL_UPDATE, old, channel);
11
+ }
12
+ };
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ const { Events } = require('../../../util/Constants');
4
+ const { hasListener } = require('../../../util/ListenerUtil');
5
+
6
+ module.exports = (client, packet) => {
7
+ const hasDebugListener = hasListener(client, Events.DEBUG);
8
+ if (hasDebugListener) {
9
+ client.emit(Events.DEBUG, `[VOICE] received voice server: ${JSON.stringify(packet)}`);
10
+ }
11
+ client.voice.onVoiceServer(packet.d);
12
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.VoiceStateUpdate.handle(packet.d);
5
+ };
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ module.exports = (client, packet) => {
4
+ client.actions.WebhooksUpdate.handle(packet.d);
5
+ };
@@ -0,0 +1,84 @@
1
+ 'use strict';
2
+
3
+ const handlers = Object.fromEntries([
4
+ ['READY', require('./READY')],
5
+ ['RESUMED', require('./RESUMED')],
6
+ ['APPLICATION_COMMAND_CREATE', require('./APPLICATION_COMMAND_CREATE')],
7
+ ['APPLICATION_COMMAND_DELETE', require('./APPLICATION_COMMAND_DELETE')],
8
+ ['APPLICATION_COMMAND_UPDATE', require('./APPLICATION_COMMAND_UPDATE')],
9
+ ['APPLICATION_COMMAND_PERMISSIONS_UPDATE', require('./APPLICATION_COMMAND_PERMISSIONS_UPDATE')],
10
+ ['AUTO_MODERATION_ACTION_EXECUTION', require('./AUTO_MODERATION_ACTION_EXECUTION')],
11
+ ['AUTO_MODERATION_RULE_CREATE', require('./AUTO_MODERATION_RULE_CREATE')],
12
+ ['AUTO_MODERATION_RULE_DELETE', require('./AUTO_MODERATION_RULE_DELETE')],
13
+ ['AUTO_MODERATION_RULE_UPDATE', require('./AUTO_MODERATION_RULE_UPDATE')],
14
+ ['GUILD_CREATE', require('./GUILD_CREATE')],
15
+ ['GUILD_DELETE', require('./GUILD_DELETE')],
16
+ ['GUILD_UPDATE', require('./GUILD_UPDATE')],
17
+ ['INVITE_CREATE', require('./INVITE_CREATE')],
18
+ ['INVITE_DELETE', require('./INVITE_DELETE')],
19
+ ['GUILD_MEMBER_ADD', require('./GUILD_MEMBER_ADD')],
20
+ ['GUILD_MEMBER_REMOVE', require('./GUILD_MEMBER_REMOVE')],
21
+ ['GUILD_MEMBER_UPDATE', require('./GUILD_MEMBER_UPDATE')],
22
+ ['GUILD_MEMBERS_CHUNK', require('./GUILD_MEMBERS_CHUNK')],
23
+ ['GUILD_INTEGRATIONS_UPDATE', require('./GUILD_INTEGRATIONS_UPDATE')],
24
+ ['GUILD_ROLE_CREATE', require('./GUILD_ROLE_CREATE')],
25
+ ['GUILD_ROLE_DELETE', require('./GUILD_ROLE_DELETE')],
26
+ ['GUILD_ROLE_UPDATE', require('./GUILD_ROLE_UPDATE')],
27
+ ['GUILD_BAN_ADD', require('./GUILD_BAN_ADD')],
28
+ ['GUILD_BAN_REMOVE', require('./GUILD_BAN_REMOVE')],
29
+ ['GUILD_EMOJIS_UPDATE', require('./GUILD_EMOJIS_UPDATE')],
30
+ ['CHANNEL_CREATE', require('./CHANNEL_CREATE')],
31
+ ['CHANNEL_DELETE', require('./CHANNEL_DELETE')],
32
+ ['CHANNEL_UPDATE', require('./CHANNEL_UPDATE')],
33
+ ['CHANNEL_PINS_UPDATE', require('./CHANNEL_PINS_UPDATE')],
34
+ ['MESSAGE_CREATE', require('./MESSAGE_CREATE')],
35
+ ['MESSAGE_DELETE', require('./MESSAGE_DELETE')],
36
+ ['MESSAGE_UPDATE', require('./MESSAGE_UPDATE')],
37
+ ['MESSAGE_DELETE_BULK', require('./MESSAGE_DELETE_BULK')],
38
+ ['MESSAGE_REACTION_ADD', require('./MESSAGE_REACTION_ADD')],
39
+ ['MESSAGE_REACTION_REMOVE', require('./MESSAGE_REACTION_REMOVE')],
40
+ ['MESSAGE_REACTION_REMOVE_ALL', require('./MESSAGE_REACTION_REMOVE_ALL')],
41
+ ['MESSAGE_REACTION_REMOVE_EMOJI', require('./MESSAGE_REACTION_REMOVE_EMOJI')],
42
+ ['THREAD_CREATE', require('./THREAD_CREATE')],
43
+ ['THREAD_UPDATE', require('./THREAD_UPDATE')],
44
+ ['THREAD_DELETE', require('./THREAD_DELETE')],
45
+ ['THREAD_LIST_SYNC', require('./THREAD_LIST_SYNC')],
46
+ ['THREAD_MEMBER_UPDATE', require('./THREAD_MEMBER_UPDATE')],
47
+ ['THREAD_MEMBERS_UPDATE', require('./THREAD_MEMBERS_UPDATE')],
48
+ ['USER_UPDATE', require('./USER_UPDATE')],
49
+ ['PRESENCE_UPDATE', require('./PRESENCE_UPDATE')],
50
+ ['TYPING_START', require('./TYPING_START')],
51
+ ['VOICE_CHANNEL_EFFECT_SEND', require('./VOICE_CHANNEL_EFFECT_SEND')],
52
+ ['VOICE_STATE_UPDATE', require('./VOICE_STATE_UPDATE')],
53
+ ['VOICE_SERVER_UPDATE', require('./VOICE_SERVER_UPDATE')],
54
+ ['WEBHOOKS_UPDATE', require('./WEBHOOKS_UPDATE')],
55
+ ['STAGE_INSTANCE_CREATE', require('./STAGE_INSTANCE_CREATE')],
56
+ ['STAGE_INSTANCE_UPDATE', require('./STAGE_INSTANCE_UPDATE')],
57
+ ['STAGE_INSTANCE_DELETE', require('./STAGE_INSTANCE_DELETE')],
58
+ ['GUILD_STICKERS_UPDATE', require('./GUILD_STICKERS_UPDATE')],
59
+ ['GUILD_SCHEDULED_EVENT_CREATE', require('./GUILD_SCHEDULED_EVENT_CREATE')],
60
+ ['GUILD_SCHEDULED_EVENT_UPDATE', require('./GUILD_SCHEDULED_EVENT_UPDATE')],
61
+ ['GUILD_SCHEDULED_EVENT_DELETE', require('./GUILD_SCHEDULED_EVENT_DELETE')],
62
+ ['GUILD_SCHEDULED_EVENT_USER_ADD', require('./GUILD_SCHEDULED_EVENT_USER_ADD')],
63
+ ['GUILD_SCHEDULED_EVENT_USER_REMOVE', require('./GUILD_SCHEDULED_EVENT_USER_REMOVE')],
64
+ ['GUILD_AUDIT_LOG_ENTRY_CREATE', require('./GUILD_AUDIT_LOG_ENTRY_CREATE')],
65
+ // Selfbot
66
+ ['RELATIONSHIP_ADD', require('./RELATIONSHIP_ADD')],
67
+ ['RELATIONSHIP_REMOVE', require('./RELATIONSHIP_REMOVE')],
68
+ ['RELATIONSHIP_UPDATE', require('./RELATIONSHIP_UPDATE')],
69
+ ['USER_NOTE_UPDATE', require('./USER_NOTE_UPDATE')],
70
+ ['CHANNEL_RECIPIENT_ADD', require('./CHANNEL_RECIPIENT_ADD')],
71
+ ['CHANNEL_RECIPIENT_REMOVE', require('./CHANNEL_RECIPIENT_REMOVE')],
72
+ ['INTERACTION_MODAL_CREATE', require('./INTERACTION_MODAL_CREATE')],
73
+ ['USER_REQUIRED_ACTION_UPDATE', require('./USER_REQUIRED_ACTION_UPDATE')],
74
+ ['CALL_CREATE', require('./CALL_CREATE')],
75
+ ['CALL_UPDATE', require('./CALL_UPDATE')],
76
+ ['CALL_DELETE', require('./CALL_DELETE')],
77
+ ['USER_SETTINGS_UPDATE', require('./USER_SETTINGS_UPDATE')],
78
+ ['USER_GUILD_SETTINGS_UPDATE', require('./USER_GUILD_SETTINGS_UPDATE')],
79
+ ['VOICE_CHANNEL_STATUS_UPDATE', require('./VOICE_CHANNEL_STATUS_UPDATE')],
80
+ ['MESSAGE_POLL_VOTE_ADD', require('./MESSAGE_POLL_VOTE_ADD')],
81
+ ['MESSAGE_POLL_VOTE_REMOVE', require('./MESSAGE_POLL_VOTE_REMOVE')],
82
+ ]);
83
+
84
+ module.exports = handlers;
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ // Heavily inspired by node's `internal/errors` module
4
+
5
+ const kCode = Symbol('code');
6
+ const messages = new Map();
7
+
8
+ /**
9
+ * Extend an error of some sort into a DiscordjsError.
10
+ * @param {Error} Base Base error to extend
11
+ * @returns {DiscordjsError}
12
+ */
13
+ function makeDiscordjsError(Base) {
14
+ return class DiscordjsError extends Base {
15
+ constructor(key, ...args) {
16
+ super(message(key, args));
17
+ this[kCode] = key;
18
+ if (Error.captureStackTrace) Error.captureStackTrace(this, DiscordjsError);
19
+ }
20
+
21
+ get name() {
22
+ return `${super.name} [${this[kCode]}]`;
23
+ }
24
+
25
+ get code() {
26
+ return this[kCode];
27
+ }
28
+ };
29
+ }
30
+
31
+ /**
32
+ * Format the message for an error.
33
+ * @param {string} key Error key
34
+ * @param {Array<*>} args Arguments to pass for util format or as function args
35
+ * @returns {string} Formatted string
36
+ */
37
+ function message(key, args) {
38
+ if (typeof key !== 'string') throw new Error('Error message key must be a string');
39
+ const msg = messages.get(key);
40
+ if (!msg) throw new Error(`An invalid error message key was used: ${key}.`);
41
+ if (typeof msg === 'function') return msg(...args);
42
+ if (!args?.length) return msg;
43
+ args.unshift(msg);
44
+ return String(...args);
45
+ }
46
+
47
+ /**
48
+ * Register an error code and message.
49
+ * @param {string} sym Unique name for the error
50
+ * @param {*} val Value of the error
51
+ */
52
+ function register(sym, val) {
53
+ messages.set(sym, typeof val === 'function' ? val : String(val));
54
+ }
55
+
56
+ module.exports = {
57
+ register,
58
+ Error: makeDiscordjsError(Error),
59
+ TypeError: makeDiscordjsError(TypeError),
60
+ RangeError: makeDiscordjsError(RangeError),
61
+ };