@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,401 @@
1
+ 'use strict';
2
+
3
+ const process = require('node:process');
4
+ const { setTimeout } = require('node:timers');
5
+ const { Collection } = require('@discordjs/collection');
6
+ const CachedManager = require('./CachedManager');
7
+ const { Guild } = require('../structures/Guild');
8
+ const GuildChannel = require('../structures/GuildChannel');
9
+ const GuildEmoji = require('../structures/GuildEmoji');
10
+ const { GuildMember } = require('../structures/GuildMember');
11
+ const Invite = require('../structures/Invite');
12
+ const OAuth2Guild = require('../structures/OAuth2Guild');
13
+ const { Role } = require('../structures/Role');
14
+ const { TypeError } = require('../errors');
15
+ const {
16
+ ChannelTypes,
17
+ Events,
18
+ OverwriteTypes,
19
+ VerificationLevels,
20
+ DefaultMessageNotificationLevels,
21
+ ExplicitContentFilterLevels,
22
+ VideoQualityModes,
23
+ } = require('../util/Constants');
24
+ const DataResolver = require('../util/DataResolver');
25
+ const Permissions = require('../util/Permissions');
26
+ const SystemChannelFlags = require('../util/SystemChannelFlags');
27
+ const { resolveColor } = require('../util/Util');
28
+ const Util = require('../util/Util');
29
+
30
+ let cacheWarningEmitted = false;
31
+
32
+ /**
33
+ * Manages API methods for Guilds and stores their cache.
34
+ * @extends {CachedManager}
35
+ */
36
+ class GuildManager extends CachedManager {
37
+ constructor(client, iterable) {
38
+ super(client, Guild, iterable);
39
+
40
+ /**
41
+ * Online leaderboard stats requests currently in flight, keyed by guild id.
42
+ * @type {Collection<Snowflake, Promise<GuildOnlineStats>>}
43
+ * @private
44
+ */
45
+ this._onlineStatsRequests = new Collection();
46
+
47
+ if (!cacheWarningEmitted && this._cache.constructor.name !== 'Collection') {
48
+ cacheWarningEmitted = true;
49
+ process.emitWarning(
50
+ `Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`,
51
+ 'UnsupportedCacheOverwriteWarning',
52
+ );
53
+ }
54
+ }
55
+
56
+ /**
57
+ * The cache of this Manager
58
+ * @type {Collection<Snowflake, Guild>}
59
+ * @name GuildManager#cache
60
+ */
61
+
62
+ /**
63
+ * Data that resolves to give a Guild object. This can be:
64
+ * * A Guild object
65
+ * * A GuildChannel object
66
+ * * A GuildEmoji object
67
+ * * A Role object
68
+ * * A Snowflake
69
+ * * An Invite object
70
+ * @typedef {Guild|GuildChannel|GuildMember|GuildEmoji|Role|Snowflake|Invite} GuildResolvable
71
+ */
72
+
73
+ /**
74
+ * Partial data for a Role.
75
+ * @typedef {Object} PartialRoleData
76
+ * @property {Snowflake|number} [id] The role's id, used to set channel overrides,
77
+ * this is a placeholder and will be replaced by the API after consumption
78
+ * @property {string} [name] The name of the role
79
+ * @property {ColorResolvable} [color] The color of the role, either a hex string or a base 10 number
80
+ * @property {boolean} [hoist] Whether or not the role should be hoisted
81
+ * @property {number} [position] The position of the role
82
+ * @property {PermissionResolvable} [permissions] The permissions of the role
83
+ * @property {boolean} [mentionable] Whether or not the role should be mentionable
84
+ */
85
+
86
+ /**
87
+ * Partial overwrite data.
88
+ * @typedef {Object} PartialOverwriteData
89
+ * @property {Snowflake|number} id The id of the {@link Role} or {@link User} this overwrite belongs to
90
+ * @property {OverwriteType} [type] The type of this overwrite
91
+ * @property {PermissionResolvable} [allow] The permissions to allow
92
+ * @property {PermissionResolvable} [deny] The permissions to deny
93
+ */
94
+
95
+ /**
96
+ * Partial data for a Channel.
97
+ * @typedef {Object} PartialChannelData
98
+ * @property {Snowflake|number} [id] The channel's id, used to set its parent,
99
+ * this is a placeholder and will be replaced by the API after consumption
100
+ * @property {Snowflake|number} [parentId] The parent id for this channel
101
+ * @property {ChannelType|number} [type] The type of the channel
102
+ * @property {string} name The name of the channel
103
+ * @property {string} [topic] The topic of the text channel
104
+ * @property {boolean} [nsfw] Whether the channel is NSFW
105
+ * @property {number} [bitrate] The bitrate of the voice channel
106
+ * @property {number} [userLimit] The user limit of the channel
107
+ * @property {?string} [rtcRegion] The RTC region of the channel
108
+ * @property {VideoQualityMode|number} [videoQualityMode] The camera video quality mode of the channel
109
+ * @property {PartialOverwriteData[]} [permissionOverwrites]
110
+ * Overwrites of the channel
111
+ * @property {number} [rateLimitPerUser] The rate limit per user (slowmode) of the channel in seconds
112
+ */
113
+
114
+ /**
115
+ * Resolves a GuildResolvable to a Guild object.
116
+ * @method resolve
117
+ * @memberof GuildManager
118
+ * @instance
119
+ * @param {GuildResolvable} guild The guild resolvable to identify
120
+ * @returns {?Guild}
121
+ */
122
+ resolve(guild) {
123
+ if (
124
+ guild instanceof GuildChannel ||
125
+ guild instanceof GuildMember ||
126
+ guild instanceof GuildEmoji ||
127
+ guild instanceof Role ||
128
+ (guild instanceof Invite && guild.guild)
129
+ ) {
130
+ return super.resolve(guild.guild);
131
+ }
132
+ return super.resolve(guild);
133
+ }
134
+
135
+ /**
136
+ * Resolves a {@link GuildResolvable} to a {@link Guild} id string.
137
+ * @method resolveId
138
+ * @memberof GuildManager
139
+ * @instance
140
+ * @param {GuildResolvable} guild The guild resolvable to identify
141
+ * @returns {?Snowflake}
142
+ */
143
+ resolveId(guild) {
144
+ if (
145
+ guild instanceof GuildChannel ||
146
+ guild instanceof GuildMember ||
147
+ guild instanceof GuildEmoji ||
148
+ guild instanceof Role ||
149
+ (guild instanceof Invite && guild.guild)
150
+ ) {
151
+ return super.resolveId(guild.guild.id);
152
+ }
153
+ return super.resolveId(guild);
154
+ }
155
+
156
+ /**
157
+ * Options used to create a guild.
158
+ * @typedef {Object} GuildCreateOptions
159
+ * @property {Snowflake|number} [afkChannelId] The AFK channel's id
160
+ * @property {number} [afkTimeout] The AFK timeout in seconds
161
+ * @property {PartialChannelData[]} [channels=[]] The channels for this guild
162
+ * @property {DefaultMessageNotificationLevel|number} [defaultMessageNotifications] The default message notifications
163
+ * for the guild
164
+ * @property {ExplicitContentFilterLevel} [explicitContentFilter] The explicit content filter level for the guild
165
+ * @property {?(BufferResolvable|Base64Resolvable)} [icon=null] The icon for the guild
166
+ * @property {PartialRoleData[]} [roles=[]] The roles for this guild,
167
+ * the first element of this array is used to change properties of the guild's everyone role.
168
+ * @property {Snowflake|number} [systemChannelId] The system channel's id
169
+ * @property {SystemChannelFlagsResolvable} [systemChannelFlags] The flags of the system channel
170
+ * @property {VerificationLevel} [verificationLevel] The verification level for the guild
171
+ */
172
+
173
+ /**
174
+ * Creates a guild.
175
+ * @param {string} name The name of the guild
176
+ * @param {GuildCreateOptions} [options] Options for creating the guild
177
+ * @returns {Promise<Guild>} The guild that was created
178
+ */
179
+ async create(
180
+ name,
181
+ {
182
+ afkChannelId,
183
+ afkTimeout,
184
+ channels = [],
185
+ defaultMessageNotifications,
186
+ explicitContentFilter,
187
+ icon = null,
188
+ roles = [],
189
+ systemChannelId,
190
+ systemChannelFlags,
191
+ verificationLevel,
192
+ } = {},
193
+ ) {
194
+ icon = await DataResolver.resolveImage(icon);
195
+ if (typeof verificationLevel === 'string') {
196
+ verificationLevel = VerificationLevels[verificationLevel];
197
+ }
198
+ if (typeof defaultMessageNotifications === 'string') {
199
+ defaultMessageNotifications = DefaultMessageNotificationLevels[defaultMessageNotifications];
200
+ }
201
+ if (typeof explicitContentFilter === 'string') {
202
+ explicitContentFilter = ExplicitContentFilterLevels[explicitContentFilter];
203
+ }
204
+ for (const channel of channels) {
205
+ channel.type &&= typeof channel.type === 'number' ? channel.type : ChannelTypes[channel.type];
206
+ channel.parent_id = channel.parentId;
207
+ delete channel.parentId;
208
+ channel.user_limit = channel.userLimit;
209
+ delete channel.userLimit;
210
+ channel.rate_limit_per_user = channel.rateLimitPerUser;
211
+ delete channel.rateLimitPerUser;
212
+ channel.rtc_region = channel.rtcRegion;
213
+ delete channel.rtcRegion;
214
+ channel.video_quality_mode =
215
+ typeof channel.videoQualityMode === 'string'
216
+ ? VideoQualityModes[channel.videoQualityMode]
217
+ : channel.videoQualityMode;
218
+ delete channel.videoQualityMode;
219
+
220
+ if (!channel.permissionOverwrites) continue;
221
+ for (const overwrite of channel.permissionOverwrites) {
222
+ if (typeof overwrite.type === 'string') {
223
+ overwrite.type = OverwriteTypes[overwrite.type];
224
+ }
225
+ overwrite.allow &&= Permissions.resolve(overwrite.allow).toString();
226
+ overwrite.deny &&= Permissions.resolve(overwrite.deny).toString();
227
+ }
228
+ channel.permission_overwrites = channel.permissionOverwrites;
229
+ delete channel.permissionOverwrites;
230
+ }
231
+ for (const role of roles) {
232
+ role.color &&= resolveColor(role.color);
233
+ role.permissions &&= Permissions.resolve(role.permissions).toString();
234
+ }
235
+ systemChannelFlags &&= SystemChannelFlags.resolve(systemChannelFlags);
236
+
237
+ const data = await this.client.api.guilds.post({
238
+ data: {
239
+ name,
240
+ icon,
241
+ verification_level: verificationLevel,
242
+ default_message_notifications: defaultMessageNotifications,
243
+ explicit_content_filter: explicitContentFilter,
244
+ roles,
245
+ channels,
246
+ afk_channel_id: afkChannelId,
247
+ afk_timeout: afkTimeout,
248
+ system_channel_id: systemChannelId,
249
+ system_channel_flags: systemChannelFlags,
250
+ guild_template_code: '2TffvPucqHkN', // From Discord
251
+ },
252
+ });
253
+
254
+ if (this.client.guilds.cache.has(data.id)) return this.client.guilds.cache.get(data.id);
255
+
256
+ return new Promise(resolve => {
257
+ const handleGuild = guild => {
258
+ if (guild.id === data.id) {
259
+ clearTimeout(timeout);
260
+ this.client.removeListener(Events.GUILD_CREATE, handleGuild);
261
+ this.client.decrementMaxListeners();
262
+ resolve(guild);
263
+ }
264
+ };
265
+ this.client.incrementMaxListeners();
266
+ this.client.on(Events.GUILD_CREATE, handleGuild);
267
+
268
+ const timeout = setTimeout(() => {
269
+ this.client.removeListener(Events.GUILD_CREATE, handleGuild);
270
+ this.client.decrementMaxListeners();
271
+ resolve(this.client.guilds._add(data));
272
+ }, 10_000).unref();
273
+ });
274
+ }
275
+
276
+ /**
277
+ * Options used to fetch a single guild.
278
+ * @typedef {BaseFetchOptions} FetchGuildOptions
279
+ * @property {GuildResolvable} guild The guild to fetch
280
+ * @property {boolean} [withCounts=true] Whether the approximate member and presence counts should be returned
281
+ */
282
+
283
+ /**
284
+ * Options used to fetch multiple guilds.
285
+ * @typedef {Object} FetchGuildsOptions
286
+ * @property {Snowflake} [before] Get guilds before this guild id
287
+ * @property {Snowflake} [after] Get guilds after this guild id
288
+ * @property {number} [limit=200] Maximum number of guilds to request (1-200)
289
+ */
290
+
291
+ /**
292
+ * Obtains one or multiple guilds from Discord, or the guild cache if it's already available.
293
+ * @param {GuildResolvable|FetchGuildOptions|FetchGuildsOptions} [options] The guild's id or options
294
+ * @returns {Promise<Guild|Collection<Snowflake, OAuth2Guild>>}
295
+ */
296
+ async fetch(options = {}) {
297
+ const id = this.resolveId(options) ?? this.resolveId(options.guild);
298
+
299
+ if (id) {
300
+ const existing = this.cache.get(id);
301
+ if (!options.force) {
302
+ const hasName = typeof existing?.name === 'string' && existing.name.length > 0;
303
+ if (existing && hasName) return existing;
304
+ }
305
+
306
+ const data = await this.client.api.guilds(id).get({ query: { with_counts: options.withCounts ?? true } });
307
+ const guild = this._add(data, options.cache);
308
+
309
+ if ((!guild?.name || guild.name.length === 0) && typeof existing?.name === 'string' && existing.name.length > 0) {
310
+ guild.name = existing.name;
311
+ }
312
+
313
+ return guild;
314
+ }
315
+
316
+ const data = await this.client.api.users('@me').guilds.get({ query: options });
317
+ return data.reduce((coll, guild) => coll.set(guild.id, new OAuth2Guild(this.client, guild)), new Collection());
318
+ }
319
+
320
+ _buildOnlineStats(guild) {
321
+ const online = guild.approximatePresenceCount ?? guild.presences.cache.size;
322
+ const members = guild.approximateMemberCount ?? guild.memberCount ?? guild.members.cache.size;
323
+
324
+ return {
325
+ guild,
326
+ online,
327
+ members,
328
+ ratio: members > 0 ? (online / members) * 100 : 0,
329
+ fetchedAt: Date.now(),
330
+ };
331
+ }
332
+
333
+ /**
334
+ * Fetches online leaderboard stats for a guild.
335
+ * @param {GuildResolvable} guild The guild to fetch stats for
336
+ * @returns {Promise<GuildOnlineStats>}
337
+ */
338
+ async fetchOnlineStats(guild) {
339
+ const id = this.resolveId(guild);
340
+ if (!id) throw new TypeError('INVALID_TYPE', 'guild', 'GuildResolvable');
341
+
342
+ const pending = this._onlineStatsRequests.get(id);
343
+ if (pending) return pending;
344
+
345
+ const request = this.fetch({ guild: id, force: true, withCounts: true })
346
+ .then(fetchedGuild => this._buildOnlineStats(fetchedGuild))
347
+ .finally(() => this._onlineStatsRequests.delete(id));
348
+
349
+ this._onlineStatsRequests.set(id, request);
350
+ return request;
351
+ }
352
+
353
+ /**
354
+ * Options used to set incident actions. Supplying `null` to any option will disable the action.
355
+ * @typedef {Object} IncidentActionsEditOptions
356
+ * @property {?DateResolvable} [invitesDisabledUntil] When invites should be enabled again
357
+ * @property {?DateResolvable} [dmsDisabledUntil] When direct messages should be enabled again
358
+ */
359
+
360
+ /**
361
+ * Sets the incident actions for a guild.
362
+ * @param {GuildResolvable} guild The guild
363
+ * @param {IncidentActionsEditOptions} incidentActions The incident actions to set
364
+ * @returns {Promise<IncidentActions>}
365
+ */
366
+ async setIncidentActions(guild, { invitesDisabledUntil, dmsDisabledUntil }) {
367
+ const guildId = this.resolveId(guild);
368
+
369
+ const data = await this.client.api.guilds(guildId)['incident-actions'].put({
370
+ data: {
371
+ invites_disabled_until: invitesDisabledUntil && new Date(invitesDisabledUntil).toISOString(),
372
+ dms_disabled_until: dmsDisabledUntil && new Date(dmsDisabledUntil).toISOString(),
373
+ },
374
+ });
375
+
376
+ const parsedData = Util.transformAPIIncidentsData(data);
377
+ const resolvedGuild = this.resolve(guild);
378
+
379
+ if (resolvedGuild) {
380
+ resolvedGuild.incidentsData = parsedData;
381
+ }
382
+
383
+ return parsedData;
384
+ }
385
+
386
+ /**
387
+ * Marks an AutoMod alert message as a false alarm.
388
+ * @param {GuildResolvable} guild The guild
389
+ * @param {Snowflake} alertMessageId The AutoMod alert system message id
390
+ * @param {string} [reason] Reason for reporting a false alarm
391
+ * @returns {Promise<void>}
392
+ */
393
+ async markAutoModerationFalseAlarm(guild, alertMessageId, reason) {
394
+ const guildId = this.resolveId(guild);
395
+ const data = { alert_message_id: alertMessageId };
396
+ if (typeof reason !== 'undefined') data.reason = reason;
397
+ await this.client.api.guilds(guildId)['auto-moderation']['false-alarm'].post({ data });
398
+ }
399
+ }
400
+
401
+ module.exports = GuildManager;