@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,28 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class InviteCreateAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const channel = client.channels.cache.get(data.channel_id);
10
+ const guild = client.guilds.cache.get(data.guild_id);
11
+ if (!channel) return false;
12
+
13
+ const inviteData = Object.assign({}, data, { channel, guild });
14
+ const invite = guild.invites._add(inviteData);
15
+
16
+ /**
17
+ * Emitted when an invite is created.
18
+ * <info> This event only triggers if the client has `MANAGE_GUILD` permissions for the guild,
19
+ * or `MANAGE_CHANNELS` permissions for the channel.</info>
20
+ * @event Client#inviteCreate
21
+ * @param {Invite} invite The invite that was created
22
+ */
23
+ client.emit(Events.INVITE_CREATE, invite);
24
+ return { invite };
25
+ }
26
+ }
27
+
28
+ module.exports = InviteCreateAction;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Invite = require('../../structures/Invite');
5
+ const { Events } = require('../../util/Constants');
6
+
7
+ class InviteDeleteAction extends Action {
8
+ handle(data) {
9
+ const client = this.client;
10
+ const channel = client.channels.cache.get(data.channel_id);
11
+ const guild = client.guilds.cache.get(data.guild_id);
12
+ if (!channel) return false;
13
+
14
+ const inviteData = Object.assign({}, data, { channel, guild });
15
+ const invite = new Invite(client, inviteData);
16
+ guild.invites.cache.delete(invite.code);
17
+
18
+ /**
19
+ * Emitted when an invite is deleted.
20
+ * <info> This event only triggers if the client has `MANAGE_GUILD` permissions for the guild,
21
+ * or `MANAGE_CHANNELS` permissions for the channel.</info>
22
+ * @event Client#inviteDelete
23
+ * @param {Invite} invite The invite that was deleted
24
+ */
25
+ client.emit(Events.INVITE_DELETE, invite);
26
+ return { invite };
27
+ }
28
+ }
29
+
30
+ module.exports = InviteDeleteAction;
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ const process = require('node:process');
4
+ const Action = require('./Action');
5
+ const { Events } = require('../../util/Constants');
6
+ const { hasListener } = require('../../util/ListenerUtil');
7
+
8
+ let deprecationEmitted = false;
9
+
10
+ class MessageCreateAction extends Action {
11
+ handle(data) {
12
+ const client = this.client;
13
+ const channelData = { id: data.channel_id, author: data.author };
14
+ if ('guild_id' in data) channelData.guild_id = data.guild_id;
15
+ const channel = this.getChannel(channelData);
16
+ if (channel) {
17
+ if (!channel.isText()) return {};
18
+
19
+ const existing = channel.messages.cache.get(data.id);
20
+ if (existing && existing.author?.id !== this.client.user.id) return { message: existing };
21
+ const message = existing ?? channel.messages._add(data);
22
+ channel.lastMessageId = data.id;
23
+
24
+ /**
25
+ * Emitted whenever a message is created.
26
+ * @event Client#messageCreate
27
+ * @param {Message} message The created message
28
+ */
29
+ client.emit(Events.MESSAGE_CREATE, message);
30
+
31
+ /**
32
+ * Emitted whenever a message is created.
33
+ * @event Client#message
34
+ * @param {Message} message The created message
35
+ * @deprecated Use {@link Client#event:messageCreate} instead
36
+ */
37
+ const hasMessageListener = hasListener(client, 'message');
38
+ if (hasMessageListener && client.emit('message', message) && !deprecationEmitted) {
39
+ deprecationEmitted = true;
40
+ process.emitWarning('The message event is deprecated. Use messageCreate instead', 'DeprecationWarning');
41
+ }
42
+
43
+ return { message };
44
+ }
45
+
46
+ return {};
47
+ }
48
+ }
49
+
50
+ module.exports = MessageCreateAction;
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { deletedMessages } = require('../../structures/Message');
5
+ const { Events } = require('../../util/Constants');
6
+
7
+ class MessageDeleteAction extends Action {
8
+ handle(data) {
9
+ const client = this.client;
10
+ const channelData = { id: data.channel_id };
11
+ if ('guild_id' in data) channelData.guild_id = data.guild_id;
12
+ const channel = this.getChannel(channelData);
13
+ let message;
14
+ if (channel) {
15
+ if (!channel.isText()) return {};
16
+
17
+ message = this.getMessage(data, channel);
18
+ if (message) {
19
+ channel.messages.cache.delete(message.id);
20
+ deletedMessages.add(message);
21
+ /**
22
+ * Emitted whenever a message is deleted.
23
+ * @event Client#messageDelete
24
+ * @param {Message} message The deleted message
25
+ */
26
+ client.emit(Events.MESSAGE_DELETE, message);
27
+ }
28
+ }
29
+
30
+ return { message };
31
+ }
32
+ }
33
+
34
+ module.exports = MessageDeleteAction;
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const Action = require('./Action');
5
+ const { deletedMessages } = require('../../structures/Message');
6
+ const { Events } = require('../../util/Constants');
7
+
8
+ class MessageDeleteBulkAction extends Action {
9
+ handle(data) {
10
+ const client = this.client;
11
+ const channel = client.channels.cache.get(data.channel_id);
12
+
13
+ if (channel) {
14
+ if (!channel.isText()) return {};
15
+
16
+ const ids = data.ids;
17
+ const { cache } = channel.messages;
18
+ const channelId = channel.id;
19
+ const guildId = data.guild_id;
20
+ const messages = new Collection();
21
+ for (const id of ids) {
22
+ const message =
23
+ cache.get(id) ?? this.getMessage({ id, channel_id: channelId, guild_id: guildId }, channel, false);
24
+ if (message) {
25
+ deletedMessages.add(message);
26
+ messages.set(message.id, message);
27
+ cache.delete(id);
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Emitted whenever messages are deleted in bulk.
33
+ * @event Client#messageDeleteBulk
34
+ * @param {Collection<Snowflake, Message>} messages The deleted messages, mapped by their id
35
+ */
36
+ if (messages.size > 0) client.emit(Events.MESSAGE_BULK_DELETE, messages);
37
+ return { messages };
38
+ }
39
+ return {};
40
+ }
41
+ }
42
+
43
+ module.exports = MessageDeleteBulkAction;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class MessagePollVoteAddAction extends Action {
7
+ handle(data) {
8
+ const channel = this.getChannel(data);
9
+ if (!channel?.isText()) return false;
10
+
11
+ const message = this.getMessage(data, channel);
12
+ if (!message) return false;
13
+
14
+ const { poll } = message;
15
+
16
+ const answer = poll?.answers.get(data.answer_id);
17
+ if (!answer) return false;
18
+
19
+ answer.voteCount++;
20
+
21
+ /**
22
+ * Emitted whenever a user votes in a poll.
23
+ * @event Client#messagePollVoteAdd
24
+ * @param {PollAnswer} pollAnswer The answer that was voted on
25
+ * @param {Snowflake} userId The id of the user that voted
26
+ */
27
+ this.client.emit(Events.MESSAGE_POLL_VOTE_ADD, answer, data.user_id);
28
+
29
+ return { poll };
30
+ }
31
+ }
32
+
33
+ module.exports = MessagePollVoteAddAction;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class MessagePollVoteRemoveAction extends Action {
7
+ handle(data) {
8
+ const channel = this.getChannel(data);
9
+ if (!channel?.isText()) return false;
10
+
11
+ const message = this.getMessage(data, channel);
12
+ if (!message) return false;
13
+
14
+ const { poll } = message;
15
+
16
+ const answer = poll?.answers.get(data.answer_id);
17
+ if (!answer) return false;
18
+
19
+ answer.voteCount--;
20
+
21
+ /**
22
+ * Emitted whenever a user removes their vote in a poll.
23
+ * @event Client#messagePollVoteRemove
24
+ * @param {PollAnswer} pollAnswer The answer where the vote was removed
25
+ * @param {Snowflake} userId The id of the user that removed their vote
26
+ */
27
+ this.client.emit(Events.MESSAGE_POLL_VOTE_REMOVE, answer, data.user_id);
28
+
29
+ return { poll };
30
+ }
31
+ }
32
+
33
+ module.exports = MessagePollVoteRemoveAction;
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+ const { PartialTypes } = require('../../util/Constants');
6
+
7
+ /*
8
+ { user_id: 'id',
9
+ message_id: 'id',
10
+ emoji: { name: '�', id: null },
11
+ channel_id: 'id',
12
+ burst: boolean
13
+ // If originating from a guild
14
+ guild_id: 'id',
15
+ member: { ..., user: { ... } } }
16
+ */
17
+
18
+ class MessageReactionAdd extends Action {
19
+ handle(data, fromStructure = false) {
20
+ if (!data.emoji) return false;
21
+
22
+ const user = this.getUserFromMember(data);
23
+ if (!user) return false;
24
+
25
+ const channelData = { id: data.channel_id, user_id: data.user_id };
26
+ if ('guild_id' in data) channelData.guild_id = data.guild_id;
27
+ const channel = this.getChannel(channelData);
28
+ if (!channel || !channel.isText()) return false;
29
+
30
+ // Verify message
31
+ const message = this.getMessage(data, channel);
32
+ if (!message) return false;
33
+
34
+ // Verify reaction
35
+ const includePartial = this.client.options.partials.includes(PartialTypes.REACTION);
36
+ if (message.partial && !includePartial) return false;
37
+ const reactionData = {
38
+ emoji: data.emoji,
39
+ count: message.partial ? null : 0,
40
+ me: user.id === this.client.user.id,
41
+ };
42
+ if ('count' in data) reactionData.count = data.count;
43
+ if ('me' in data) reactionData.me = data.me;
44
+ if ('me_burst' in data) reactionData.me_burst = data.me_burst;
45
+ if ('burst_colors' in data) reactionData.burst_colors = data.burst_colors;
46
+ if ('count_details' in data) reactionData.count_details = data.count_details;
47
+
48
+ const reaction = message.reactions._add(reactionData);
49
+ if (!reaction) return false;
50
+ reaction._add(user, data.burst);
51
+ if (fromStructure) return { message, reaction, user };
52
+ /**
53
+ * Provides additional information about altered reaction
54
+ * @typedef {Object} MessageReactionEventDetails
55
+ * @property {ReactionType} type The type of the reaction
56
+ * @property {boolean} burst Determines whether a super reaction was used
57
+ */
58
+ /**
59
+ * Emitted whenever a reaction is added to a cached message.
60
+ * @event Client#messageReactionAdd
61
+ * @param {MessageReaction} messageReaction The reaction object
62
+ * @param {User} user The user that applied the guild or reaction emoji
63
+ * @param {MessageReactionEventDetails} details Details of adding the reaction
64
+ */
65
+ this.client.emit(Events.MESSAGE_REACTION_ADD, reaction, user, { type: data.type, burst: data.burst });
66
+
67
+ return { message, reaction, user };
68
+ }
69
+ }
70
+
71
+ module.exports = MessageReactionAdd;
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class MessageReactionRemove extends Action {
7
+ handle(data) {
8
+ if (!data.emoji) return false;
9
+
10
+ const user = this.getUser(data);
11
+ if (!user) return false;
12
+
13
+ const channelData = { id: data.channel_id, user_id: data.user_id };
14
+ if ('guild_id' in data) channelData.guild_id = data.guild_id;
15
+ const channel = this.getChannel(channelData);
16
+ if (!channel || !channel.isText()) return false;
17
+
18
+ // Verify message
19
+ const message = this.getMessage(data, channel);
20
+ if (!message) return false;
21
+
22
+ // Verify reaction
23
+ const reaction = this.getReaction(data, message, user);
24
+ if (!reaction) return false;
25
+ reaction._remove(user, data.burst);
26
+ /**
27
+ * Emitted whenever a reaction is removed from a cached message.
28
+ * @event Client#messageReactionRemove
29
+ * @param {MessageReaction} messageReaction The reaction object
30
+ * @param {User} user The user whose emoji or reaction emoji was removed
31
+ * @param {MessageReactionEventDetails} details Details of removing the reaction
32
+ */
33
+ this.client.emit(Events.MESSAGE_REACTION_REMOVE, reaction, user, { type: data.type, burst: data.burst });
34
+
35
+ return { message, reaction, user };
36
+ }
37
+ }
38
+
39
+ module.exports = MessageReactionRemove;
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+ const { hasListener } = require('../../util/ListenerUtil');
6
+
7
+ class MessageReactionRemoveAll extends Action {
8
+ handle(data) {
9
+ const hasReactionListener = hasListener(this.client, Events.MESSAGE_REACTION_REMOVE_ALL);
10
+ const channelData = { id: data.channel_id };
11
+ if ('guild_id' in data) channelData.guild_id = data.guild_id;
12
+ const channel = this.getChannel(channelData);
13
+ if (!channel || !channel.isText()) return false;
14
+
15
+ // Verify message
16
+ const message = this.getMessage(data, channel);
17
+ if (!message) return false;
18
+
19
+ // Copy removed reactions only when needed for the event payload.
20
+ const removed = hasReactionListener ? message.reactions.cache.clone() : null;
21
+
22
+ message.reactions.cache.clear();
23
+ if (hasReactionListener) this.client.emit(Events.MESSAGE_REACTION_REMOVE_ALL, message, removed);
24
+
25
+ return { message };
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Emitted whenever all reactions are removed from a cached message.
31
+ * @event Client#messageReactionRemoveAll
32
+ * @param {Message} message The message the reactions were removed from
33
+ * @param {Collection<string|Snowflake, MessageReaction>} reactions The cached message reactions that were removed.
34
+ */
35
+
36
+ module.exports = MessageReactionRemoveAll;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class MessageReactionRemoveEmoji extends Action {
7
+ handle(data) {
8
+ const channelData = { id: data.channel_id };
9
+ if ('guild_id' in data) channelData.guild_id = data.guild_id;
10
+ const channel = this.getChannel(channelData);
11
+ if (!channel || !channel.isText()) return false;
12
+
13
+ const message = this.getMessage(data, channel);
14
+ if (!message) return false;
15
+
16
+ const reaction = this.getReaction(data, message);
17
+ if (!reaction) return false;
18
+ if (!message.partial) message.reactions.cache.delete(reaction.emoji.id ?? reaction.emoji.name);
19
+
20
+ /**
21
+ * Emitted when a bot removes an emoji reaction from a cached message.
22
+ * @event Client#messageReactionRemoveEmoji
23
+ * @param {MessageReaction} reaction The reaction that was removed
24
+ */
25
+ this.client.emit(Events.MESSAGE_REACTION_REMOVE_EMOJI, reaction);
26
+ return { reaction };
27
+ }
28
+ }
29
+
30
+ module.exports = MessageReactionRemoveEmoji;
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+
5
+ class MessageUpdateAction extends Action {
6
+ handle(data) {
7
+ const channelData = { id: data.channel_id };
8
+ if ('guild_id' in data) channelData.guild_id = data.guild_id;
9
+ const channel = this.getChannel(channelData);
10
+ if (channel) {
11
+ if (!channel.isText()) return {};
12
+
13
+ const { id, channel_id, guild_id, author, timestamp, type } = data;
14
+ const message = this.getMessage({ id, channel_id, guild_id, author, timestamp, type }, channel);
15
+ if (message) {
16
+ const old = message._update(data);
17
+ return {
18
+ old,
19
+ updated: message,
20
+ };
21
+ }
22
+ }
23
+
24
+ return {};
25
+ }
26
+ }
27
+
28
+ module.exports = MessageUpdateAction;
@@ -0,0 +1,55 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+ const { PartialTypes } = require('../../util/Constants');
6
+ const { hasListener } = require('../../util/ListenerUtil');
7
+
8
+ class PresenceUpdateAction extends Action {
9
+ handle(data) {
10
+ const hasPresenceUpdateListener = hasListener(this.client, Events.PRESENCE_UPDATE);
11
+
12
+ let user = this.client.users.cache.get(data.user.id);
13
+ if (!user && data.user?.username) user = this.client.users._add(data.user);
14
+ if (!user && ('username' in data.user || this.client.options.partials.includes(PartialTypes.USER))) {
15
+ user = this.client.users._add(data.user);
16
+ }
17
+ if (!user) return;
18
+
19
+ if (data.user?.username) {
20
+ if (!user._equals(data.user)) this.client.actions.UserUpdate.handle(data.user);
21
+ }
22
+
23
+ const guild = this.client.guilds.cache.get(data.guild_id);
24
+
25
+ if (guild) {
26
+ let member = guild.members.cache.get(user.id);
27
+ if (!member && data.status !== 'offline') {
28
+ member = guild.members._add({
29
+ user,
30
+ deaf: false,
31
+ mute: false,
32
+ });
33
+ this.client.emit(Events.GUILD_MEMBER_AVAILABLE, member);
34
+ }
35
+ }
36
+
37
+ const oldPresence = hasPresenceUpdateListener
38
+ ? (guild || this.client).presences.cache.get(user.id)?._clone() ?? null
39
+ : null;
40
+
41
+ const newPresence = (guild || this.client).presences._add(Object.assign({}, data, { guild }));
42
+
43
+ if (hasPresenceUpdateListener && !newPresence.equals(oldPresence)) {
44
+ /**
45
+ * Emitted whenever a guild member's presence (e.g. status, activity) is changed.
46
+ * @event Client#presenceUpdate
47
+ * @param {?Presence} oldPresence The presence before the update, if one at all
48
+ * @param {Presence} newPresence The presence after the update
49
+ */
50
+ this.client.emit(Events.PRESENCE_UPDATE, oldPresence, newPresence);
51
+ }
52
+ }
53
+ }
54
+
55
+ module.exports = PresenceUpdateAction;
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class StageInstanceCreateAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const channel = this.getChannel({ id: data.channel_id, guild_id: data.guild_id });
10
+
11
+ if (channel) {
12
+ const stageInstance = channel.guild.stageInstances._add(data);
13
+
14
+ /**
15
+ * Emitted whenever a stage instance is created.
16
+ * @event Client#stageInstanceCreate
17
+ * @param {StageInstance} stageInstance The created stage instance
18
+ */
19
+ client.emit(Events.STAGE_INSTANCE_CREATE, stageInstance);
20
+
21
+ return { stageInstance };
22
+ }
23
+
24
+ return {};
25
+ }
26
+ }
27
+
28
+ module.exports = StageInstanceCreateAction;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { deletedStageInstances } = require('../../structures/StageInstance');
5
+ const { Events } = require('../../util/Constants');
6
+
7
+ class StageInstanceDeleteAction extends Action {
8
+ handle(data) {
9
+ const client = this.client;
10
+ const channel = this.getChannel({ id: data.channel_id, guild_id: data.guild_id });
11
+
12
+ if (channel) {
13
+ const stageInstance = channel.guild.stageInstances._add(data);
14
+ if (stageInstance) {
15
+ channel.guild.stageInstances.cache.delete(stageInstance.id);
16
+ deletedStageInstances.add(stageInstance);
17
+
18
+ /**
19
+ * Emitted whenever a stage instance is deleted.
20
+ * @event Client#stageInstanceDelete
21
+ * @param {StageInstance} stageInstance The deleted stage instance
22
+ */
23
+ client.emit(Events.STAGE_INSTANCE_DELETE, stageInstance);
24
+
25
+ return { stageInstance };
26
+ }
27
+ }
28
+
29
+ return {};
30
+ }
31
+ }
32
+
33
+ module.exports = StageInstanceDeleteAction;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class StageInstanceUpdateAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const channel = this.getChannel({ id: data.channel_id, guild_id: data.guild_id });
10
+
11
+ if (channel) {
12
+ const oldStageInstance = channel.guild.stageInstances.cache.get(data.id)?._clone() ?? null;
13
+ const newStageInstance = channel.guild.stageInstances._add(data);
14
+
15
+ /**
16
+ * Emitted whenever a stage instance gets updated - e.g. change in topic or privacy level
17
+ * @event Client#stageInstanceUpdate
18
+ * @param {?StageInstance} oldStageInstance The stage instance before the update
19
+ * @param {StageInstance} newStageInstance The stage instance after the update
20
+ */
21
+ client.emit(Events.STAGE_INSTANCE_UPDATE, oldStageInstance, newStageInstance);
22
+
23
+ return { oldStageInstance, newStageInstance };
24
+ }
25
+
26
+ return {};
27
+ }
28
+ }
29
+
30
+ module.exports = StageInstanceUpdateAction;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class ThreadCreateAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const existing = client.channels.cache.has(data.id);
10
+ const thread = client.channels._add(data);
11
+ if (!existing && thread) {
12
+ /**
13
+ * Emitted whenever a thread is created or when the client user is added to a thread.
14
+ * @event Client#threadCreate
15
+ * @param {ThreadChannel} thread The thread that was created
16
+ * @param {boolean} newlyCreated Whether the thread was newly created
17
+ */
18
+ client.emit(Events.THREAD_CREATE, thread, data.newly_created ?? false);
19
+ }
20
+ return { thread };
21
+ }
22
+ }
23
+
24
+ module.exports = ThreadCreateAction;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { deletedChannels } = require('../../structures/Channel');
5
+ const { deletedMessages } = require('../../structures/Message');
6
+ const { Events } = require('../../util/Constants');
7
+
8
+ class ThreadDeleteAction extends Action {
9
+ handle(data) {
10
+ const client = this.client;
11
+ const thread = client.channels.cache.get(data.id);
12
+
13
+ if (thread) {
14
+ client.channels._remove(thread.id);
15
+ deletedChannels.add(thread);
16
+ for (const message of thread.messages.cache.values()) {
17
+ deletedMessages.add(message);
18
+ }
19
+
20
+ /**
21
+ * Emitted whenever a thread is deleted.
22
+ * @event Client#threadDelete
23
+ * @param {ThreadChannel} thread The thread that was deleted
24
+ */
25
+ client.emit(Events.THREAD_DELETE, thread);
26
+ }
27
+
28
+ return { thread };
29
+ }
30
+ }
31
+
32
+ module.exports = ThreadDeleteAction;