discord-sb.js 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +2 -0
  3. package/package.json +91 -0
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +86 -0
  6. package/src/client/Client.js +978 -0
  7. package/src/client/WebhookClient.js +61 -0
  8. package/src/client/actions/Action.js +116 -0
  9. package/src/client/actions/ActionsManager.js +80 -0
  10. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  11. package/src/client/actions/AutoModerationActionExecution.js +27 -0
  12. package/src/client/actions/AutoModerationRuleCreate.js +28 -0
  13. package/src/client/actions/AutoModerationRuleDelete.js +32 -0
  14. package/src/client/actions/AutoModerationRuleUpdate.js +30 -0
  15. package/src/client/actions/ChannelCreate.js +23 -0
  16. package/src/client/actions/ChannelDelete.js +39 -0
  17. package/src/client/actions/ChannelUpdate.js +43 -0
  18. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  19. package/src/client/actions/GuildBanAdd.js +20 -0
  20. package/src/client/actions/GuildBanRemove.js +25 -0
  21. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  22. package/src/client/actions/GuildDelete.js +65 -0
  23. package/src/client/actions/GuildEmojiCreate.js +20 -0
  24. package/src/client/actions/GuildEmojiDelete.js +21 -0
  25. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  26. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  27. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  28. package/src/client/actions/GuildMemberRemove.js +33 -0
  29. package/src/client/actions/GuildMemberUpdate.js +44 -0
  30. package/src/client/actions/GuildRoleCreate.js +25 -0
  31. package/src/client/actions/GuildRoleDelete.js +31 -0
  32. package/src/client/actions/GuildRoleUpdate.js +39 -0
  33. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  34. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  35. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  36. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  37. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  38. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  39. package/src/client/actions/GuildStickerCreate.js +20 -0
  40. package/src/client/actions/GuildStickerDelete.js +21 -0
  41. package/src/client/actions/GuildStickerUpdate.js +20 -0
  42. package/src/client/actions/GuildStickersUpdate.js +34 -0
  43. package/src/client/actions/GuildUpdate.js +33 -0
  44. package/src/client/actions/InviteCreate.js +28 -0
  45. package/src/client/actions/InviteDelete.js +30 -0
  46. package/src/client/actions/MessageCreate.js +50 -0
  47. package/src/client/actions/MessageDelete.js +32 -0
  48. package/src/client/actions/MessageDeleteBulk.js +46 -0
  49. package/src/client/actions/MessagePollVoteAdd.js +33 -0
  50. package/src/client/actions/MessagePollVoteRemove.js +33 -0
  51. package/src/client/actions/MessageReactionAdd.js +68 -0
  52. package/src/client/actions/MessageReactionRemove.js +50 -0
  53. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  54. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  55. package/src/client/actions/MessageUpdate.js +26 -0
  56. package/src/client/actions/PresenceUpdate.js +50 -0
  57. package/src/client/actions/StageInstanceCreate.js +28 -0
  58. package/src/client/actions/StageInstanceDelete.js +33 -0
  59. package/src/client/actions/StageInstanceUpdate.js +30 -0
  60. package/src/client/actions/ThreadCreate.js +24 -0
  61. package/src/client/actions/ThreadDelete.js +32 -0
  62. package/src/client/actions/ThreadListSync.js +59 -0
  63. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  64. package/src/client/actions/ThreadMembersUpdate.js +34 -0
  65. package/src/client/actions/TypingStart.js +29 -0
  66. package/src/client/actions/UserUpdate.js +35 -0
  67. package/src/client/actions/VoiceStateUpdate.js +50 -0
  68. package/src/client/actions/WebhooksUpdate.js +20 -0
  69. package/src/client/voice/ClientVoiceManager.js +151 -0
  70. package/src/client/voice/VoiceConnection.js +1249 -0
  71. package/src/client/voice/dispatcher/AnnexBDispatcher.js +120 -0
  72. package/src/client/voice/dispatcher/AudioDispatcher.js +145 -0
  73. package/src/client/voice/dispatcher/BaseDispatcher.js +459 -0
  74. package/src/client/voice/dispatcher/VPxDispatcher.js +54 -0
  75. package/src/client/voice/dispatcher/VideoDispatcher.js +68 -0
  76. package/src/client/voice/networking/VoiceUDPClient.js +173 -0
  77. package/src/client/voice/networking/VoiceWebSocket.js +286 -0
  78. package/src/client/voice/player/MediaPlayer.js +321 -0
  79. package/src/client/voice/player/processing/AnnexBNalSplitter.js +244 -0
  80. package/src/client/voice/player/processing/IvfSplitter.js +106 -0
  81. package/src/client/voice/player/processing/PCMInsertSilence.js +37 -0
  82. package/src/client/voice/receiver/PacketHandler.js +260 -0
  83. package/src/client/voice/receiver/Receiver.js +96 -0
  84. package/src/client/voice/receiver/Recorder.js +173 -0
  85. package/src/client/voice/util/Function.js +116 -0
  86. package/src/client/voice/util/PlayInterface.js +122 -0
  87. package/src/client/voice/util/Secretbox.js +64 -0
  88. package/src/client/voice/util/Silence.js +16 -0
  89. package/src/client/voice/util/Socket.js +62 -0
  90. package/src/client/voice/util/VolumeInterface.js +104 -0
  91. package/src/client/websocket/WebSocketManager.js +392 -0
  92. package/src/client/websocket/WebSocketShard.js +907 -0
  93. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  94. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  95. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  96. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  97. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  98. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  99. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  100. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  101. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  102. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  103. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  104. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  105. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  106. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  107. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -0
  108. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  109. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  110. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  111. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  112. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  113. package/src/client/websocket/handlers/GUILD_CREATE.js +52 -0
  114. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  115. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  116. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  117. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  118. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  119. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  120. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  121. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  122. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  123. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  124. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  125. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  126. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  127. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  128. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  129. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  130. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  131. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -0
  132. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  133. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  134. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  135. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  136. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  137. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +5 -0
  138. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -0
  139. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  140. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  141. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  142. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  143. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  144. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  145. package/src/client/websocket/handlers/READY.js +121 -0
  146. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -0
  147. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -0
  148. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -0
  149. package/src/client/websocket/handlers/RESUMED.js +14 -0
  150. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  151. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  152. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  153. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  154. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  155. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  156. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  157. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  158. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  159. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  160. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -0
  161. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  162. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -0
  163. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -0
  164. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  165. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
  166. package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
  167. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  168. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  169. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  170. package/src/client/websocket/handlers/index.js +84 -0
  171. package/src/errors/DJSError.js +61 -0
  172. package/src/errors/Messages.js +217 -0
  173. package/src/errors/index.js +4 -0
  174. package/src/index.js +172 -0
  175. package/src/managers/ApplicationCommandManager.js +264 -0
  176. package/src/managers/ApplicationCommandPermissionsManager.js +417 -0
  177. package/src/managers/AutoModerationRuleManager.js +296 -0
  178. package/src/managers/BaseGuildEmojiManager.js +80 -0
  179. package/src/managers/BaseManager.js +19 -0
  180. package/src/managers/BillingManager.js +66 -0
  181. package/src/managers/CachedManager.js +71 -0
  182. package/src/managers/ChannelManager.js +148 -0
  183. package/src/managers/ClientUserSettingManager.js +372 -0
  184. package/src/managers/DataManager.js +61 -0
  185. package/src/managers/DeveloperManager.js +254 -0
  186. package/src/managers/GuildBanManager.js +250 -0
  187. package/src/managers/GuildChannelManager.js +488 -0
  188. package/src/managers/GuildEmojiManager.js +171 -0
  189. package/src/managers/GuildEmojiRoleManager.js +118 -0
  190. package/src/managers/GuildForumThreadManager.js +108 -0
  191. package/src/managers/GuildInviteManager.js +213 -0
  192. package/src/managers/GuildManager.js +338 -0
  193. package/src/managers/GuildMemberManager.js +599 -0
  194. package/src/managers/GuildMemberRoleManager.js +195 -0
  195. package/src/managers/GuildScheduledEventManager.js +314 -0
  196. package/src/managers/GuildSettingManager.js +155 -0
  197. package/src/managers/GuildStickerManager.js +179 -0
  198. package/src/managers/GuildTextThreadManager.js +98 -0
  199. package/src/managers/InteractionManager.js +39 -0
  200. package/src/managers/MessageManager.js +423 -0
  201. package/src/managers/PermissionOverwriteManager.js +164 -0
  202. package/src/managers/PresenceManager.js +71 -0
  203. package/src/managers/QuestManager.js +353 -0
  204. package/src/managers/ReactionManager.js +67 -0
  205. package/src/managers/ReactionUserManager.js +73 -0
  206. package/src/managers/RelationshipManager.js +278 -0
  207. package/src/managers/RoleManager.js +448 -0
  208. package/src/managers/SessionManager.js +66 -0
  209. package/src/managers/StageInstanceManager.js +162 -0
  210. package/src/managers/ThreadManager.js +175 -0
  211. package/src/managers/ThreadMemberManager.js +186 -0
  212. package/src/managers/UserManager.js +136 -0
  213. package/src/managers/UserNoteManager.js +53 -0
  214. package/src/managers/VoiceStateManager.js +59 -0
  215. package/src/rest/APIRequest.js +154 -0
  216. package/src/rest/APIRouter.js +53 -0
  217. package/src/rest/DiscordAPIError.js +119 -0
  218. package/src/rest/HTTPError.js +62 -0
  219. package/src/rest/RESTManager.js +67 -0
  220. package/src/rest/RateLimitError.js +55 -0
  221. package/src/rest/RequestHandler.js +466 -0
  222. package/src/sharding/Shard.js +444 -0
  223. package/src/sharding/ShardClientUtil.js +279 -0
  224. package/src/sharding/ShardingManager.js +319 -0
  225. package/src/structures/AnonymousGuild.js +98 -0
  226. package/src/structures/ApplicationCommand.js +593 -0
  227. package/src/structures/ApplicationRoleConnectionMetadata.js +48 -0
  228. package/src/structures/AutoModerationActionExecution.js +89 -0
  229. package/src/structures/AutoModerationRule.js +294 -0
  230. package/src/structures/AutocompleteInteraction.js +107 -0
  231. package/src/structures/Base.js +43 -0
  232. package/src/structures/BaseCommandInteraction.js +211 -0
  233. package/src/structures/BaseGuild.js +116 -0
  234. package/src/structures/BaseGuildEmoji.js +56 -0
  235. package/src/structures/BaseGuildTextChannel.js +191 -0
  236. package/src/structures/BaseGuildVoiceChannel.js +241 -0
  237. package/src/structures/BaseMessageComponent.js +181 -0
  238. package/src/structures/ButtonInteraction.js +11 -0
  239. package/src/structures/CallState.js +63 -0
  240. package/src/structures/CategoryChannel.js +85 -0
  241. package/src/structures/Channel.js +284 -0
  242. package/src/structures/ClientPresence.js +77 -0
  243. package/src/structures/ClientUser.js +655 -0
  244. package/src/structures/CommandInteraction.js +41 -0
  245. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  246. package/src/structures/ContainerComponent.js +68 -0
  247. package/src/structures/ContextMenuInteraction.js +65 -0
  248. package/src/structures/DMChannel.js +219 -0
  249. package/src/structures/DirectoryChannel.js +20 -0
  250. package/src/structures/Emoji.js +148 -0
  251. package/src/structures/FileComponent.js +49 -0
  252. package/src/structures/ForumChannel.js +31 -0
  253. package/src/structures/GroupDMChannel.js +394 -0
  254. package/src/structures/Guild.js +1791 -0
  255. package/src/structures/GuildAuditLogs.js +746 -0
  256. package/src/structures/GuildBan.js +59 -0
  257. package/src/structures/GuildBoost.js +108 -0
  258. package/src/structures/GuildChannel.js +470 -0
  259. package/src/structures/GuildEmoji.js +161 -0
  260. package/src/structures/GuildMember.js +636 -0
  261. package/src/structures/GuildPreview.js +191 -0
  262. package/src/structures/GuildPreviewEmoji.js +27 -0
  263. package/src/structures/GuildScheduledEvent.js +536 -0
  264. package/src/structures/GuildTemplate.js +236 -0
  265. package/src/structures/Integration.js +188 -0
  266. package/src/structures/IntegrationApplication.js +96 -0
  267. package/src/structures/Interaction.js +290 -0
  268. package/src/structures/InteractionCollector.js +248 -0
  269. package/src/structures/InteractionWebhook.js +43 -0
  270. package/src/structures/Invite.js +358 -0
  271. package/src/structures/InviteGuild.js +23 -0
  272. package/src/structures/InviteStageInstance.js +86 -0
  273. package/src/structures/MediaChannel.js +11 -0
  274. package/src/structures/MediaGalleryComponent.js +41 -0
  275. package/src/structures/MediaGalleryItem.js +47 -0
  276. package/src/structures/Message.js +1252 -0
  277. package/src/structures/MessageActionRow.js +105 -0
  278. package/src/structures/MessageAttachment.js +216 -0
  279. package/src/structures/MessageButton.js +166 -0
  280. package/src/structures/MessageCollector.js +146 -0
  281. package/src/structures/MessageComponentInteraction.js +120 -0
  282. package/src/structures/MessageContextMenuInteraction.js +20 -0
  283. package/src/structures/MessageEmbed.js +596 -0
  284. package/src/structures/MessageMentions.js +273 -0
  285. package/src/structures/MessagePayload.js +354 -0
  286. package/src/structures/MessageReaction.js +181 -0
  287. package/src/structures/MessageSelectMenu.js +141 -0
  288. package/src/structures/Modal.js +161 -0
  289. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  290. package/src/structures/ModalSubmitInteraction.js +119 -0
  291. package/src/structures/NewsChannel.js +32 -0
  292. package/src/structures/OAuth2Guild.js +28 -0
  293. package/src/structures/PermissionOverwrites.js +198 -0
  294. package/src/structures/Poll.js +108 -0
  295. package/src/structures/PollAnswer.js +88 -0
  296. package/src/structures/Presence.js +1157 -0
  297. package/src/structures/ReactionCollector.js +229 -0
  298. package/src/structures/ReactionEmoji.js +31 -0
  299. package/src/structures/Role.js +590 -0
  300. package/src/structures/SectionComponent.js +48 -0
  301. package/src/structures/SelectMenuInteraction.js +21 -0
  302. package/src/structures/SeparatorComponent.js +48 -0
  303. package/src/structures/Session.js +81 -0
  304. package/src/structures/StageChannel.js +104 -0
  305. package/src/structures/StageInstance.js +208 -0
  306. package/src/structures/Sticker.js +310 -0
  307. package/src/structures/StickerPack.js +95 -0
  308. package/src/structures/StoreChannel.js +56 -0
  309. package/src/structures/Team.js +118 -0
  310. package/src/structures/TeamMember.js +80 -0
  311. package/src/structures/TextChannel.js +33 -0
  312. package/src/structures/TextDisplayComponent.js +40 -0
  313. package/src/structures/TextInputComponent.js +132 -0
  314. package/src/structures/ThreadChannel.js +605 -0
  315. package/src/structures/ThreadMember.js +105 -0
  316. package/src/structures/ThreadOnlyChannel.js +249 -0
  317. package/src/structures/ThumbnailComponent.js +57 -0
  318. package/src/structures/Typing.js +74 -0
  319. package/src/structures/UnfurledMediaItem.js +29 -0
  320. package/src/structures/User.js +640 -0
  321. package/src/structures/UserContextMenuInteraction.js +29 -0
  322. package/src/structures/VoiceChannel.js +110 -0
  323. package/src/structures/VoiceChannelEffect.js +69 -0
  324. package/src/structures/VoiceRegion.js +53 -0
  325. package/src/structures/VoiceState.js +354 -0
  326. package/src/structures/WebEmbed.js +373 -0
  327. package/src/structures/Webhook.js +478 -0
  328. package/src/structures/WelcomeChannel.js +60 -0
  329. package/src/structures/WelcomeScreen.js +48 -0
  330. package/src/structures/Widget.js +87 -0
  331. package/src/structures/WidgetMember.js +99 -0
  332. package/src/structures/interfaces/Application.js +953 -0
  333. package/src/structures/interfaces/Collector.js +300 -0
  334. package/src/structures/interfaces/InteractionResponses.js +313 -0
  335. package/src/structures/interfaces/TextBasedChannel.js +821 -0
  336. package/src/util/APITypes.js +59 -0
  337. package/src/util/ActivityFlags.js +44 -0
  338. package/src/util/ApplicationFlags.js +76 -0
  339. package/src/util/AttachmentFlags.js +38 -0
  340. package/src/util/BitField.js +170 -0
  341. package/src/util/ChannelFlags.js +45 -0
  342. package/src/util/Constants.js +1914 -0
  343. package/src/util/DataResolver.js +146 -0
  344. package/src/util/Formatters.js +228 -0
  345. package/src/util/GuildMemberFlags.js +43 -0
  346. package/src/util/Intents.js +74 -0
  347. package/src/util/InviteFlags.js +34 -0
  348. package/src/util/LimitedCollection.js +131 -0
  349. package/src/util/MessageFlags.js +63 -0
  350. package/src/util/Options.js +358 -0
  351. package/src/util/Permissions.js +202 -0
  352. package/src/util/PremiumUsageFlags.js +31 -0
  353. package/src/util/PurchasedFlags.js +33 -0
  354. package/src/util/RemoteAuth.js +415 -0
  355. package/src/util/RoleFlags.js +37 -0
  356. package/src/util/SnowflakeUtil.js +92 -0
  357. package/src/util/Speaking.js +33 -0
  358. package/src/util/Sweepers.js +466 -0
  359. package/src/util/SystemChannelFlags.js +55 -0
  360. package/src/util/ThreadMemberFlags.js +30 -0
  361. package/src/util/UserFlags.js +104 -0
  362. package/src/util/Util.js +1048 -0
  363. package/typings/enums.d.ts +439 -0
  364. package/typings/index.d.ts +8505 -0
  365. package/typings/index.test-d.ts +0 -0
  366. package/typings/rawDataTypes.d.ts +403 -0
@@ -0,0 +1,105 @@
1
+ 'use strict';
2
+
3
+ const BaseMessageComponent = require('./BaseMessageComponent');
4
+ const { MessageComponentTypes } = require('../util/Constants');
5
+
6
+ /**
7
+ * Represents an action row containing message components.
8
+ * @extends {BaseMessageComponent}
9
+ */
10
+ class MessageActionRow extends BaseMessageComponent {
11
+ /**
12
+ * Components that can be placed in an action row
13
+ * * MessageButton
14
+ * * MessageSelectMenu
15
+ * * TextInputComponent
16
+ * @typedef {MessageButton|MessageSelectMenu|TextInputComponent} MessageActionRowComponent
17
+ */
18
+
19
+ /**
20
+ * Options for components that can be placed in an action row
21
+ * * MessageButtonOptions
22
+ * * MessageSelectMenuOptions
23
+ * * TextInputComponentOptions
24
+ * @typedef {MessageButtonOptions|MessageSelectMenuOptions|TextInputComponentOptions} MessageActionRowComponentOptions
25
+ */
26
+
27
+ /**
28
+ * Data that can be resolved into components that can be placed in an action row
29
+ * * MessageActionRowComponent
30
+ * * MessageActionRowComponentOptions
31
+ * @typedef {MessageActionRowComponent|MessageActionRowComponentOptions} MessageActionRowComponentResolvable
32
+ */
33
+
34
+ /**
35
+ * @typedef {BaseMessageComponentOptions} MessageActionRowOptions
36
+ * @property {MessageActionRowComponentResolvable[]} [components]
37
+ * The components to place in this action row
38
+ */
39
+
40
+ /**
41
+ * @param {MessageActionRow|MessageActionRowOptions} [data={}] MessageActionRow to clone or raw data
42
+ * @param {Client} [client] The client constructing this MessageActionRow, if provided
43
+ */
44
+ constructor(data = {}, client = null) {
45
+ super({ type: 'ACTION_ROW' });
46
+
47
+ /**
48
+ * The components in this action row
49
+ * @type {MessageActionRowComponent[]}
50
+ */
51
+ this.components = data.components?.map(c => BaseMessageComponent.create(c, client)) ?? [];
52
+
53
+ super.setup(data);
54
+ }
55
+
56
+ /**
57
+ * Adds components to the action row.
58
+ * @param {...MessageActionRowComponentResolvable[]} components The components to add
59
+ * @returns {MessageActionRow}
60
+ */
61
+ addComponents(...components) {
62
+ this.components.push(...components.flat(Infinity).map(c => BaseMessageComponent.create(c)));
63
+ return this;
64
+ }
65
+
66
+ /**
67
+ * Sets the components of the action row.
68
+ * @param {...MessageActionRowComponentResolvable[]} components The components to set
69
+ * @returns {MessageActionRow}
70
+ */
71
+ setComponents(...components) {
72
+ this.spliceComponents(0, this.components.length, components);
73
+ return this;
74
+ }
75
+
76
+ /**
77
+ * Removes, replaces, and inserts components in the action row.
78
+ * @param {number} index The index to start at
79
+ * @param {number} deleteCount The number of components to remove
80
+ * @param {...MessageActionRowComponentResolvable[]} [components] The replacing components
81
+ * @returns {MessageActionRow}
82
+ */
83
+ spliceComponents(index, deleteCount, ...components) {
84
+ this.components.splice(index, deleteCount, ...components.flat(Infinity).map(c => BaseMessageComponent.create(c)));
85
+ return this;
86
+ }
87
+
88
+ /**
89
+ * Transforms the action row to a plain object.
90
+ * @returns {APIMessageComponent} The raw data of this action row
91
+ */
92
+ toJSON() {
93
+ return {
94
+ components: this.components.map(c => c.toJSON()),
95
+ type: MessageComponentTypes[this.type],
96
+ };
97
+ }
98
+ }
99
+
100
+ module.exports = MessageActionRow;
101
+
102
+ /**
103
+ * @external APIMessageComponent
104
+ * @see {@link https://discord.com/developers/docs/interactions/message-components#component-object}
105
+ */
@@ -0,0 +1,216 @@
1
+ 'use strict';
2
+
3
+ const AttachmentFlags = require('../util/AttachmentFlags');
4
+ const Util = require('../util/Util');
5
+
6
+ /**
7
+ * Represents an attachment in a message.
8
+ */
9
+ class MessageAttachment {
10
+ /**
11
+ * @param {BufferResolvable|Stream} attachment The file
12
+ * @param {string} [name=null] The name of the file, if any
13
+ * @param {APIAttachment} [data] Extra data
14
+ */
15
+ constructor(attachment, name = null, data) {
16
+ this.attachment = attachment;
17
+ /**
18
+ * The name of this attachment
19
+ * @type {?string}
20
+ */
21
+ this.name = name;
22
+ if (data) this._patch(data);
23
+ }
24
+
25
+ /**
26
+ * Sets the description of this attachment.
27
+ * @param {string} description The description of the file
28
+ * @returns {MessageAttachment} This attachment
29
+ */
30
+ setDescription(description) {
31
+ this.description = description;
32
+ return this;
33
+ }
34
+
35
+ /**
36
+ * Sets the file of this attachment.
37
+ * @param {BufferResolvable|Stream} attachment The file
38
+ * @param {string} [name=null] The name of the file, if any
39
+ * @returns {MessageAttachment} This attachment
40
+ */
41
+ setFile(attachment, name = null) {
42
+ this.attachment = attachment;
43
+ this.name = name;
44
+ return this;
45
+ }
46
+
47
+ /**
48
+ * Sets the name of this attachment.
49
+ * @param {string} name The name of the file
50
+ * @returns {MessageAttachment} This attachment
51
+ */
52
+ setName(name) {
53
+ this.name = name;
54
+ return this;
55
+ }
56
+
57
+ /**
58
+ * Sets whether this attachment is a spoiler
59
+ * @param {boolean} [spoiler=true] Whether the attachment should be marked as a spoiler
60
+ * @returns {MessageAttachment} This attachment
61
+ */
62
+ setSpoiler(spoiler = true) {
63
+ if (spoiler === this.spoiler) return this;
64
+
65
+ if (!spoiler) {
66
+ while (this.spoiler) {
67
+ this.name = this.name.slice('SPOILER_'.length);
68
+ }
69
+ return this;
70
+ }
71
+ this.name = `SPOILER_${this.name}`;
72
+ return this;
73
+ }
74
+
75
+ _patch(data) {
76
+ /**
77
+ * The attachment's id
78
+ * @type {Snowflake}
79
+ */
80
+ this.id = data.id;
81
+
82
+ if ('size' in data) {
83
+ /**
84
+ * The size of this attachment in bytes
85
+ * @type {number}
86
+ */
87
+ this.size = data.size;
88
+ }
89
+
90
+ if ('url' in data) {
91
+ /**
92
+ * The URL to this attachment
93
+ * @type {string}
94
+ */
95
+ this.url = data.url;
96
+ }
97
+
98
+ if ('proxy_url' in data) {
99
+ /**
100
+ * The Proxy URL to this attachment
101
+ * @type {string}
102
+ */
103
+ this.proxyURL = data.proxy_url;
104
+ }
105
+
106
+ if ('height' in data) {
107
+ /**
108
+ * The height of this attachment (if an image or video)
109
+ * @type {?number}
110
+ */
111
+ this.height = data.height;
112
+ } else {
113
+ this.height ??= null;
114
+ }
115
+
116
+ if ('width' in data) {
117
+ /**
118
+ * The width of this attachment (if an image or video)
119
+ * @type {?number}
120
+ */
121
+ this.width = data.width;
122
+ } else {
123
+ this.width ??= null;
124
+ }
125
+
126
+ if ('content_type' in data) {
127
+ /**
128
+ * The media (MIME) type of this attachment
129
+ * @type {?string}
130
+ * @see {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types}
131
+ */
132
+ this.contentType = data.content_type;
133
+ } else {
134
+ this.contentType ??= null;
135
+ }
136
+
137
+ if ('description' in data) {
138
+ /**
139
+ * The description (alt text) of this attachment
140
+ * @type {?string}
141
+ */
142
+ this.description = data.description;
143
+ } else {
144
+ this.description ??= null;
145
+ }
146
+
147
+ /**
148
+ * Whether this attachment is ephemeral
149
+ * @type {boolean}
150
+ */
151
+ this.ephemeral = data.ephemeral ?? false;
152
+
153
+ if ('duration_secs' in data) {
154
+ /**
155
+ * The duration of this attachment in seconds
156
+ * <info>This will only be available if the attachment is an audio file.</info>
157
+ * @type {?number}
158
+ */
159
+ this.duration = data.duration_secs;
160
+ } else {
161
+ this.duration ??= null;
162
+ }
163
+
164
+ if ('waveform' in data) {
165
+ /**
166
+ * The base64 encoded byte array representing a sampled waveform
167
+ * <info>This will only be available if the attachment is an audio file.</info>
168
+ * @type {?string}
169
+ */
170
+ this.waveform = data.waveform;
171
+ } else {
172
+ this.waveform ??= null;
173
+ }
174
+
175
+ if ('flags' in data) {
176
+ /**
177
+ * The flags of this attachment
178
+ * @type {Readonly<AttachmentFlags>}
179
+ */
180
+ this.flags = new AttachmentFlags(data.flags).freeze();
181
+ } else {
182
+ this.flags ??= new AttachmentFlags().freeze();
183
+ }
184
+
185
+ if ('title' in data) {
186
+ /**
187
+ * The title of this attachment
188
+ * <info>This will only be available if the attachment name contains special characters.</info>
189
+ * @type {?string}
190
+ */
191
+ this.title = data.title;
192
+ } else {
193
+ this.title ??= null;
194
+ }
195
+ }
196
+
197
+ /**
198
+ * Whether or not this attachment has been marked as a spoiler
199
+ * @type {boolean}
200
+ * @readonly
201
+ */
202
+ get spoiler() {
203
+ return Util.basename(this.url ?? this.name).startsWith('SPOILER_');
204
+ }
205
+
206
+ toJSON() {
207
+ return Util.flatten(this);
208
+ }
209
+ }
210
+
211
+ module.exports = MessageAttachment;
212
+
213
+ /**
214
+ * @external APIAttachment
215
+ * @see {@link https://discord.com/developers/docs/resources/channel#attachment-object}
216
+ */
@@ -0,0 +1,166 @@
1
+ 'use strict';
2
+
3
+ const BaseMessageComponent = require('./BaseMessageComponent');
4
+ const { RangeError } = require('../errors');
5
+ const { MessageButtonStyles, MessageComponentTypes } = require('../util/Constants');
6
+ const Util = require('../util/Util');
7
+
8
+ /**
9
+ * Represents a button message component.
10
+ * @extends {BaseMessageComponent}
11
+ */
12
+ class MessageButton extends BaseMessageComponent {
13
+ /**
14
+ * @typedef {BaseMessageComponentOptions} MessageButtonOptions
15
+ * @property {string} [label] The text to be displayed on this button
16
+ * @property {string} [customId] A unique string to be sent in the interaction when clicked
17
+ * @property {MessageButtonStyleResolvable} [style] The style of this button
18
+ * @property {EmojiIdentifierResolvable} [emoji] The emoji to be displayed to the left of the text
19
+ * @property {string} [url] Optional URL for link-style buttons
20
+ * @property {boolean} [disabled=false] Disables the button to prevent interactions
21
+ */
22
+
23
+ /**
24
+ * @param {MessageButton|MessageButtonOptions} [data={}] MessageButton to clone or raw data
25
+ */
26
+ constructor(data = {}) {
27
+ super({ type: 'BUTTON' });
28
+
29
+ this.setup(data);
30
+ }
31
+
32
+ setup(data) {
33
+ super.setup(data);
34
+ /**
35
+ * The text to be displayed on this button
36
+ * @type {?string}
37
+ */
38
+ this.label = data.label ?? null;
39
+
40
+ /**
41
+ * A unique string to be sent in the interaction when clicked
42
+ * @type {?string}
43
+ */
44
+ this.customId = data.custom_id ?? data.customId ?? null;
45
+
46
+ /**
47
+ * The style of this button
48
+ * @type {?MessageButtonStyle}
49
+ */
50
+ this.style = data.style ? MessageButton.resolveStyle(data.style) : null;
51
+
52
+ /**
53
+ * Emoji for this button
54
+ * @type {?RawEmoji}
55
+ */
56
+ this.emoji = data.emoji ? Util.resolvePartialEmoji(data.emoji) : null;
57
+
58
+ /**
59
+ * The URL this button links to, if it is a Link style button
60
+ * @type {?string}
61
+ */
62
+ this.url = data.url ?? null;
63
+
64
+ /**
65
+ * Whether this button is currently disabled
66
+ * @type {boolean}
67
+ */
68
+ this.disabled = data.disabled ?? false;
69
+ }
70
+
71
+ /**
72
+ * Sets the custom id for this button
73
+ * @param {string} customId A unique string to be sent in the interaction when clicked
74
+ * @returns {MessageButton}
75
+ */
76
+ setCustomId(customId) {
77
+ this.customId = Util.verifyString(customId, RangeError, 'BUTTON_CUSTOM_ID');
78
+ return this;
79
+ }
80
+
81
+ /**
82
+ * Sets the interactive status of the button
83
+ * @param {boolean} [disabled=true] Whether this button should be disabled
84
+ * @returns {MessageButton}
85
+ */
86
+ setDisabled(disabled = true) {
87
+ this.disabled = disabled;
88
+ return this;
89
+ }
90
+
91
+ /**
92
+ * Set the emoji of this button
93
+ * @param {EmojiIdentifierResolvable} emoji The emoji to be displayed on this button
94
+ * @returns {MessageButton}
95
+ */
96
+ setEmoji(emoji) {
97
+ this.emoji = Util.resolvePartialEmoji(emoji);
98
+ return this;
99
+ }
100
+
101
+ /**
102
+ * Sets the label of this button
103
+ * @param {string} label The text to be displayed on this button
104
+ * @returns {MessageButton}
105
+ */
106
+ setLabel(label) {
107
+ this.label = Util.verifyString(label, RangeError, 'BUTTON_LABEL');
108
+ return this;
109
+ }
110
+
111
+ /**
112
+ * Sets the style of this button
113
+ * @param {MessageButtonStyleResolvable} style The style of this button
114
+ * @returns {MessageButton}
115
+ */
116
+ setStyle(style) {
117
+ this.style = MessageButton.resolveStyle(style);
118
+ return this;
119
+ }
120
+
121
+ /**
122
+ * Sets the URL of this button.
123
+ * <info>MessageButton#style must be LINK when setting a URL</info>
124
+ * @param {string} url The URL of this button
125
+ * @returns {MessageButton}
126
+ */
127
+ setURL(url) {
128
+ this.url = Util.verifyString(url, RangeError, 'BUTTON_URL');
129
+ return this;
130
+ }
131
+
132
+ /**
133
+ * Transforms the button to a plain object.
134
+ * @returns {APIMessageButton} The raw data of this button
135
+ */
136
+ toJSON() {
137
+ return {
138
+ custom_id: this.customId,
139
+ disabled: this.disabled,
140
+ emoji: this.emoji,
141
+ label: this.label,
142
+ style: MessageButtonStyles[this.style],
143
+ type: MessageComponentTypes[this.type],
144
+ url: this.url,
145
+ };
146
+ }
147
+
148
+ /**
149
+ * Data that can be resolved to a MessageButtonStyle. This can be
150
+ * * MessageButtonStyle
151
+ * * number
152
+ * @typedef {number|MessageButtonStyle} MessageButtonStyleResolvable
153
+ */
154
+
155
+ /**
156
+ * Resolves the style of a button
157
+ * @param {MessageButtonStyleResolvable} style The style to resolve
158
+ * @returns {MessageButtonStyle}
159
+ * @private
160
+ */
161
+ static resolveStyle(style) {
162
+ return typeof style === 'string' ? style : MessageButtonStyles[style];
163
+ }
164
+ }
165
+
166
+ module.exports = MessageButton;
@@ -0,0 +1,146 @@
1
+ 'use strict';
2
+
3
+ const Collector = require('./interfaces/Collector');
4
+ const { Events } = require('../util/Constants');
5
+
6
+ /**
7
+ * @typedef {CollectorOptions} MessageCollectorOptions
8
+ * @property {number} max The maximum amount of messages to collect
9
+ * @property {number} maxProcessed The maximum amount of messages to process
10
+ */
11
+
12
+ /**
13
+ * Collects messages on a channel.
14
+ * Will automatically stop if the channel ({@link Client#event:channelDelete channelDelete}),
15
+ * thread ({@link Client#event:threadDelete threadDelete}), or
16
+ * guild ({@link Client#event:guildDelete guildDelete}) is deleted.
17
+ * @extends {Collector}
18
+ */
19
+ class MessageCollector extends Collector {
20
+ /**
21
+ * @param {TextBasedChannels} channel The channel
22
+ * @param {MessageCollectorOptions} options The options to be applied to this collector
23
+ * @emits MessageCollector#message
24
+ */
25
+ constructor(channel, options = {}) {
26
+ super(channel.client, options);
27
+
28
+ /**
29
+ * The channel
30
+ * @type {TextBasedChannels}
31
+ */
32
+ this.channel = channel;
33
+
34
+ /**
35
+ * Total number of messages that were received in the channel during message collection
36
+ * @type {number}
37
+ */
38
+ this.received = 0;
39
+
40
+ const bulkDeleteListener = messages => {
41
+ for (const message of messages.values()) this.handleDispose(message);
42
+ };
43
+
44
+ this._handleChannelDeletion = this._handleChannelDeletion.bind(this);
45
+ this._handleThreadDeletion = this._handleThreadDeletion.bind(this);
46
+ this._handleGuildDeletion = this._handleGuildDeletion.bind(this);
47
+
48
+ this.client.incrementMaxListeners();
49
+ this.client.on(Events.MESSAGE_CREATE, this.handleCollect);
50
+ this.client.on(Events.MESSAGE_DELETE, this.handleDispose);
51
+ this.client.on(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);
52
+ this.client.on(Events.CHANNEL_DELETE, this._handleChannelDeletion);
53
+ this.client.on(Events.THREAD_DELETE, this._handleThreadDeletion);
54
+ this.client.on(Events.GUILD_DELETE, this._handleGuildDeletion);
55
+
56
+ this.once('end', () => {
57
+ this.client.removeListener(Events.MESSAGE_CREATE, this.handleCollect);
58
+ this.client.removeListener(Events.MESSAGE_DELETE, this.handleDispose);
59
+ this.client.removeListener(Events.MESSAGE_BULK_DELETE, bulkDeleteListener);
60
+ this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion);
61
+ this.client.removeListener(Events.THREAD_DELETE, this._handleThreadDeletion);
62
+ this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion);
63
+ this.client.decrementMaxListeners();
64
+ });
65
+ }
66
+
67
+ /**
68
+ * Handles a message for possible collection.
69
+ * @param {Message} message The message that could be collected
70
+ * @returns {?Snowflake}
71
+ * @private
72
+ */
73
+ collect(message) {
74
+ /**
75
+ * Emitted whenever a message is collected.
76
+ * @event MessageCollector#collect
77
+ * @param {Message} message The message that was collected
78
+ */
79
+ if (message.channelId !== this.channel.id) return null;
80
+ this.received++;
81
+ return message.id;
82
+ }
83
+
84
+ /**
85
+ * Handles a message for possible disposal.
86
+ * @param {Message} message The message that could be disposed of
87
+ * @returns {?Snowflake}
88
+ */
89
+ dispose(message) {
90
+ /**
91
+ * Emitted whenever a message is disposed of.
92
+ * @event MessageCollector#dispose
93
+ * @param {Message} message The message that was disposed of
94
+ */
95
+ return message.channelId === this.channel.id ? message.id : null;
96
+ }
97
+
98
+ /**
99
+ * The reason this collector has ended with, or null if it hasn't ended yet
100
+ * @type {?string}
101
+ * @readonly
102
+ */
103
+ get endReason() {
104
+ if (this.options.max && this.collected.size >= this.options.max) return 'limit';
105
+ if (this.options.maxProcessed && this.received === this.options.maxProcessed) return 'processedLimit';
106
+ return null;
107
+ }
108
+
109
+ /**
110
+ * Handles checking if the channel has been deleted, and if so, stops the collector with the reason 'channelDelete'.
111
+ * @private
112
+ * @param {GuildChannel} channel The channel that was deleted
113
+ * @returns {void}
114
+ */
115
+ _handleChannelDeletion(channel) {
116
+ if (channel.id === this.channel.id || channel.id === this.channel.parentId) {
117
+ this.stop('channelDelete');
118
+ }
119
+ }
120
+
121
+ /**
122
+ * Handles checking if the thread has been deleted, and if so, stops the collector with the reason 'threadDelete'.
123
+ * @private
124
+ * @param {ThreadChannel} thread The thread that was deleted
125
+ * @returns {void}
126
+ */
127
+ _handleThreadDeletion(thread) {
128
+ if (thread.id === this.channel.id) {
129
+ this.stop('threadDelete');
130
+ }
131
+ }
132
+
133
+ /**
134
+ * Handles checking if the guild has been deleted, and if so, stops the collector with the reason 'guildDelete'.
135
+ * @private
136
+ * @param {Guild} guild The guild that was deleted
137
+ * @returns {void}
138
+ */
139
+ _handleGuildDeletion(guild) {
140
+ if (guild.id === this.channel.guild?.id) {
141
+ this.stop('guildDelete');
142
+ }
143
+ }
144
+ }
145
+
146
+ module.exports = MessageCollector;