rockcord 4.0.0-dev.4

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 +48 -0
  3. package/package.json +107 -0
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +86 -0
  6. package/src/client/Client.js +946 -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 +1295 -0
  71. package/src/client/voice/dispatcher/AnnexBDispatcher.js +136 -0
  72. package/src/client/voice/dispatcher/AudioDispatcher.js +145 -0
  73. package/src/client/voice/dispatcher/BaseDispatcher.js +473 -0
  74. package/src/client/voice/dispatcher/VPxDispatcher.js +58 -0
  75. package/src/client/voice/dispatcher/VideoDispatcher.js +68 -0
  76. package/src/client/voice/networking/DAVE.js +184 -0
  77. package/src/client/voice/networking/VoiceUDPClient.js +190 -0
  78. package/src/client/voice/networking/VoiceWebSocket.js +366 -0
  79. package/src/client/voice/player/MediaPlayer.js +321 -0
  80. package/src/client/voice/player/processing/AnnexBNalSplitter.js +267 -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 +329 -0
  84. package/src/client/voice/receiver/Receiver.js +115 -0
  85. package/src/client/voice/receiver/Recorder.js +197 -0
  86. package/src/client/voice/util/Function.js +122 -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 +68 -0
  91. package/src/client/voice/util/VideoFrames.js +183 -0
  92. package/src/client/voice/util/VolumeInterface.js +105 -0
  93. package/src/client/websocket/WebSocketManager.js +405 -0
  94. package/src/client/websocket/WebSocketShard.js +908 -0
  95. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  96. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  97. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  98. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  99. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  100. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  101. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  102. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  103. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  104. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  105. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  106. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  107. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  108. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  109. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -0
  110. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  111. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  112. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  113. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  114. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  115. package/src/client/websocket/handlers/GUILD_CREATE.js +52 -0
  116. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  117. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  118. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  119. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  120. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  121. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  122. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  123. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  124. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  125. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  126. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  127. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  128. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  129. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  130. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  131. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  132. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  133. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -0
  134. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  135. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  136. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  137. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  138. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  139. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +5 -0
  140. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -0
  141. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  142. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  143. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  144. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  145. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  146. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  147. package/src/client/websocket/handlers/READY.js +121 -0
  148. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -0
  149. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -0
  150. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -0
  151. package/src/client/websocket/handlers/RESUMED.js +14 -0
  152. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  153. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  154. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  155. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  156. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  157. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  158. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  159. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  160. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  161. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  162. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -0
  163. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  164. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -0
  165. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -0
  166. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  167. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
  168. package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
  169. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  170. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  171. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  172. package/src/client/websocket/handlers/index.js +84 -0
  173. package/src/errors/DJSError.js +61 -0
  174. package/src/errors/Messages.js +219 -0
  175. package/src/errors/index.js +4 -0
  176. package/src/index.js +218 -0
  177. package/src/managers/ApplicationCommandManager.js +264 -0
  178. package/src/managers/ApplicationCommandPermissionsManager.js +417 -0
  179. package/src/managers/AutoModerationRuleManager.js +296 -0
  180. package/src/managers/BaseGuildEmojiManager.js +80 -0
  181. package/src/managers/BaseManager.js +19 -0
  182. package/src/managers/BillingManager.js +66 -0
  183. package/src/managers/CachedManager.js +71 -0
  184. package/src/managers/ChannelManager.js +148 -0
  185. package/src/managers/ClientUserSettingManager.js +372 -0
  186. package/src/managers/DataManager.js +61 -0
  187. package/src/managers/GuildBanManager.js +250 -0
  188. package/src/managers/GuildChannelManager.js +488 -0
  189. package/src/managers/GuildEmojiManager.js +171 -0
  190. package/src/managers/GuildEmojiRoleManager.js +118 -0
  191. package/src/managers/GuildForumThreadManager.js +94 -0
  192. package/src/managers/GuildInviteManager.js +213 -0
  193. package/src/managers/GuildManager.js +338 -0
  194. package/src/managers/GuildMemberManager.js +599 -0
  195. package/src/managers/GuildMemberRoleManager.js +195 -0
  196. package/src/managers/GuildScheduledEventManager.js +314 -0
  197. package/src/managers/GuildSettingManager.js +155 -0
  198. package/src/managers/GuildStickerManager.js +179 -0
  199. package/src/managers/GuildTextThreadManager.js +98 -0
  200. package/src/managers/InteractionManager.js +39 -0
  201. package/src/managers/MessageManager.js +426 -0
  202. package/src/managers/PermissionOverwriteManager.js +164 -0
  203. package/src/managers/PresenceManager.js +71 -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 +149 -0
  216. package/src/rest/APIRouter.js +53 -0
  217. package/src/rest/DiscordAPIError.js +121 -0
  218. package/src/rest/HTTPError.js +64 -0
  219. package/src/rest/RESTManager.js +97 -0
  220. package/src/rest/RateLimitError.js +55 -0
  221. package/src/rest/RequestHandler.js +476 -0
  222. package/src/sharding/Shard.js +476 -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 +449 -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 +1638 -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 +639 -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 +1257 -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 +352 -0
  286. package/src/structures/MessageReaction.js +184 -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 +1105 -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 +624 -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 +825 -0
  333. package/src/structures/interfaces/Collector.js +301 -0
  334. package/src/structures/interfaces/InteractionResponses.js +313 -0
  335. package/src/structures/interfaces/TextBasedChannel.js +743 -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 +182 -0
  341. package/src/util/ChannelFlags.js +45 -0
  342. package/src/util/Constants.js +1927 -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 +134 -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/Redact.js +26 -0
  355. package/src/util/RemoteAuth.js +449 -0
  356. package/src/util/RoleFlags.js +37 -0
  357. package/src/util/SnowflakeUtil.js +92 -0
  358. package/src/util/Speaking.js +33 -0
  359. package/src/util/Sweepers.js +466 -0
  360. package/src/util/SystemChannelFlags.js +55 -0
  361. package/src/util/ThreadMemberFlags.js +30 -0
  362. package/src/util/UserFlags.js +104 -0
  363. package/src/util/Util.js +1079 -0
  364. package/typings/enums.d.ts +437 -0
  365. package/typings/index.d.ts +8197 -0
  366. package/typings/rawDataTypes.d.ts +403 -0
@@ -0,0 +1,639 @@
1
+ 'use strict';
2
+
3
+ const process = require('node:process');
4
+ const Base = require('./Base');
5
+ const VoiceState = require('./VoiceState');
6
+ const TextBasedChannel = require('./interfaces/TextBasedChannel');
7
+ const { Error } = require('../errors');
8
+ const GuildMemberRoleManager = require('../managers/GuildMemberRoleManager');
9
+ const GuildMemberFlags = require('../util/GuildMemberFlags');
10
+ const Permissions = require('../util/Permissions');
11
+
12
+ /**
13
+ * @type {WeakSet<GuildMember>}
14
+ * @private
15
+ * @internal
16
+ */
17
+ const deletedGuildMembers = new WeakSet();
18
+ let deprecationEmittedForDeleted = false;
19
+
20
+ /**
21
+ * Represents a member of a guild on Discord.
22
+ * @implements {TextBasedChannel}
23
+ * @extends {Base}
24
+ */
25
+ class GuildMember extends Base {
26
+ constructor(client, data, guild) {
27
+ super(client);
28
+
29
+ /**
30
+ * The guild that this member is part of
31
+ * @type {Guild}
32
+ */
33
+ this.guild = guild;
34
+
35
+ /**
36
+ * The timestamp the member joined the guild at
37
+ * @type {?number}
38
+ */
39
+ this.joinedTimestamp = null;
40
+
41
+ /**
42
+ * The last timestamp this member started boosting the guild
43
+ * @type {?number}
44
+ */
45
+ this.premiumSinceTimestamp = null;
46
+
47
+ /**
48
+ * The nickname of this member, if they have one
49
+ * @type {?string}
50
+ */
51
+ this.nickname = null;
52
+
53
+ /**
54
+ * Whether this member has yet to pass the guild's membership gate
55
+ * @type {boolean}
56
+ */
57
+ this.pending = false;
58
+
59
+ /**
60
+ * The timestamp this member's timeout will be removed
61
+ * @type {?number}
62
+ */
63
+ this.communicationDisabledUntilTimestamp = null;
64
+
65
+ /**
66
+ * The role ids of the member
67
+ * @type {Snowflake[]}
68
+ * @private
69
+ */
70
+ this._roles = [];
71
+ if (data) this._patch(data);
72
+ }
73
+
74
+ _patch(data) {
75
+ if ('user' in data) {
76
+ /**
77
+ * The user that this guild member instance represents
78
+ * @type {?User}
79
+ */
80
+ this.user = this.client.users._add(data.user, true);
81
+ }
82
+
83
+ if ('nick' in data) this.nickname = data.nick;
84
+ if ('avatar' in data) {
85
+ /**
86
+ * The guild member's avatar hash
87
+ * @type {?string}
88
+ */
89
+ this.avatar = data.avatar;
90
+ } else if (typeof this.avatar !== 'string') {
91
+ this.avatar = null;
92
+ }
93
+ if ('banner' in data) {
94
+ /**
95
+ * The guild member's banner hash.
96
+ * @type {?string}
97
+ */
98
+ this.banner = data.banner;
99
+ } else {
100
+ this.banner ??= null;
101
+ }
102
+
103
+ if ('joined_at' in data) this.joinedTimestamp = new Date(data.joined_at).getTime();
104
+ if ('premium_since' in data) {
105
+ this.premiumSinceTimestamp = data.premium_since ? new Date(data.premium_since).getTime() : null;
106
+ }
107
+ if ('roles' in data) this._roles = data.roles;
108
+ if ('pending' in data) this.pending = data.pending;
109
+ else this.pending ??= false;
110
+
111
+ if ('communication_disabled_until' in data) {
112
+ this.communicationDisabledUntilTimestamp =
113
+ data.communication_disabled_until && Date.parse(data.communication_disabled_until);
114
+ }
115
+ if ('flags' in data) {
116
+ /**
117
+ * The flags of this member
118
+ * @type {Readonly<GuildMemberFlags>}
119
+ */
120
+ this.flags = new GuildMemberFlags(data.flags).freeze();
121
+ } else {
122
+ this.flags ??= new GuildMemberFlags().freeze();
123
+ }
124
+
125
+ if (data.avatar_decoration_data) {
126
+ /**
127
+ * The member avatar decoration's data
128
+ * @type {?AvatarDecorationData}
129
+ */
130
+ this.avatarDecorationData = {
131
+ asset: data.avatar_decoration_data.asset,
132
+ skuId: data.avatar_decoration_data.sku_id,
133
+ };
134
+ } else if ('avatar_decoration_data' in data) {
135
+ this.avatarDecorationData = null;
136
+ } else {
137
+ this.avatarDecorationData ??= null;
138
+ }
139
+ }
140
+
141
+ _clone() {
142
+ const clone = super._clone();
143
+ clone._roles = this._roles.slice();
144
+ return clone;
145
+ }
146
+
147
+ /**
148
+ * Whether or not the structure has been deleted
149
+ * @type {boolean}
150
+ * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091
151
+ */
152
+ get deleted() {
153
+ if (!deprecationEmittedForDeleted) {
154
+ deprecationEmittedForDeleted = true;
155
+ process.emitWarning(
156
+ 'GuildMember#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
157
+ 'DeprecationWarning',
158
+ );
159
+ }
160
+
161
+ return deletedGuildMembers.has(this);
162
+ }
163
+
164
+ set deleted(value) {
165
+ if (!deprecationEmittedForDeleted) {
166
+ deprecationEmittedForDeleted = true;
167
+ process.emitWarning(
168
+ 'GuildMember#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
169
+ 'DeprecationWarning',
170
+ );
171
+ }
172
+
173
+ if (value) deletedGuildMembers.add(this);
174
+ else deletedGuildMembers.delete(this);
175
+ }
176
+
177
+ /**
178
+ * Whether this GuildMember is a partial
179
+ * @type {boolean}
180
+ * @readonly
181
+ */
182
+ get partial() {
183
+ return this.joinedTimestamp === null;
184
+ }
185
+
186
+ /**
187
+ * A manager for the roles belonging to this member
188
+ * @type {GuildMemberRoleManager}
189
+ * @readonly
190
+ */
191
+ get roles() {
192
+ return new GuildMemberRoleManager(this);
193
+ }
194
+
195
+ /**
196
+ * The voice state of this member
197
+ * @type {VoiceState}
198
+ * @readonly
199
+ */
200
+ get voice() {
201
+ return this.guild.voiceStates.cache.get(this.id) ?? new VoiceState(this.guild, { user_id: this.id });
202
+ }
203
+
204
+ /**
205
+ * A link to the user's avatar decoration.
206
+ * @returns {?string}
207
+ */
208
+ avatarDecorationURL() {
209
+ if (!this.avatarDecorationData) return null;
210
+ return this.client.rest.cdn.AvatarDecoration(this.avatarDecorationData.asset);
211
+ }
212
+
213
+ /**
214
+ * A link to the member's guild avatar.
215
+ * @param {ImageURLOptions} [options={}] Options for the Image URL
216
+ * @returns {?string}
217
+ */
218
+ avatarURL({ format, size, dynamic } = {}) {
219
+ if (!this.avatar) return null;
220
+ return this.client.rest.cdn.GuildMemberAvatar(this.guild.id, this.id, this.avatar, format, size, dynamic);
221
+ }
222
+
223
+ /**
224
+ * A link to the member's banner.
225
+ * @param {ImageURLOptions} [options={}] Options for the banner URL
226
+ * @returns {?string}
227
+ */
228
+ bannerURL({ format, size, dynamic } = {}) {
229
+ return (
230
+ this.banner && this.client.rest.cdn.GuildMemberBanner(this.guild.id, this.id, this.banner, format, size, dynamic)
231
+ );
232
+ }
233
+
234
+ /**
235
+ * A link to the member's guild avatar decoration if they have one.
236
+ * Otherwise, a link to their {@link User#avatarDecorationURL} will be returned.
237
+ * @returns {?string}
238
+ */
239
+ displayAvatarDecorationURL() {
240
+ return this.avatarDecorationURL() ?? this.user.avatarDecorationURL();
241
+ }
242
+
243
+ /**
244
+ * A link to the member's guild avatar if they have one.
245
+ * Otherwise, a link to their {@link User#displayAvatarURL} will be returned.
246
+ * @param {ImageURLOptions} [options={}] Options for the Image URL
247
+ * @returns {string}
248
+ */
249
+ displayAvatarURL(options) {
250
+ return this.avatarURL(options) ?? this.user.displayAvatarURL(options);
251
+ }
252
+
253
+ /**
254
+ * A link to the member's guild banner if they have one.
255
+ * Otherwise, a link to their {@link User#bannerURL} will be returned.
256
+ * @param {ImageURLOptions} [options={}] Options for the image URL
257
+ * @returns {?string}
258
+ */
259
+ displayBannerURL(options) {
260
+ return this.bannerURL(options) ?? this.user.bannerURL(options);
261
+ }
262
+
263
+ /**
264
+ * The time this member joined the guild
265
+ * @type {?Date}
266
+ * @readonly
267
+ */
268
+ get joinedAt() {
269
+ return this.joinedTimestamp ? new Date(this.joinedTimestamp) : null;
270
+ }
271
+
272
+ /**
273
+ * The time this member's timeout will be removed
274
+ * @type {?Date}
275
+ * @readonly
276
+ */
277
+ get communicationDisabledUntil() {
278
+ return this.communicationDisabledUntilTimestamp && new Date(this.communicationDisabledUntilTimestamp);
279
+ }
280
+
281
+ /**
282
+ * The last time this member started boosting the guild
283
+ * @type {?Date}
284
+ * @readonly
285
+ */
286
+ get premiumSince() {
287
+ return this.premiumSinceTimestamp ? new Date(this.premiumSinceTimestamp) : null;
288
+ }
289
+
290
+ /**
291
+ * The presence of this guild member
292
+ * @type {?Presence}
293
+ * @readonly
294
+ */
295
+ get presence() {
296
+ return this.guild.presences.cache.get(this.id) ?? null;
297
+ }
298
+
299
+ /**
300
+ * The displayed color of this member in base 10
301
+ * @type {number}
302
+ * @readonly
303
+ */
304
+ get displayColor() {
305
+ return this.roles.color?.colors.primaryColor ?? 0;
306
+ }
307
+
308
+ /**
309
+ * The displayed color of this member in hexadecimal
310
+ * @type {string}
311
+ * @readonly
312
+ */
313
+ get displayHexColor() {
314
+ return this.roles.color?.hexColor ?? '#000000';
315
+ }
316
+
317
+ /**
318
+ * The member's id
319
+ * @type {Snowflake}
320
+ * @readonly
321
+ */
322
+ get id() {
323
+ return this.user.id;
324
+ }
325
+
326
+ /**
327
+ * The nickname of this member, or their user display name if they don't have one
328
+ * @type {?string}
329
+ * @readonly
330
+ */
331
+ get displayName() {
332
+ return this.nickname ?? this.user.displayName;
333
+ }
334
+
335
+ /**
336
+ * The overall set of permissions for this member, taking only roles and owner status into account
337
+ * @type {Readonly<Permissions>}
338
+ * @readonly
339
+ */
340
+ get permissions() {
341
+ if (this.user.id === this.guild.ownerId) return new Permissions(Permissions.ALL).freeze();
342
+ return new Permissions(this.roles.cache.map(role => role.permissions)).freeze();
343
+ }
344
+
345
+ /**
346
+ * Whether the client user is above this user in the hierarchy, according to role position and guild ownership.
347
+ * This is a prerequisite for many moderative actions.
348
+ * @type {boolean}
349
+ * @readonly
350
+ */
351
+ get manageable() {
352
+ if (this.user.id === this.guild.ownerId) return false;
353
+ if (this.user.id === this.client.user.id) return false;
354
+ if (this.client.user.id === this.guild.ownerId) return true;
355
+ if (!this.guild.members.me) throw new Error('GUILD_UNCACHED_ME');
356
+ return this.guild.members.me.roles.highest.comparePositionTo(this.roles.highest) > 0;
357
+ }
358
+
359
+ /**
360
+ * Whether this member is kickable by the client user
361
+ * @type {boolean}
362
+ * @readonly
363
+ */
364
+ get kickable() {
365
+ return this.manageable && this.guild.members.me.permissions.has(Permissions.FLAGS.KICK_MEMBERS);
366
+ }
367
+
368
+ /**
369
+ * Whether this member is bannable by the client user
370
+ * @type {boolean}
371
+ * @readonly
372
+ */
373
+ get bannable() {
374
+ return this.manageable && this.guild.members.me.permissions.has(Permissions.FLAGS.BAN_MEMBERS);
375
+ }
376
+
377
+ /**
378
+ * Whether this member is moderatable by the client user
379
+ * @type {boolean}
380
+ * @readonly
381
+ */
382
+ get moderatable() {
383
+ return (
384
+ !this.permissions.has(Permissions.FLAGS.ADMINISTRATOR) &&
385
+ this.manageable &&
386
+ (this.guild.members.me?.permissions.has(Permissions.FLAGS.MODERATE_MEMBERS) ?? false)
387
+ );
388
+ }
389
+
390
+ /**
391
+ * Whether this member is currently timed out
392
+ * @returns {boolean}
393
+ */
394
+ isCommunicationDisabled() {
395
+ return this.communicationDisabledUntilTimestamp > Date.now();
396
+ }
397
+
398
+ /**
399
+ * Returns `channel.permissionsFor(guildMember)`. Returns permissions for a member in a guild channel,
400
+ * taking into account roles and permission overwrites.
401
+ * @param {GuildChannelResolvable} channel The guild channel to use as context
402
+ * @returns {Readonly<Permissions>}
403
+ */
404
+ permissionsIn(channel) {
405
+ channel = this.guild.channels.resolve(channel);
406
+ if (!channel) throw new Error('GUILD_CHANNEL_RESOLVE');
407
+ return channel.permissionsFor(this);
408
+ }
409
+
410
+ /**
411
+ * Edits this member.
412
+ * @param {GuildMemberEditData} data The data to edit the member with
413
+ * @param {string} [reason] Reason for editing this user
414
+ * @returns {Promise<GuildMember>}
415
+ */
416
+ edit(data, reason) {
417
+ return this.guild.members.edit(this, data, reason);
418
+ }
419
+
420
+ /**
421
+ * Sets the nickname for this member.
422
+ * @param {?string} nick The nickname for the guild member, or `null` if you want to reset their nickname
423
+ * @param {string} [reason] Reason for setting the nickname
424
+ * @returns {Promise<GuildMember>}
425
+ * @example
426
+ * // Set a nickname for a guild member
427
+ * guildMember.setNickname('cool nickname', 'Needed a new nickname')
428
+ * .then(member => console.log(`Set nickname of ${member.user.username}`))
429
+ * .catch(console.error);
430
+ * @example
431
+ * // Remove a nickname for a guild member
432
+ * guildMember.setNickname(null, 'No nicknames allowed!')
433
+ * .then(member => console.log(`Removed nickname for ${member.user.username}`))
434
+ * .catch(console.error);
435
+ */
436
+ setNickname(nick, reason) {
437
+ return this.edit({ nick }, reason);
438
+ }
439
+
440
+ /**
441
+ * Sets the flags for this member.
442
+ * @param {GuildMemberFlagsResolvable} flags The flags to set
443
+ * @param {string} [reason] Reason for setting the flags
444
+ * @returns {Promise<GuildMember>}
445
+ */
446
+ setFlags(flags, reason) {
447
+ return this.edit({ flags, reason });
448
+ }
449
+
450
+ /**
451
+ * Creates a DM channel between the client and this member.
452
+ * @param {boolean} [force=false] Whether to skip the cache check and request the API
453
+ * @returns {Promise<DMChannel>}
454
+ */
455
+ createDM(force = false) {
456
+ return this.user.createDM(force);
457
+ }
458
+
459
+ /**
460
+ * Deletes any DMs with this member.
461
+ * @returns {Promise<DMChannel>}
462
+ */
463
+ deleteDM() {
464
+ return this.user.deleteDM();
465
+ }
466
+
467
+ /**
468
+ * Kicks this member from the guild.
469
+ * @param {string} [reason] Reason for kicking user
470
+ * @returns {Promise<GuildMember>}
471
+ */
472
+ kick(reason) {
473
+ return this.guild.members.kick(this, reason);
474
+ }
475
+
476
+ /**
477
+ * Bans this guild member.
478
+ * @param {BanOptions} [options] Options for the ban
479
+ * @returns {Promise<GuildMember>}
480
+ * @example
481
+ * // Ban a guild member, deleting a week's worth of messages
482
+ * guildMember.ban({ deleteMessageSeconds: 60 * 60 * 24 * 7, reason: 'They deserved it' })
483
+ * .then(console.log)
484
+ * .catch(console.error);
485
+ */
486
+ ban(options) {
487
+ return this.guild.bans.create(this, options);
488
+ }
489
+
490
+ /**
491
+ * Times this guild member out.
492
+ * @param {DateResolvable|null} communicationDisabledUntil The date or timestamp
493
+ * for the member's communication to be disabled until. Provide `null` to remove the timeout.
494
+ * @param {string} [reason] The reason for this timeout.
495
+ * @returns {Promise<GuildMember>}
496
+ * @example
497
+ * // Time a guild member out for 5 minutes
498
+ * guildMember.disableCommunicationUntil(Date.now() + (5 * 60 * 1000), 'They deserved it')
499
+ * .then(console.log)
500
+ * .catch(console.error);
501
+ * @example
502
+ * // Remove the timeout of a guild member
503
+ * guildMember.disableCommunicationUntil(null)
504
+ * .then(member => console.log(`Removed timeout for ${member.displayName}`))
505
+ * .catch(console.error);
506
+ */
507
+ disableCommunicationUntil(communicationDisabledUntil, reason) {
508
+ return this.edit({ communicationDisabledUntil }, reason);
509
+ }
510
+
511
+ /**
512
+ * Times this guild member out.
513
+ * @param {number|null} timeout The time in milliseconds
514
+ * for the member's communication to be disabled until. Provide `null` to remove the timeout.
515
+ * @param {string} [reason] The reason for this timeout.
516
+ * @returns {Promise<GuildMember>}
517
+ * @example
518
+ * // Time a guild member out for 5 minutes
519
+ * guildMember.timeout(5 * 60 * 1000, 'They deserved it')
520
+ * .then(console.log)
521
+ * .catch(console.error);
522
+ */
523
+ timeout(timeout, reason) {
524
+ return this.disableCommunicationUntil(timeout && Date.now() + timeout, reason);
525
+ }
526
+
527
+ /**
528
+ * Fetches this GuildMember.
529
+ * @param {boolean} [force=true] Whether to skip the cache check and request the API
530
+ * @returns {Promise<GuildMember>}
531
+ */
532
+ fetch(force = true) {
533
+ return this.guild.members.fetch({ user: this.id, cache: true, force });
534
+ }
535
+
536
+ /**
537
+ * Whether this guild member equals another guild member. It compares all properties, so for most
538
+ * comparison it is advisable to just compare `member.id === member2.id` as it is significantly faster
539
+ * and is often what most users need.
540
+ * @param {GuildMember} member The member to compare with
541
+ * @returns {boolean}
542
+ */
543
+ equals(member) {
544
+ return (
545
+ member instanceof this.constructor &&
546
+ this.id === member.id &&
547
+ this.partial === member.partial &&
548
+ this.guild.id === member.guild.id &&
549
+ this.joinedTimestamp === member.joinedTimestamp &&
550
+ this.nickname === member.nickname &&
551
+ this.avatar === member.avatar &&
552
+ this.banner === member.banner &&
553
+ this.pending === member.pending &&
554
+ this.communicationDisabledUntilTimestamp === member.communicationDisabledUntilTimestamp &&
555
+ this.flags.equals(member.flags) &&
556
+ (this._roles === member._roles ||
557
+ (this._roles.length === member._roles.length && this._roles.every((role, i) => role === member._roles[i]))) &&
558
+ this.avatarDecorationData?.asset === member.avatarDecorationData?.asset &&
559
+ this.avatarDecorationData?.skuId === member.avatarDecorationData?.skuId
560
+ );
561
+ }
562
+
563
+ /**
564
+ * When concatenated with a string, this automatically returns the user's mention instead of the GuildMember object.
565
+ * @returns {string}
566
+ * @example
567
+ * // Logs: Hello from <@123456789012345678>!
568
+ * console.log(`Hello from ${member}!`);
569
+ */
570
+ toString() {
571
+ return `<@${this.nickname ? '!' : ''}${this.user.id}>`;
572
+ }
573
+
574
+ toJSON() {
575
+ const json = super.toJSON({
576
+ guild: 'guildId',
577
+ user: 'userId',
578
+ displayName: true,
579
+ roles: true,
580
+ });
581
+ json.avatarURL = this.avatarURL();
582
+ json.bannerURL = this.bannerURL();
583
+ json.displayAvatarURL = this.displayAvatarURL();
584
+ json.displayBannerURL = this.displayBannerURL();
585
+ json.avatarDecorationURL = this.avatarDecorationURL();
586
+ return json;
587
+ }
588
+
589
+ /**
590
+ * Sets the guild avatar of the logged in client.
591
+ * @param {?(BufferResolvable|Base64Resolvable)} avatar The new avatar
592
+ * @returns {Promise<GuildMember>}
593
+ */
594
+ setAvatar(avatar) {
595
+ return this.edit({ avatar });
596
+ }
597
+
598
+ /**
599
+ * Sets the guild banner of the logged in client.
600
+ * @param {?(BufferResolvable|Base64Resolvable)} banner The new banner
601
+ * @returns {Promise<GuildMember>}
602
+ */
603
+ setBanner(banner) {
604
+ return this.edit({ banner });
605
+ }
606
+
607
+ /**
608
+ * Set Guild About me
609
+ * @param {string | null} bio Bio to set
610
+ * @returns {Promise<GuildMember>}
611
+ */
612
+ setAboutMe(bio = null) {
613
+ return this.edit({ bio });
614
+ }
615
+ }
616
+
617
+ /**
618
+ * Sends a message to this user.
619
+ * @method send
620
+ * @memberof GuildMember
621
+ * @instance
622
+ * @param {string|MessagePayload|MessageOptions} options The options to provide
623
+ * @returns {Promise<Message>}
624
+ * @example
625
+ * // Send a direct message
626
+ * guildMember.send('Hello!')
627
+ * .then(message => console.log(`Sent message: ${message.content} to ${guildMember.displayName}`))
628
+ * .catch(console.error);
629
+ */
630
+
631
+ TextBasedChannel.applyToClass(GuildMember);
632
+
633
+ exports.GuildMember = GuildMember;
634
+ exports.deletedGuildMembers = deletedGuildMembers;
635
+
636
+ /**
637
+ * @external APIGuildMember
638
+ * @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
639
+ */