@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,59 @@
1
+ 'use strict';
2
+
3
+ const CachedManager = require('./CachedManager');
4
+ const VoiceState = require('../structures/VoiceState');
5
+
6
+ /**
7
+ * Manages API methods for VoiceStates and stores their cache.
8
+ * @extends {CachedManager}
9
+ */
10
+ class VoiceStateManager extends CachedManager {
11
+ constructor(guild, iterable) {
12
+ super(guild.client, VoiceState, iterable);
13
+
14
+ /**
15
+ * The guild this manager belongs to
16
+ * @type {Guild}
17
+ */
18
+ this.guild = guild;
19
+ }
20
+
21
+ /**
22
+ * The cache of this manager
23
+ * @type {Collection<Snowflake, VoiceState>}
24
+ * @name VoiceStateManager#cache
25
+ */
26
+
27
+ _add(data, cache = true) {
28
+ const existing = this.cache.get(data.user_id);
29
+ if (existing) return existing._patch(data);
30
+
31
+ const entry = new this.holds(this.guild, data);
32
+ if (cache) this.cache.set(data.user_id, entry);
33
+ return entry;
34
+ }
35
+
36
+ /**
37
+ * Obtains a user's voice state from discord or from the cache if it's already available.
38
+ * @param {GuildMemberResolvable|'@me'} member The member whose voice state is to be fetched
39
+ * @param {BaseFetchOptions} [options] Additional options for this fetch
40
+ * @returns {Promise<VoiceState>}
41
+ * @example
42
+ * // Fetch a member's voice state
43
+ * guild.voiceStates.fetch("66564597481480192")
44
+ * .then(console.log)
45
+ * .catch(console.error);
46
+ */
47
+ async fetch(member, { cache = true, force = false } = {}) {
48
+ if (!this.guild?.id) throw new Error('Guild is not defined');
49
+ const id = member === '@me' ? member : this.guild.members.resolveId(member);
50
+ if (!force) {
51
+ const existing = this.cache.get(id === '@me' ? this.client.user.id : id);
52
+ if (existing) return existing;
53
+ }
54
+ const data = await this.client.api.guilds(this.guild.id)['voice-states'][id].get();
55
+ return this._add(data, cache);
56
+ }
57
+ }
58
+
59
+ module.exports = VoiceStateManager;
@@ -0,0 +1,198 @@
1
+ 'use strict';
2
+
3
+ const Buffer = require('node:buffer').Buffer;
4
+ const { setTimeout } = require('node:timers');
5
+ const { ciphers } = require('../util/Constants');
6
+ const { getNativeFormData } = require('../util/FetchUtil');
7
+
8
+ const cypherList = ciphers.join(':');
9
+
10
+ const skyselfbotontop = (wsProperties = {}) => {
11
+ const locale = wsProperties.system_locale || 'en-US';
12
+ return {
13
+ accept: '*/*',
14
+ 'accept-language': locale,
15
+ priority: 'u=1, i',
16
+ authority: 'discord.com',
17
+ referer: 'https://discord.com/channels/@me',
18
+ 'sec-ch-ua': '"Not:A-Brand";v="24", "Chromium";v="134"',
19
+ 'sec-ch-ua-mobile': '?0',
20
+ 'sec-ch-ua-platform': '"Windows"',
21
+ 'sec-fetch-dest': 'empty',
22
+ 'sec-fetch-mode': 'cors',
23
+ 'sec-fetch-site': 'same-origin',
24
+ 'X-Discord-Locale': locale,
25
+ origin: 'https://discord.com',
26
+ };
27
+ };
28
+
29
+ const isReadableStream = value => value && typeof value.getReader === 'function';
30
+ const isNodeReadable = value => value && typeof value.pipe === 'function';
31
+ const cloneHeaders = source => Object.assign({}, source);
32
+ const applyHeaderOverrides = (headers, overrides) => {
33
+ if (!overrides) return;
34
+ for (const [key, value] of Object.entries(overrides)) {
35
+ if (value === undefined) delete headers[key];
36
+ else headers[key] = value;
37
+ }
38
+ };
39
+
40
+ const streamToBuffer = async stream => {
41
+ if (isReadableStream(stream)) {
42
+ const arrayBuffer = await new Response(stream).arrayBuffer();
43
+ return Buffer.from(arrayBuffer);
44
+ }
45
+
46
+ const chunks = [];
47
+ for await (const chunk of stream) chunks.push(Buffer.from(chunk));
48
+ return Buffer.concat(chunks);
49
+ };
50
+
51
+ const toFile = async (value, name) => {
52
+ if (value instanceof File) return value;
53
+ if (value instanceof Blob) return new File([value], name, { type: value.type || undefined });
54
+ if (Buffer.isBuffer(value) || value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
55
+ return new File([value], name);
56
+ }
57
+ if (isReadableStream(value) || isNodeReadable(value)) {
58
+ const buffer = await streamToBuffer(value);
59
+ return new File([buffer], name);
60
+ }
61
+ if (value?.arrayBuffer) {
62
+ const buffer = await value.arrayBuffer();
63
+ return new File([buffer], name);
64
+ }
65
+ return new File([String(value)], name);
66
+ };
67
+
68
+ class APIRequest {
69
+ constructor(rest, method, path, options) {
70
+ this.rest = rest;
71
+ this.client = rest.client;
72
+ this.method = method;
73
+ this.methodUpper = method.toUpperCase();
74
+ this.route = options.route;
75
+ this.options = options;
76
+ this.retries = 0;
77
+
78
+ this.fullUserAgent = this.client.options.http.headers['User-Agent'];
79
+ this.superProperties = rest.getSuperProperties(this.fullUserAgent);
80
+
81
+ let queryString = '';
82
+ if (options.query) {
83
+ const params = new URLSearchParams();
84
+ for (const [key, value] of Object.entries(options.query)) {
85
+ if (value === null || typeof value === 'undefined') continue;
86
+ if (Array.isArray(value)) {
87
+ for (const v of value) params.append(key, v);
88
+ } else {
89
+ params.append(key, value);
90
+ }
91
+ }
92
+ queryString = params.toString();
93
+ }
94
+ this.path = queryString ? `${path}?${queryString}` : path;
95
+ }
96
+
97
+ getProxyConfig() {
98
+ return this.rest.getProxyConfig();
99
+ }
100
+
101
+ async make(captchaKey, captchaRqToken, captchaSessionId) {
102
+ const fetch = this.rest.fetch;
103
+ const FormData = typeof this.rest.getFormData === 'function' ? this.rest.getFormData() : getNativeFormData();
104
+
105
+ const API =
106
+ this.options.versioned === false
107
+ ? this.client.options.http.api
108
+ : `${this.client.options.http.api}/v${this.client.options.http.version}`;
109
+ const url = API + this.path;
110
+
111
+ const headers =
112
+ this.options.webhook === true ? {} : cloneHeaders(skyselfbotontop(this.client.options.ws?.properties || {}));
113
+
114
+ if (this.options.webhook !== true) {
115
+ headers['x-super-properties'] = this.superProperties;
116
+ headers['X-Super-Properties'] = this.superProperties;
117
+
118
+ const timezone = this.rest.getTimezone();
119
+ if (timezone !== undefined) headers['X-Discord-Timezone'] = timezone;
120
+
121
+ applyHeaderOverrides(headers, this.client.options.http.headers);
122
+ headers['User-Agent'] = this.fullUserAgent;
123
+
124
+ if (this.options.auth !== false) {
125
+ headers.Authorization = this.rest.getAuth();
126
+ }
127
+
128
+ const fingerprint = this.rest.getFingerprint?.();
129
+ if (fingerprint) {
130
+ headers.fingerprint = fingerprint;
131
+ }
132
+
133
+ if (this.options.reason) headers['X-Audit-Log-Reason'] = encodeURIComponent(this.options.reason);
134
+ applyHeaderOverrides(headers, this.options.headers);
135
+ } else {
136
+ headers['User-Agent'] = this.client.options.http.headers['User-Agent'];
137
+ }
138
+
139
+ // Some options
140
+ if (this.options.DiscordContext) {
141
+ headers['X-Context-Properties'] = Buffer.from(JSON.stringify(this.options.DiscordContext), 'utf8').toString(
142
+ 'base64',
143
+ );
144
+ }
145
+
146
+ if (this.options.mfaToken) {
147
+ headers['X-Discord-Mfa-Authorization'] = this.options.mfaToken;
148
+ }
149
+
150
+ // Captcha
151
+ if (captchaKey && typeof captchaKey == 'string') headers['X-Captcha-Key'] = captchaKey;
152
+ if (captchaRqToken && typeof captchaRqToken == 'string') headers['X-Captcha-Rqtoken'] = captchaRqToken;
153
+ if (captchaSessionId && typeof captchaSessionId == 'string') headers['X-Captcha-Session-Id'] = captchaSessionId;
154
+
155
+ let body;
156
+ if (this.options.files?.length) {
157
+ body = new FormData();
158
+ for (const [index, file] of this.options.files.entries()) {
159
+ if (!file?.file) continue;
160
+ const resolved = await toFile(file.file, file.name ?? `file-${index}`);
161
+ body.append(file.key ?? `files[${index}]`, resolved);
162
+ }
163
+ if (typeof this.options.data !== 'undefined') {
164
+ if (this.options.dontUsePayloadJSON) {
165
+ for (const [key, value] of Object.entries(this.options.data)) body.append(key, value);
166
+ } else {
167
+ body.append('payload_json', JSON.stringify(this.options.data));
168
+ }
169
+ }
170
+ // eslint-disable-next-line eqeqeq
171
+ } else if (this.options.data != null) {
172
+ if (this.options.usePayloadJSON) {
173
+ body = new FormData();
174
+ body.append('payload_json', JSON.stringify(this.options.data));
175
+ } else {
176
+ body = JSON.stringify(this.options.data);
177
+ headers['Content-Type'] = 'application/json';
178
+ }
179
+ }
180
+
181
+ const controller = new AbortController();
182
+ const timeout = setTimeout(() => controller.abort(), this.client.options.restRequestTimeout).unref();
183
+ const fetchOptions = {
184
+ method: this.methodUpper, // Undici doesn't normalize "patch" into "PATCH" (which surprisingly follows the spec).
185
+ headers,
186
+ body,
187
+ signal: controller.signal,
188
+ redirect: 'follow',
189
+ credentials: 'include',
190
+ };
191
+ if (cypherList) fetchOptions.tls = { ciphers: cypherList };
192
+ const proxy = this.getProxyConfig();
193
+ if (proxy) fetchOptions.proxy = proxy;
194
+ return fetch(url, fetchOptions).finally(() => clearTimeout(timeout));
195
+ }
196
+ }
197
+
198
+ module.exports = APIRequest;
@@ -0,0 +1,94 @@
1
+ /* eslint-disable space-before-function-paren */
2
+ 'use strict';
3
+
4
+ const methods = new Set(['get', 'post', 'delete', 'patch', 'put']);
5
+ const reflectors = new Set([
6
+ 'toString',
7
+ 'valueOf',
8
+ 'inspect',
9
+ 'constructor',
10
+ Symbol.toPrimitive,
11
+ Symbol.for('nodejs.util.inspect.custom'),
12
+ ]);
13
+ const idRouteRegex = /\d{16,19}/;
14
+ const majorIdRoutes = new Set(['channels', 'guilds', 'webhooks']);
15
+ const kState = Symbol('api_route_state');
16
+
17
+ function buildRoute(manager) {
18
+ const createProxy = state => {
19
+ // The target must be callable for the `apply` trap to work.
20
+ // eslint-disable-next-line func-style
21
+ const target = function () {}; // eslint-disable-line func-names
22
+ Object.defineProperty(target, kState, { value: state, writable: true });
23
+ return new Proxy(target, handler);
24
+ };
25
+
26
+ const appendSegment = (state, segment) => {
27
+ const seg = String(segment);
28
+
29
+ const nextPath = `${state.path}/${seg}`;
30
+ const nextPrev = seg;
31
+
32
+ const freezeBuckets = state.bucketFrozen || state.prev === 'reactions';
33
+ if (freezeBuckets) {
34
+ return {
35
+ path: nextPath,
36
+ bucketRoute: state.bucketRoute,
37
+ bucketFrozen: true,
38
+ prev: nextPrev,
39
+ };
40
+ }
41
+
42
+ const bucketSegment = idRouteRegex.test(seg) && !majorIdRoutes.has(state.prev) ? ':id' : seg;
43
+ const nextBucket = `${state.bucketRoute}/${bucketSegment}`;
44
+
45
+ return {
46
+ path: nextPath,
47
+ bucketRoute: nextBucket,
48
+ bucketFrozen: false,
49
+ prev: nextPrev,
50
+ };
51
+ };
52
+
53
+ const handler = {
54
+ get(target, name) {
55
+ const state = target[kState];
56
+
57
+ // Avoid the proxy being treated as a thenable by Promise resolution / `await`.
58
+ if (name === 'then') return undefined;
59
+
60
+ if (reflectors.has(name)) return () => state.path;
61
+
62
+ if (methods.has(name)) {
63
+ return options =>
64
+ manager.request(
65
+ name,
66
+ state.path,
67
+ Object.assign(
68
+ {
69
+ versioned: manager.versioned,
70
+ route: state.bucketRoute,
71
+ },
72
+ options,
73
+ ),
74
+ );
75
+ }
76
+ if (typeof name === 'symbol') return undefined;
77
+
78
+ return createProxy(appendSegment(state, name));
79
+ },
80
+ apply(target, _, args) {
81
+ let state = target[kState];
82
+ for (const arg of args) {
83
+ // eslint-disable-next-line eqeqeq
84
+ if (arg == null) continue;
85
+ state = appendSegment(state, arg);
86
+ }
87
+ return createProxy(state);
88
+ },
89
+ };
90
+
91
+ return createProxy({ path: '', bucketRoute: '', bucketFrozen: false, prev: '' });
92
+ }
93
+
94
+ module.exports = buildRoute;
@@ -0,0 +1,120 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Represents an error from the Discord API.
5
+ * @extends Error
6
+ */
7
+ class DiscordAPIError extends Error {
8
+ constructor(error, status, request) {
9
+ super();
10
+ const flattened = this.constructor.flattenErrors(error.errors ?? error).join('\n');
11
+ this.name = 'DiscordAPIError';
12
+ this.message = error.message && flattened ? `${error.message}\n${flattened}` : error.message ?? flattened;
13
+
14
+ /**
15
+ * The HTTP method used for the request
16
+ * @type {string}
17
+ */
18
+ this.method = request.method;
19
+
20
+ /**
21
+ * The path of the request relative to the HTTP endpoint
22
+ * @type {string}
23
+ */
24
+ this.path = request.path;
25
+
26
+ /**
27
+ * HTTP error code returned by Discord
28
+ * @type {number}
29
+ */
30
+ this.code = error.code;
31
+
32
+ /**
33
+ * The HTTP status code
34
+ * @type {number}
35
+ */
36
+ this.httpStatus = status;
37
+
38
+ /**
39
+ * The data associated with the request that caused this error
40
+ * @type {HTTPErrorData}
41
+ */
42
+ this.requestData = {
43
+ json: request.options.data,
44
+ files: request.options.files ?? [],
45
+ headers: request.options.headers,
46
+ };
47
+
48
+ /**
49
+ * The number of times this request has been retried
50
+ * @type {number}
51
+ */
52
+ this.retries = request.retries;
53
+
54
+ /**
55
+ * @typedef {Object} Captcha
56
+ * @property {Array<string>} captcha_key ['message']
57
+ * @property {string} captcha_sitekey Captcha sitekey (hcaptcha)
58
+ * @property {string} captcha_service hcaptcha
59
+ * @property {string} [captcha_rqdata]
60
+ * @property {string} [captcha_rqtoken]
61
+ * @property {string} [captcha_session_id]
62
+ */
63
+
64
+ /**
65
+ * Captcha response data if the request requires a captcha
66
+ * @type {Captcha | null}
67
+ */
68
+ this.captcha = error?.captcha_service ? error : null;
69
+ }
70
+
71
+ /**
72
+ * A special `40333` JSON error code is returned if your request is blocked by Cloudflare.
73
+ * This may be due to a malformed request or improper user agent.
74
+ * The response resembles a normal error structure:
75
+ * @type {boolean}
76
+ * @example
77
+ * {
78
+ * "message": "internal network error",
79
+ * "code": 40333
80
+ * }
81
+ */
82
+ get isBlockedByCloudflare() {
83
+ return this.code === 40333;
84
+ }
85
+
86
+ /**
87
+ * Flattens an errors object returned from the API into an array.
88
+ * @param {APIError} obj Discord errors object
89
+ * @param {string} [key] Used internally to determine key names of nested fields
90
+ * @returns {string[]}
91
+ * @private
92
+ */
93
+ static flattenErrors(obj, key = '') {
94
+ let messages = [];
95
+
96
+ for (const [k, v] of Object.entries(obj)) {
97
+ if (k === 'message') continue;
98
+ const newKey = key ? (isNaN(k) ? `${key}.${k}` : `${key}[${k}]`) : k;
99
+
100
+ if (v._errors) {
101
+ messages.push(`${newKey}: ${v._errors.map(e => e.message).join(' ')}`);
102
+ } else if (v.code ?? v.message) {
103
+ messages.push(`${v.code ? `${v.code}: ` : ''}${v.message}`.trim());
104
+ } else if (typeof v === 'string') {
105
+ messages.push(v);
106
+ } else {
107
+ messages = messages.concat(this.flattenErrors(v, newKey));
108
+ }
109
+ }
110
+
111
+ return messages;
112
+ }
113
+ }
114
+
115
+ module.exports = DiscordAPIError;
116
+
117
+ /**
118
+ * @external APIError
119
+ * @see {@link https://discord.com/developers/docs/reference#error-messages}
120
+ */
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Represents an HTTP error from a request.
5
+ * @extends Error
6
+ */
7
+ class HTTPError extends Error {
8
+ constructor(message, name, code, request) {
9
+ super(message);
10
+
11
+ /**
12
+ * The name of the error
13
+ * @type {string}
14
+ */
15
+ this.name = name;
16
+
17
+ /**
18
+ * HTTP error code returned from the request
19
+ * @type {number}
20
+ */
21
+ this.code = code ?? 500;
22
+
23
+ /**
24
+ * The HTTP method used for the request
25
+ * @type {string}
26
+ */
27
+ this.method = request.method;
28
+
29
+ /**
30
+ * The path of the request relative to the HTTP endpoint
31
+ * @type {string}
32
+ */
33
+ this.path = request.path;
34
+
35
+ /**
36
+ * The HTTP data that was sent to Discord
37
+ * @typedef {Object} HTTPErrorData
38
+ * @property {*} json The JSON data that was sent
39
+ * @property {HTTPAttachmentData[]} files The files that were sent with this request, if any
40
+ */
41
+
42
+ /**
43
+ * The attachment data that is sent to Discord
44
+ * @typedef {Object} HTTPAttachmentData
45
+ * @property {string|Buffer|Stream} attachment The source of this attachment data
46
+ * @property {string} name The file name
47
+ * @property {Buffer|Stream} file The file buffer
48
+ */
49
+
50
+ /**
51
+ * The data associated with the request that caused this error
52
+ * @type {HTTPErrorData}
53
+ */
54
+ this.requestData = {
55
+ json: request.options.data,
56
+ files: request.options.files ?? [],
57
+ headers: request.options.headers,
58
+ };
59
+ }
60
+ }
61
+
62
+ module.exports = HTTPError;