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,211 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const Interaction = require('./Interaction');
5
+ const InteractionWebhook = require('./InteractionWebhook');
6
+ const MessageAttachment = require('./MessageAttachment');
7
+ const InteractionResponses = require('./interfaces/InteractionResponses');
8
+ const { ApplicationCommandOptionTypes } = require('../util/Constants');
9
+
10
+ /**
11
+ * Represents a command interaction.
12
+ * @extends {Interaction}
13
+ * @implements {InteractionResponses}
14
+ * @abstract
15
+ */
16
+ class BaseCommandInteraction extends Interaction {
17
+ constructor(client, data) {
18
+ super(client, data);
19
+
20
+ /**
21
+ * The id of the channel this interaction was sent in
22
+ * @type {Snowflake}
23
+ * @name BaseCommandInteraction#channelId
24
+ */
25
+
26
+ /**
27
+ * The invoked application command's id
28
+ * @type {Snowflake}
29
+ */
30
+ this.commandId = data.data.id;
31
+
32
+ /**
33
+ * The invoked application command's name
34
+ * @type {string}
35
+ */
36
+ this.commandName = data.data.name;
37
+
38
+ /**
39
+ * Whether the reply to this interaction has been deferred
40
+ * @type {boolean}
41
+ */
42
+ this.deferred = false;
43
+
44
+ /**
45
+ * Whether this interaction has already been replied to
46
+ * @type {boolean}
47
+ */
48
+ this.replied = false;
49
+
50
+ /**
51
+ * Whether the reply to this interaction is ephemeral
52
+ * @type {?boolean}
53
+ */
54
+ this.ephemeral = null;
55
+
56
+ /**
57
+ * An associated interaction webhook, can be used to further interact with this interaction
58
+ * @type {InteractionWebhook}
59
+ */
60
+ this.webhook = new InteractionWebhook(this.client, this.applicationId, this.token);
61
+ }
62
+
63
+ /**
64
+ * The invoked application command, if it was fetched before
65
+ * @type {?ApplicationCommand}
66
+ */
67
+ get command() {
68
+ const id = this.commandId;
69
+ return this.guild?.commands.cache.get(id) ?? this.client.application.commands.cache.get(id) ?? null;
70
+ }
71
+
72
+ /**
73
+ * Represents the resolved data of a received command interaction.
74
+ * @typedef {Object} CommandInteractionResolvedData
75
+ * @property {Collection<Snowflake, User>} [users] The resolved users
76
+ * @property {Collection<Snowflake, GuildMember|APIGuildMember>} [members] The resolved guild members
77
+ * @property {Collection<Snowflake, Role|APIRole>} [roles] The resolved roles
78
+ * @property {Collection<Snowflake, Channel|APIChannel>} [channels] The resolved channels
79
+ * @property {Collection<Snowflake, Message|APIMessage>} [messages] The resolved messages
80
+ * @property {Collection<Snowflake, MessageAttachment>} [attachments] The resolved attachments
81
+ */
82
+
83
+ /**
84
+ * Transforms the resolved received from the API.
85
+ * @param {APIInteractionDataResolved} resolved The received resolved objects
86
+ * @returns {CommandInteractionResolvedData}
87
+ * @private
88
+ */
89
+ transformResolved({ members, users, channels, roles, messages, attachments }) {
90
+ const result = {};
91
+
92
+ if (members) {
93
+ result.members = new Collection();
94
+ for (const [id, member] of Object.entries(members)) {
95
+ const user = users[id];
96
+ result.members.set(id, this.guild?.members._add({ user, ...member }) ?? member);
97
+ }
98
+ }
99
+
100
+ if (users) {
101
+ result.users = new Collection();
102
+ for (const user of Object.values(users)) {
103
+ result.users.set(user.id, this.client.users._add(user));
104
+ }
105
+ }
106
+
107
+ if (roles) {
108
+ result.roles = new Collection();
109
+ for (const role of Object.values(roles)) {
110
+ result.roles.set(role.id, this.guild?.roles._add(role) ?? role);
111
+ }
112
+ }
113
+
114
+ if (channels) {
115
+ result.channels = new Collection();
116
+ for (const channel of Object.values(channels)) {
117
+ result.channels.set(channel.id, this.client.channels._add(channel, this.guild) ?? channel);
118
+ }
119
+ }
120
+
121
+ if (messages) {
122
+ result.messages = new Collection();
123
+ for (const message of Object.values(messages)) {
124
+ result.messages.set(message.id, this.channel?.messages?._add(message) ?? message);
125
+ }
126
+ }
127
+
128
+ if (attachments) {
129
+ result.attachments = new Collection();
130
+ for (const attachment of Object.values(attachments)) {
131
+ const patched = new MessageAttachment(attachment.url, attachment.filename, attachment);
132
+ result.attachments.set(attachment.id, patched);
133
+ }
134
+ }
135
+
136
+ return result;
137
+ }
138
+
139
+ /**
140
+ * Represents an option of a received command interaction.
141
+ * @typedef {Object} CommandInteractionOption
142
+ * @property {string} name The name of the option
143
+ * @property {ApplicationCommandOptionType} type The type of the option
144
+ * @property {boolean} [autocomplete] Whether the option is an autocomplete option
145
+ * @property {string|number|boolean} [value] The value of the option
146
+ * @property {CommandInteractionOption[]} [options] Additional options if this option is a
147
+ * subcommand (group)
148
+ * @property {User} [user] The resolved user
149
+ * @property {GuildMember|APIGuildMember} [member] The resolved member
150
+ * @property {GuildChannel|ThreadChannel|APIChannel} [channel] The resolved channel
151
+ * @property {Role|APIRole} [role] The resolved role
152
+ * @property {MessageAttachment} [attachment] The resolved attachment
153
+ */
154
+
155
+ /**
156
+ * Transforms an option received from the API.
157
+ * @param {APIApplicationCommandOption} option The received option
158
+ * @param {APIInteractionDataResolved} resolved The resolved interaction data
159
+ * @returns {CommandInteractionOption}
160
+ * @private
161
+ */
162
+ transformOption(option, resolved) {
163
+ const result = {
164
+ name: option.name,
165
+ type: ApplicationCommandOptionTypes[option.type],
166
+ };
167
+
168
+ if ('value' in option) result.value = option.value;
169
+ if ('options' in option) result.options = option.options.map(opt => this.transformOption(opt, resolved));
170
+
171
+ if (resolved) {
172
+ const user = resolved.users?.[option.value];
173
+ if (user) result.user = this.client.users._add(user);
174
+
175
+ const member = resolved.members?.[option.value];
176
+ if (member) result.member = this.guild?.members._add({ user, ...member }) ?? member;
177
+
178
+ const channel = resolved.channels?.[option.value];
179
+ if (channel) result.channel = this.client.channels._add(channel, this.guild) ?? channel;
180
+
181
+ const role = resolved.roles?.[option.value];
182
+ if (role) result.role = this.guild?.roles._add(role) ?? role;
183
+
184
+ const attachment = resolved.attachments?.[option.value];
185
+ if (attachment) result.attachment = new MessageAttachment(attachment.url, attachment.filename, attachment);
186
+ }
187
+
188
+ return result;
189
+ }
190
+
191
+ // These are here only for documentation purposes - they are implemented by InteractionResponses
192
+ /* eslint-disable no-empty-function */
193
+ deferReply() {}
194
+ reply() {}
195
+ fetchReply() {}
196
+ editReply() {}
197
+ deleteReply() {}
198
+ followUp() {}
199
+ showModal() {}
200
+ awaitModalSubmit() {}
201
+ }
202
+
203
+ InteractionResponses.applyToClass(BaseCommandInteraction, ['deferUpdate', 'update']);
204
+
205
+ module.exports = BaseCommandInteraction;
206
+
207
+ /* eslint-disable max-len */
208
+ /**
209
+ * @external APIInteractionDataResolved
210
+ * @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure}
211
+ */
@@ -0,0 +1,116 @@
1
+ 'use strict';
2
+
3
+ const Base = require('./Base');
4
+ const SnowflakeUtil = require('../util/SnowflakeUtil');
5
+
6
+ /**
7
+ * The base class for {@link Guild}, {@link OAuth2Guild} and {@link InviteGuild}.
8
+ * @extends {Base}
9
+ * @abstract
10
+ */
11
+ class BaseGuild extends Base {
12
+ constructor(client, data) {
13
+ super(client);
14
+
15
+ /**
16
+ * The guild's id
17
+ * @type {Snowflake}
18
+ */
19
+ this.id = data.id;
20
+
21
+ /**
22
+ * The name of this guild
23
+ * @type {string}
24
+ */
25
+ this.name = data.name;
26
+
27
+ /**
28
+ * The icon hash of this guild
29
+ * @type {?string}
30
+ */
31
+ this.icon = data.icon ?? null;
32
+
33
+ /**
34
+ * An array of features available to this guild
35
+ * @type {Features[]}
36
+ */
37
+ this.features = data.features;
38
+ }
39
+
40
+ /**
41
+ * The timestamp this guild was created at
42
+ * @type {number}
43
+ * @readonly
44
+ */
45
+ get createdTimestamp() {
46
+ return SnowflakeUtil.timestampFrom(this.id);
47
+ }
48
+
49
+ /**
50
+ * The time this guild was created at
51
+ * @type {Date}
52
+ * @readonly
53
+ */
54
+ get createdAt() {
55
+ return new Date(this.createdTimestamp);
56
+ }
57
+
58
+ /**
59
+ * The acronym that shows up in place of a guild icon
60
+ * @type {string}
61
+ * @readonly
62
+ */
63
+ get nameAcronym() {
64
+ return this.name
65
+ .replace(/'s /g, ' ')
66
+ .replace(/\w+/g, e => e[0])
67
+ .replace(/\s/g, '');
68
+ }
69
+
70
+ /**
71
+ * Whether this guild is partnered
72
+ * @type {boolean}
73
+ * @readonly
74
+ */
75
+ get partnered() {
76
+ return this.features.includes('PARTNERED');
77
+ }
78
+
79
+ /**
80
+ * Whether this guild is verified
81
+ * @type {boolean}
82
+ * @readonly
83
+ */
84
+ get verified() {
85
+ return this.features.includes('VERIFIED');
86
+ }
87
+
88
+ /**
89
+ * The URL to this guild's icon.
90
+ * @param {ImageURLOptions} [options={}] Options for the Image URL
91
+ * @returns {?string}
92
+ */
93
+ iconURL({ format, size, dynamic } = {}) {
94
+ if (!this.icon) return null;
95
+ return this.client.rest.cdn.Icon(this.id, this.icon, format, size, dynamic);
96
+ }
97
+
98
+ /**
99
+ * Fetches this guild.
100
+ * @returns {Promise<Guild>}
101
+ */
102
+ async fetch() {
103
+ const data = await this.client.api.guilds(this.id).get({ query: { with_counts: true } });
104
+ return this.client.guilds._add(data);
105
+ }
106
+
107
+ /**
108
+ * When concatenated with a string, this automatically returns the guild's name instead of the Guild object.
109
+ * @returns {string}
110
+ */
111
+ toString() {
112
+ return this.name;
113
+ }
114
+ }
115
+
116
+ module.exports = BaseGuild;
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ const { Emoji } = require('./Emoji');
4
+
5
+ /**
6
+ * Parent class for {@link GuildEmoji} and {@link GuildPreviewEmoji}.
7
+ * @extends {Emoji}
8
+ * @abstract
9
+ */
10
+ class BaseGuildEmoji extends Emoji {
11
+ constructor(client, data, guild) {
12
+ super(client, data);
13
+
14
+ /**
15
+ * The guild this emoji is a part of
16
+ * @type {Guild|GuildPreview}
17
+ */
18
+ this.guild = guild;
19
+
20
+ this.requiresColons = null;
21
+ this.managed = null;
22
+ this.available = null;
23
+
24
+ this._patch(data);
25
+ }
26
+
27
+ _patch(data) {
28
+ if ('name' in data) this.name = data.name;
29
+
30
+ if ('require_colons' in data) {
31
+ /**
32
+ * Whether or not this emoji requires colons surrounding it
33
+ * @type {?boolean}
34
+ */
35
+ this.requiresColons = data.require_colons;
36
+ }
37
+
38
+ if ('managed' in data) {
39
+ /**
40
+ * Whether this emoji is managed by an external service
41
+ * @type {?boolean}
42
+ */
43
+ this.managed = data.managed;
44
+ }
45
+
46
+ if ('available' in data) {
47
+ /**
48
+ * Whether this emoji is available
49
+ * @type {?boolean}
50
+ */
51
+ this.available = data.available;
52
+ }
53
+ }
54
+ }
55
+
56
+ module.exports = BaseGuildEmoji;
@@ -0,0 +1,191 @@
1
+ 'use strict';
2
+
3
+ const GuildChannel = require('./GuildChannel');
4
+ const TextBasedChannel = require('./interfaces/TextBasedChannel');
5
+ const GuildTextThreadManager = require('../managers/GuildTextThreadManager');
6
+ const MessageManager = require('../managers/MessageManager');
7
+
8
+ /**
9
+ * Represents a text-based guild channel on Discord.
10
+ * @extends {GuildChannel}
11
+ * @implements {TextBasedChannel}
12
+ */
13
+ class BaseGuildTextChannel extends GuildChannel {
14
+ constructor(guild, data, client) {
15
+ super(guild, data, client, false);
16
+
17
+ /**
18
+ * A manager of the messages sent to this channel
19
+ * @type {MessageManager}
20
+ */
21
+ this.messages = new MessageManager(this);
22
+
23
+ /**
24
+ * A manager of the threads belonging to this channel
25
+ * @type {GuildTextThreadManager}
26
+ */
27
+ this.threads = new GuildTextThreadManager(this);
28
+
29
+ /**
30
+ * If the guild considers this channel NSFW
31
+ * @type {boolean}
32
+ */
33
+ this.nsfw = Boolean(data.nsfw);
34
+
35
+ this._patch(data);
36
+ }
37
+
38
+ _patch(data) {
39
+ super._patch(data);
40
+
41
+ if ('topic' in data) {
42
+ /**
43
+ * The topic of the text channel
44
+ * @type {?string}
45
+ */
46
+ this.topic = data.topic;
47
+ }
48
+
49
+ if ('nsfw' in data) {
50
+ this.nsfw = Boolean(data.nsfw);
51
+ }
52
+
53
+ if ('last_message_id' in data) {
54
+ /**
55
+ * The last message id sent in the channel, if one was sent
56
+ * @type {?Snowflake}
57
+ */
58
+ this.lastMessageId = data.last_message_id;
59
+ }
60
+
61
+ if ('last_pin_timestamp' in data) {
62
+ /**
63
+ * The timestamp when the last pinned message was pinned, if there was one
64
+ * @type {?number}
65
+ */
66
+ this.lastPinTimestamp = data.last_pin_timestamp ? new Date(data.last_pin_timestamp).getTime() : null;
67
+ }
68
+
69
+ if ('default_auto_archive_duration' in data) {
70
+ /**
71
+ * The default auto archive duration for newly created threads in this channel
72
+ * @type {?number}
73
+ */
74
+ this.defaultAutoArchiveDuration = data.default_auto_archive_duration;
75
+ }
76
+
77
+ if ('default_thread_rate_limit_per_user' in data) {
78
+ /**
79
+ * The initial rate limit per user (slowmode) to set on newly created threads in a channel.
80
+ * @type {?number}
81
+ */
82
+ this.defaultThreadRateLimitPerUser = data.default_thread_rate_limit_per_user;
83
+ } else {
84
+ this.defaultThreadRateLimitPerUser ??= null;
85
+ }
86
+
87
+ if ('messages' in data) {
88
+ for (const message of data.messages) this.messages._add(message);
89
+ }
90
+ }
91
+
92
+ /**
93
+ * Sets the default auto archive duration for all newly created threads in this channel.
94
+ * @param {ThreadAutoArchiveDuration} defaultAutoArchiveDuration The new default auto archive duration
95
+ * @param {string} [reason] Reason for changing the channel's default auto archive duration
96
+ * @returns {Promise<TextChannel>}
97
+ */
98
+ setDefaultAutoArchiveDuration(defaultAutoArchiveDuration, reason) {
99
+ return this.edit({ defaultAutoArchiveDuration }, reason);
100
+ }
101
+
102
+ /**
103
+ * Sets the type of this channel (only conversion between text and news is supported)
104
+ * @param {string} type The new channel type
105
+ * @param {string} [reason] Reason for changing the channel's type
106
+ * @returns {Promise<GuildChannel>}
107
+ */
108
+ setType(type, reason) {
109
+ return this.edit({ type }, reason);
110
+ }
111
+
112
+ /**
113
+ * Sets a new topic for the guild channel.
114
+ * @param {?string} topic The new topic for the guild channel
115
+ * @param {string} [reason] Reason for changing the guild channel's topic
116
+ * @returns {Promise<GuildChannel>}
117
+ * @example
118
+ * // Set a new channel topic
119
+ * channel.setTopic('needs more rate limiting')
120
+ * .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))
121
+ * .catch(console.error);
122
+ */
123
+ setTopic(topic, reason) {
124
+ return this.edit({ topic }, reason);
125
+ }
126
+
127
+ /**
128
+ * Data that can be resolved to an Application. This can be:
129
+ * * An Application
130
+ * * An Activity with associated Application
131
+ * * A Snowflake
132
+ * @typedef {Application|Snowflake} ApplicationResolvable
133
+ */
134
+
135
+ /**
136
+ * Options used to create an invite to a guild channel.
137
+ * @typedef {Object} CreateInviteOptions
138
+ * @property {boolean} [temporary=false] Whether members that joined via the invite should be automatically
139
+ * kicked after 24 hours if they have not yet received a role
140
+ * @property {number} [maxAge=86400] How long the invite should last (in seconds, 0 for forever)
141
+ * @property {number} [maxUses=0] Maximum number of uses
142
+ * @property {boolean} [unique=false] Create a unique invite, or use an existing one with similar settings
143
+ * @property {UserResolvable} [targetUser] The user whose stream to display for this invite,
144
+ * required if `targetType` is 1, the user must be streaming in the channel
145
+ * @property {ApplicationResolvable} [targetApplication] The embedded application to open for this invite,
146
+ * required if `targetType` is 2, the application must have the `EMBEDDED` flag
147
+ * @property {TargetType} [targetType] The type of the target for this voice channel invite
148
+ * @property {string} [reason] The reason for creating the invite
149
+ */
150
+
151
+ /**
152
+ * Creates an invite to this guild channel.
153
+ * @param {CreateInviteOptions} [options={}] The options for creating the invite
154
+ * @returns {Promise<Invite>}
155
+ * @example
156
+ * // Create an invite to a channel
157
+ * channel.createInvite()
158
+ * .then(invite => console.log(`Created an invite with a code of ${invite.code}`))
159
+ * .catch(console.error);
160
+ */
161
+ createInvite(options) {
162
+ return this.guild.invites.create(this.id, options);
163
+ }
164
+
165
+ /**
166
+ * Fetches a collection of invites to this guild channel.
167
+ * Resolves with a collection mapping invites by their codes.
168
+ * @param {boolean} [cache=true] Whether or not to cache the fetched invites
169
+ * @returns {Promise<Collection<string, Invite>>}
170
+ */
171
+ fetchInvites(cache = true) {
172
+ return this.guild.invites.fetch({ channelId: this.id, cache });
173
+ }
174
+
175
+ // These are here only for documentation purposes - they are implemented by TextBasedChannel
176
+ /* eslint-disable no-empty-function */
177
+ get lastMessage() {}
178
+ get lastPinAt() {}
179
+ send() {}
180
+ sendTyping() {}
181
+ createMessageCollector() {}
182
+ awaitMessages() {}
183
+ fetchWebhooks() {}
184
+ createWebhook() {}
185
+ setRateLimitPerUser() {}
186
+ setNSFW() {}
187
+ }
188
+
189
+ TextBasedChannel.applyToClass(BaseGuildTextChannel, true);
190
+
191
+ module.exports = BaseGuildTextChannel;