discord.js-selfbot-v13-new 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +124 -0
  3. package/package.json +89 -0
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +86 -0
  6. package/src/client/Client.js +934 -0
  7. package/src/client/WebhookClient.js +61 -0
  8. package/src/client/actions/Action.js +116 -0
  9. package/src/client/actions/ActionsManager.js +80 -0
  10. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  11. package/src/client/actions/AutoModerationActionExecution.js +27 -0
  12. package/src/client/actions/AutoModerationRuleCreate.js +28 -0
  13. package/src/client/actions/AutoModerationRuleDelete.js +32 -0
  14. package/src/client/actions/AutoModerationRuleUpdate.js +30 -0
  15. package/src/client/actions/ChannelCreate.js +23 -0
  16. package/src/client/actions/ChannelDelete.js +39 -0
  17. package/src/client/actions/ChannelUpdate.js +43 -0
  18. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  19. package/src/client/actions/GuildBanAdd.js +20 -0
  20. package/src/client/actions/GuildBanRemove.js +25 -0
  21. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  22. package/src/client/actions/GuildDelete.js +65 -0
  23. package/src/client/actions/GuildEmojiCreate.js +20 -0
  24. package/src/client/actions/GuildEmojiDelete.js +21 -0
  25. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  26. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  27. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  28. package/src/client/actions/GuildMemberRemove.js +33 -0
  29. package/src/client/actions/GuildMemberUpdate.js +44 -0
  30. package/src/client/actions/GuildRoleCreate.js +25 -0
  31. package/src/client/actions/GuildRoleDelete.js +31 -0
  32. package/src/client/actions/GuildRoleUpdate.js +39 -0
  33. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  34. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  35. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  36. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  37. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  38. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  39. package/src/client/actions/GuildStickerCreate.js +20 -0
  40. package/src/client/actions/GuildStickerDelete.js +21 -0
  41. package/src/client/actions/GuildStickerUpdate.js +20 -0
  42. package/src/client/actions/GuildStickersUpdate.js +34 -0
  43. package/src/client/actions/GuildUpdate.js +33 -0
  44. package/src/client/actions/InviteCreate.js +28 -0
  45. package/src/client/actions/InviteDelete.js +30 -0
  46. package/src/client/actions/MessageCreate.js +50 -0
  47. package/src/client/actions/MessageDelete.js +32 -0
  48. package/src/client/actions/MessageDeleteBulk.js +46 -0
  49. package/src/client/actions/MessagePollVoteAdd.js +33 -0
  50. package/src/client/actions/MessagePollVoteRemove.js +33 -0
  51. package/src/client/actions/MessageReactionAdd.js +68 -0
  52. package/src/client/actions/MessageReactionRemove.js +50 -0
  53. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  54. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  55. package/src/client/actions/MessageUpdate.js +26 -0
  56. package/src/client/actions/PresenceUpdate.js +50 -0
  57. package/src/client/actions/StageInstanceCreate.js +28 -0
  58. package/src/client/actions/StageInstanceDelete.js +33 -0
  59. package/src/client/actions/StageInstanceUpdate.js +30 -0
  60. package/src/client/actions/ThreadCreate.js +24 -0
  61. package/src/client/actions/ThreadDelete.js +32 -0
  62. package/src/client/actions/ThreadListSync.js +59 -0
  63. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  64. package/src/client/actions/ThreadMembersUpdate.js +34 -0
  65. package/src/client/actions/TypingStart.js +29 -0
  66. package/src/client/actions/UserUpdate.js +35 -0
  67. package/src/client/actions/VoiceStateUpdate.js +50 -0
  68. package/src/client/actions/WebhooksUpdate.js +20 -0
  69. package/src/client/voice/ClientVoiceManager.js +151 -0
  70. package/src/client/voice/VoiceConnection.js +1249 -0
  71. package/src/client/voice/dispatcher/AnnexBDispatcher.js +120 -0
  72. package/src/client/voice/dispatcher/AudioDispatcher.js +145 -0
  73. package/src/client/voice/dispatcher/BaseDispatcher.js +459 -0
  74. package/src/client/voice/dispatcher/VPxDispatcher.js +54 -0
  75. package/src/client/voice/dispatcher/VideoDispatcher.js +68 -0
  76. package/src/client/voice/networking/VoiceUDPClient.js +173 -0
  77. package/src/client/voice/networking/VoiceWebSocket.js +286 -0
  78. package/src/client/voice/player/MediaPlayer.js +321 -0
  79. package/src/client/voice/player/processing/AnnexBNalSplitter.js +244 -0
  80. package/src/client/voice/player/processing/IvfSplitter.js +106 -0
  81. package/src/client/voice/player/processing/PCMInsertSilence.js +37 -0
  82. package/src/client/voice/receiver/PacketHandler.js +260 -0
  83. package/src/client/voice/receiver/Receiver.js +96 -0
  84. package/src/client/voice/receiver/Recorder.js +173 -0
  85. package/src/client/voice/util/Function.js +116 -0
  86. package/src/client/voice/util/PlayInterface.js +122 -0
  87. package/src/client/voice/util/Secretbox.js +64 -0
  88. package/src/client/voice/util/Silence.js +16 -0
  89. package/src/client/voice/util/Socket.js +62 -0
  90. package/src/client/voice/util/VolumeInterface.js +104 -0
  91. package/src/client/websocket/WebSocketManager.js +392 -0
  92. package/src/client/websocket/WebSocketShard.js +907 -0
  93. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  94. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  95. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  96. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  97. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  98. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  99. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  100. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  101. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  102. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  103. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  104. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  105. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  106. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  107. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -0
  108. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  109. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  110. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  111. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  112. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  113. package/src/client/websocket/handlers/GUILD_CREATE.js +52 -0
  114. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  115. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  116. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  117. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  118. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  119. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  120. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  121. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  122. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  123. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  124. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  125. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  126. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  127. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  128. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  129. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  130. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  131. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -0
  132. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  133. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  134. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  135. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  136. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  137. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +5 -0
  138. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -0
  139. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  140. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  141. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  142. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  143. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  144. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  145. package/src/client/websocket/handlers/READY.js +121 -0
  146. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -0
  147. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -0
  148. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -0
  149. package/src/client/websocket/handlers/RESUMED.js +14 -0
  150. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  151. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  152. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  153. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  154. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  155. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  156. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  157. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  158. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  159. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  160. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -0
  161. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  162. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -0
  163. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -0
  164. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  165. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
  166. package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
  167. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  168. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  169. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  170. package/src/client/websocket/handlers/index.js +84 -0
  171. package/src/errors/DJSError.js +61 -0
  172. package/src/errors/Messages.js +217 -0
  173. package/src/errors/index.js +4 -0
  174. package/src/index.js +172 -0
  175. package/src/managers/ApplicationCommandManager.js +264 -0
  176. package/src/managers/ApplicationCommandPermissionsManager.js +417 -0
  177. package/src/managers/AutoModerationRuleManager.js +296 -0
  178. package/src/managers/BaseGuildEmojiManager.js +80 -0
  179. package/src/managers/BaseManager.js +19 -0
  180. package/src/managers/BillingManager.js +66 -0
  181. package/src/managers/CachedManager.js +71 -0
  182. package/src/managers/ChannelManager.js +148 -0
  183. package/src/managers/ClientUserSettingManager.js +372 -0
  184. package/src/managers/DataManager.js +61 -0
  185. package/src/managers/GuildBanManager.js +250 -0
  186. package/src/managers/GuildChannelManager.js +488 -0
  187. package/src/managers/GuildEmojiManager.js +171 -0
  188. package/src/managers/GuildEmojiRoleManager.js +118 -0
  189. package/src/managers/GuildForumThreadManager.js +108 -0
  190. package/src/managers/GuildInviteManager.js +213 -0
  191. package/src/managers/GuildManager.js +338 -0
  192. package/src/managers/GuildMemberManager.js +599 -0
  193. package/src/managers/GuildMemberRoleManager.js +195 -0
  194. package/src/managers/GuildScheduledEventManager.js +314 -0
  195. package/src/managers/GuildSettingManager.js +155 -0
  196. package/src/managers/GuildStickerManager.js +179 -0
  197. package/src/managers/GuildTextThreadManager.js +98 -0
  198. package/src/managers/InteractionManager.js +39 -0
  199. package/src/managers/MessageManager.js +423 -0
  200. package/src/managers/PermissionOverwriteManager.js +164 -0
  201. package/src/managers/PresenceManager.js +71 -0
  202. package/src/managers/ReactionManager.js +67 -0
  203. package/src/managers/ReactionUserManager.js +73 -0
  204. package/src/managers/RelationshipManager.js +278 -0
  205. package/src/managers/RoleManager.js +448 -0
  206. package/src/managers/SessionManager.js +66 -0
  207. package/src/managers/StageInstanceManager.js +162 -0
  208. package/src/managers/ThreadManager.js +175 -0
  209. package/src/managers/ThreadMemberManager.js +186 -0
  210. package/src/managers/UserManager.js +136 -0
  211. package/src/managers/UserNoteManager.js +53 -0
  212. package/src/managers/VoiceStateManager.js +59 -0
  213. package/src/rest/APIRequest.js +154 -0
  214. package/src/rest/APIRouter.js +53 -0
  215. package/src/rest/DiscordAPIError.js +119 -0
  216. package/src/rest/HTTPError.js +62 -0
  217. package/src/rest/RESTManager.js +67 -0
  218. package/src/rest/RateLimitError.js +55 -0
  219. package/src/rest/RequestHandler.js +466 -0
  220. package/src/sharding/Shard.js +444 -0
  221. package/src/sharding/ShardClientUtil.js +279 -0
  222. package/src/sharding/ShardingManager.js +319 -0
  223. package/src/structures/AnonymousGuild.js +98 -0
  224. package/src/structures/ApplicationCommand.js +593 -0
  225. package/src/structures/ApplicationRoleConnectionMetadata.js +48 -0
  226. package/src/structures/AutoModerationActionExecution.js +89 -0
  227. package/src/structures/AutoModerationRule.js +294 -0
  228. package/src/structures/AutocompleteInteraction.js +107 -0
  229. package/src/structures/Base.js +43 -0
  230. package/src/structures/BaseCommandInteraction.js +211 -0
  231. package/src/structures/BaseGuild.js +116 -0
  232. package/src/structures/BaseGuildEmoji.js +56 -0
  233. package/src/structures/BaseGuildTextChannel.js +191 -0
  234. package/src/structures/BaseGuildVoiceChannel.js +241 -0
  235. package/src/structures/BaseMessageComponent.js +181 -0
  236. package/src/structures/ButtonInteraction.js +11 -0
  237. package/src/structures/CallState.js +63 -0
  238. package/src/structures/CategoryChannel.js +85 -0
  239. package/src/structures/Channel.js +284 -0
  240. package/src/structures/ClientPresence.js +77 -0
  241. package/src/structures/ClientUser.js +449 -0
  242. package/src/structures/CommandInteraction.js +41 -0
  243. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  244. package/src/structures/ContainerComponent.js +68 -0
  245. package/src/structures/ContextMenuInteraction.js +65 -0
  246. package/src/structures/DMChannel.js +219 -0
  247. package/src/structures/DirectoryChannel.js +20 -0
  248. package/src/structures/Emoji.js +148 -0
  249. package/src/structures/FileComponent.js +49 -0
  250. package/src/structures/ForumChannel.js +31 -0
  251. package/src/structures/GroupDMChannel.js +394 -0
  252. package/src/structures/Guild.js +1638 -0
  253. package/src/structures/GuildAuditLogs.js +746 -0
  254. package/src/structures/GuildBan.js +59 -0
  255. package/src/structures/GuildBoost.js +108 -0
  256. package/src/structures/GuildChannel.js +470 -0
  257. package/src/structures/GuildEmoji.js +161 -0
  258. package/src/structures/GuildMember.js +636 -0
  259. package/src/structures/GuildPreview.js +191 -0
  260. package/src/structures/GuildPreviewEmoji.js +27 -0
  261. package/src/structures/GuildScheduledEvent.js +536 -0
  262. package/src/structures/GuildTemplate.js +236 -0
  263. package/src/structures/Integration.js +188 -0
  264. package/src/structures/IntegrationApplication.js +96 -0
  265. package/src/structures/Interaction.js +290 -0
  266. package/src/structures/InteractionCollector.js +248 -0
  267. package/src/structures/InteractionWebhook.js +43 -0
  268. package/src/structures/Invite.js +358 -0
  269. package/src/structures/InviteGuild.js +23 -0
  270. package/src/structures/InviteStageInstance.js +86 -0
  271. package/src/structures/MediaChannel.js +11 -0
  272. package/src/structures/MediaGalleryComponent.js +41 -0
  273. package/src/structures/MediaGalleryItem.js +47 -0
  274. package/src/structures/Message.js +1252 -0
  275. package/src/structures/MessageActionRow.js +105 -0
  276. package/src/structures/MessageAttachment.js +216 -0
  277. package/src/structures/MessageButton.js +166 -0
  278. package/src/structures/MessageCollector.js +146 -0
  279. package/src/structures/MessageComponentInteraction.js +120 -0
  280. package/src/structures/MessageContextMenuInteraction.js +20 -0
  281. package/src/structures/MessageEmbed.js +596 -0
  282. package/src/structures/MessageMentions.js +273 -0
  283. package/src/structures/MessagePayload.js +354 -0
  284. package/src/structures/MessageReaction.js +181 -0
  285. package/src/structures/MessageSelectMenu.js +141 -0
  286. package/src/structures/Modal.js +161 -0
  287. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  288. package/src/structures/ModalSubmitInteraction.js +119 -0
  289. package/src/structures/NewsChannel.js +32 -0
  290. package/src/structures/OAuth2Guild.js +28 -0
  291. package/src/structures/PermissionOverwrites.js +198 -0
  292. package/src/structures/Poll.js +108 -0
  293. package/src/structures/PollAnswer.js +88 -0
  294. package/src/structures/Presence.js +1105 -0
  295. package/src/structures/ReactionCollector.js +229 -0
  296. package/src/structures/ReactionEmoji.js +31 -0
  297. package/src/structures/Role.js +590 -0
  298. package/src/structures/SectionComponent.js +48 -0
  299. package/src/structures/SelectMenuInteraction.js +21 -0
  300. package/src/structures/SeparatorComponent.js +48 -0
  301. package/src/structures/Session.js +81 -0
  302. package/src/structures/StageChannel.js +104 -0
  303. package/src/structures/StageInstance.js +208 -0
  304. package/src/structures/Sticker.js +310 -0
  305. package/src/structures/StickerPack.js +95 -0
  306. package/src/structures/StoreChannel.js +56 -0
  307. package/src/structures/Team.js +118 -0
  308. package/src/structures/TeamMember.js +80 -0
  309. package/src/structures/TextChannel.js +33 -0
  310. package/src/structures/TextDisplayComponent.js +40 -0
  311. package/src/structures/TextInputComponent.js +132 -0
  312. package/src/structures/ThreadChannel.js +605 -0
  313. package/src/structures/ThreadMember.js +105 -0
  314. package/src/structures/ThreadOnlyChannel.js +249 -0
  315. package/src/structures/ThumbnailComponent.js +57 -0
  316. package/src/structures/Typing.js +74 -0
  317. package/src/structures/UnfurledMediaItem.js +29 -0
  318. package/src/structures/User.js +622 -0
  319. package/src/structures/UserContextMenuInteraction.js +29 -0
  320. package/src/structures/VoiceChannel.js +110 -0
  321. package/src/structures/VoiceChannelEffect.js +69 -0
  322. package/src/structures/VoiceRegion.js +53 -0
  323. package/src/structures/VoiceState.js +354 -0
  324. package/src/structures/WebEmbed.js +373 -0
  325. package/src/structures/Webhook.js +478 -0
  326. package/src/structures/WelcomeChannel.js +60 -0
  327. package/src/structures/WelcomeScreen.js +48 -0
  328. package/src/structures/Widget.js +87 -0
  329. package/src/structures/WidgetMember.js +99 -0
  330. package/src/structures/interfaces/Application.js +825 -0
  331. package/src/structures/interfaces/Collector.js +300 -0
  332. package/src/structures/interfaces/InteractionResponses.js +313 -0
  333. package/src/structures/interfaces/TextBasedChannel.js +759 -0
  334. package/src/util/APITypes.js +59 -0
  335. package/src/util/ActivityFlags.js +44 -0
  336. package/src/util/ApplicationFlags.js +76 -0
  337. package/src/util/AttachmentFlags.js +38 -0
  338. package/src/util/BitField.js +170 -0
  339. package/src/util/ChannelFlags.js +45 -0
  340. package/src/util/Constants.js +1914 -0
  341. package/src/util/DataResolver.js +146 -0
  342. package/src/util/Formatters.js +228 -0
  343. package/src/util/GuildMemberFlags.js +43 -0
  344. package/src/util/Intents.js +74 -0
  345. package/src/util/InviteFlags.js +34 -0
  346. package/src/util/LimitedCollection.js +131 -0
  347. package/src/util/MessageFlags.js +63 -0
  348. package/src/util/Options.js +358 -0
  349. package/src/util/Permissions.js +202 -0
  350. package/src/util/PremiumUsageFlags.js +31 -0
  351. package/src/util/PurchasedFlags.js +33 -0
  352. package/src/util/RemoteAuth.js +382 -0
  353. package/src/util/RoleFlags.js +37 -0
  354. package/src/util/SnowflakeUtil.js +92 -0
  355. package/src/util/Speaking.js +33 -0
  356. package/src/util/Sweepers.js +466 -0
  357. package/src/util/SystemChannelFlags.js +55 -0
  358. package/src/util/ThreadMemberFlags.js +30 -0
  359. package/src/util/UserFlags.js +104 -0
  360. package/src/util/Util.js +1048 -0
  361. package/typings/enums.d.ts +439 -0
  362. package/typings/index.d.ts +8247 -0
  363. package/typings/index.test-d.ts +0 -0
  364. package/typings/rawDataTypes.d.ts +403 -0
@@ -0,0 +1,449 @@
1
+ 'use strict';
2
+
3
+ const { setInterval } = require('node:timers');
4
+ const { Collection } = require('@discordjs/collection');
5
+ const Invite = require('./Invite');
6
+ const User = require('./User');
7
+ const DataResolver = require('../util/DataResolver');
8
+ const PremiumUsageFlags = require('../util/PremiumUsageFlags');
9
+ const PurchasedFlags = require('../util/PurchasedFlags');
10
+ const Util = require('../util/Util');
11
+
12
+ /**
13
+ * Represents the logged in client's Discord user.
14
+ * @extends {User}
15
+ */
16
+ class ClientUser extends User {
17
+ #packageName = null;
18
+ #intervalSamsungPresence = setInterval(() => {
19
+ this.client.emit('debug', `[UPDATE] Samsung Presence: ${this.#packageName}`);
20
+ if (!this.#packageName) return;
21
+ this.setSamsungActivity(this.#packageName, 'UPDATE');
22
+ }, 1000 * 60 * 10).unref();
23
+
24
+ _patch(data) {
25
+ super._patch(data);
26
+
27
+ if ('verified' in data) {
28
+ /**
29
+ * Whether or not this account has been verified
30
+ * @type {boolean}
31
+ */
32
+ this.verified = data.verified;
33
+ }
34
+
35
+ if ('mfa_enabled' in data) {
36
+ /**
37
+ * If the bot's {@link Application#owner Owner} has MFA enabled on their account
38
+ * @type {?boolean}
39
+ */
40
+ this.mfaEnabled = typeof data.mfa_enabled === 'boolean' ? data.mfa_enabled : null;
41
+ } else {
42
+ this.mfaEnabled ??= null;
43
+ }
44
+
45
+ if ('token' in data) this.client.token = data.token;
46
+
47
+ if ('purchased_flags' in data) {
48
+ /**
49
+ * Purchased state of the client user.
50
+ * @type {Readonly<PurchasedFlags>}
51
+ */
52
+ this.purchasedFlags = new PurchasedFlags(data.purchased_flags || 0).freeze();
53
+ } else {
54
+ this.purchasedFlags = new PurchasedFlags().freeze();
55
+ }
56
+
57
+ if ('premium_usage_flags' in data) {
58
+ /**
59
+ * Premium usage state of the client user.
60
+ * @type {Readonly<PremiumUsageFlags>}
61
+ */
62
+ this.premiumUsageFlags = new PremiumUsageFlags(data.premium_usage_flags || 0);
63
+ } else {
64
+ this.premiumUsageFlags = new PremiumUsageFlags().freeze();
65
+ }
66
+
67
+ if ('phone' in data) {
68
+ /**
69
+ * Phone number of the client user.
70
+ * @type {?string}
71
+ */
72
+ this.phone = data.phone;
73
+ }
74
+
75
+ if ('nsfw_allowed' in data) {
76
+ /**
77
+ * Whether or not the client user is allowed to send NSFW messages [iOS device].
78
+ * @type {?boolean}
79
+ */
80
+ this.nsfwAllowed = data.nsfw_allowed;
81
+ }
82
+
83
+ if ('email' in data) {
84
+ /**
85
+ * Email address of the client user.
86
+ * @type {?string}
87
+ */
88
+ this.email = data.email;
89
+ }
90
+
91
+ if ('bio' in data) {
92
+ /**
93
+ * About me (User)
94
+ * <info>The user must be force fetched for this property to be present or be updated</info>
95
+ * @type {?string}
96
+ */
97
+ this.bio = data.bio;
98
+ }
99
+
100
+ if ('pronouns' in data) {
101
+ /**
102
+ * Pronouns (User)
103
+ * <info>The user must be force fetched for this property to be present or be updated</info>
104
+ * @type {?string}
105
+ */
106
+ this.pronouns = data.pronouns;
107
+ }
108
+
109
+ if ('premium_type' in data) {
110
+ /**
111
+ * Premium types denote the level of premium a user has.
112
+ * @type {number}
113
+ * @see {@link https://discord-userdoccers.vercel.app/resources/user#premium-type}
114
+ */
115
+ this.premiumType = data.premium_type;
116
+ }
117
+ }
118
+
119
+ /**
120
+ * Represents the client user's presence
121
+ * @type {ClientPresence}
122
+ * @readonly
123
+ */
124
+ get presence() {
125
+ return this.client.presence;
126
+ }
127
+
128
+ /**
129
+ * Data used to edit the logged in client
130
+ * @typedef {Object} ClientUserEditData
131
+ * @property {string} [username] The new username
132
+ * @property {?(BufferResolvable|Base64Resolvable)} [avatar] The new avatar
133
+ * @property {?(BufferResolvable|Base64Resolvable)} [banner] The new banner
134
+ * @property {?string} [bio] The new bio
135
+ */
136
+
137
+ /**
138
+ * Edits the logged in client.
139
+ * @param {ClientUserEditData} options The new data
140
+ * @returns {Promise<ClientUser>}
141
+ */
142
+ async edit(options = {}) {
143
+ const data = await this.client.api.users('@me').patch({ data: options });
144
+ const { updated } = this.client.actions.UserUpdate.handle(data);
145
+ return updated ?? this;
146
+ }
147
+
148
+ /**
149
+ * Sets the username of the logged in client.
150
+ * <info>Changing usernames in Discord is heavily rate limited, with only 2 requests
151
+ * every hour. Use this sparingly!</info>
152
+ * @param {string} username The new username
153
+ * @param {string} password Current Password
154
+ * @returns {Promise<ClientUser>}
155
+ * @example
156
+ * // Set username
157
+ * client.user.setUsername('discordjs', 'passw@rd')
158
+ * .then(user => console.log(`My new username is ${user.username}`))
159
+ * .catch(console.error);
160
+ */
161
+ setUsername(username, password) {
162
+ return this.edit({ username, password });
163
+ }
164
+
165
+ /**
166
+ * Sets the avatar of the logged in client.
167
+ * @param {?(BufferResolvable|Base64Resolvable)} avatar The new avatar
168
+ * @returns {Promise<ClientUser>}
169
+ * @example
170
+ * // Set avatar
171
+ * client.user.setAvatar('./avatar.png')
172
+ * .then(user => console.log(`New avatar set!`))
173
+ * .catch(console.error);
174
+ */
175
+ async setAvatar(avatar) {
176
+ avatar = avatar && (await DataResolver.resolveImage(avatar));
177
+ return this.edit({ avatar });
178
+ }
179
+
180
+ /**
181
+ * Options for setting activities
182
+ * @typedef {Object} ActivitiesOptions
183
+ * @property {string} name Name of the activity
184
+ * @property {string} [state] State of the activity
185
+ * @property {ActivityType|number} [type] Type of the activity
186
+ * @property {string} [url] Twitch / YouTube stream URL
187
+ */
188
+
189
+ /**
190
+ * Data resembling a raw Discord presence.
191
+ * @typedef {Object} PresenceData
192
+ * @property {PresenceStatusData} [status] Status of the user
193
+ * @property {boolean} [afk] Whether the user is AFK
194
+ * @property {ActivitiesOptions[]|CustomStatus[]|RichPresence[]|SpotifyRPC[]} [activities] Activity the user is playing
195
+ * @property {number|number[]} [shardId] Shard id(s) to have the activity set on
196
+ */
197
+
198
+ /**
199
+ * Sets the full presence of the client user.
200
+ * @param {PresenceData} data Data for the presence
201
+ * @returns {ClientPresence}
202
+ * @example
203
+ * // Set the client user's presence
204
+ * client.user.setPresence({ activities: [{ name: 'with discord.js' }], status: 'idle' });
205
+ * @see {@link https://github.com/aiko-chan-ai/discord.js-selfbot-v13/blob/main/Document/RichPresence.md}
206
+ */
207
+ setPresence(data) {
208
+ return this.client.presence.set(data);
209
+ }
210
+
211
+ /**
212
+ * A user's status. Must be one of:
213
+ * * `online`
214
+ * * `idle`
215
+ * * `invisible`
216
+ * * `dnd` (do not disturb)
217
+ * @typedef {string} PresenceStatusData
218
+ */
219
+
220
+ /**
221
+ * Sets the status of the client user.
222
+ * @param {PresenceStatusData} status Status to change to
223
+ * @param {number|number[]} [shardId] Shard id(s) to have the activity set on
224
+ * @returns {ClientPresence}
225
+ * @example
226
+ * // Set the client user's status
227
+ * client.user.setStatus('idle');
228
+ */
229
+ setStatus(status, shardId) {
230
+ return this.setPresence({ status, shardId });
231
+ }
232
+
233
+ /**
234
+ * Options for setting an activity.
235
+ * @typedef {Object} ActivityOptions
236
+ * @property {string} name Name of the activity
237
+ * @property {string} [url] Twitch / YouTube stream URL
238
+ * @property {ActivityType|number} [type] Type of the activity
239
+ * @property {number|number[]} [shardId] Shard Id(s) to have the activity set on
240
+ */
241
+
242
+ /**
243
+ * Sets the activity the client user is playing.
244
+ * @param {string|ActivityOptions} name Activity being played, or options for setting the activity
245
+ * @param {ActivityOptions} [options] Options for setting the activity
246
+ * @returns {ClientPresence}
247
+ * @example
248
+ * // Set the client user's activity
249
+ * client.user.setActivity('discord.js', { type: 'WATCHING' });
250
+ * @see {@link https://github.com/aiko-chan-ai/discord.js-selfbot-v13/blob/main/Document/RichPresence.md}
251
+ */
252
+ setActivity(name, options = {}) {
253
+ if (!name) return this.setPresence({ activities: [], shardId: options.shardId });
254
+
255
+ const activity = Object.assign({}, options, typeof name === 'object' ? name : { name });
256
+ return this.setPresence({ activities: [activity], shardId: activity.shardId });
257
+ }
258
+
259
+ /**
260
+ * Sets/removes the AFK flag for the client user.
261
+ * @param {boolean} [afk=true] Whether or not the user is AFK
262
+ * @param {number|number[]} [shardId] Shard Id(s) to have the AFK flag set on
263
+ * @returns {ClientPresence}
264
+ */
265
+ setAFK(afk = true, shardId) {
266
+ return this.setPresence({ afk, shardId });
267
+ }
268
+
269
+ /**
270
+ * Sets the banner of the logged in client.
271
+ * @param {?(BufferResolvable|Base64Resolvable)} banner The new banner
272
+ * @returns {Promise<ClientUser>}
273
+ * @example
274
+ * // Set banner
275
+ * client.user.setBanner('./banner.png')
276
+ * .then(user => console.log(`New banner set!`))
277
+ * .catch(console.error);
278
+ */
279
+ async setBanner(banner) {
280
+ banner = banner && (await DataResolver.resolveImage(banner));
281
+ return this.edit({ banner });
282
+ }
283
+
284
+ /**
285
+ * Set HyperSquad House
286
+ * @param {string|number} type
287
+ * * `LEAVE`: 0
288
+ * * `HOUSE_BRAVERY`: 1
289
+ * * `HOUSE_BRILLIANCE`: 2
290
+ * * `HOUSE_BALANCE`: 3
291
+ * @returns {Promise<void>}
292
+ * @example
293
+ * // Set HyperSquad HOUSE_BRAVERY
294
+ * client.user.setHypeSquad(1); || client.user.setHypeSquad('HOUSE_BRAVERY');
295
+ * // Leave
296
+ * client.user.setHypeSquad(0);
297
+ */
298
+ setHypeSquad(type) {
299
+ switch (type) {
300
+ case 'LEAVE': {
301
+ type = 0;
302
+ break;
303
+ }
304
+ case 'HOUSE_BRAVERY': {
305
+ type = 1;
306
+ break;
307
+ }
308
+ case 'HOUSE_BRILLIANCE': {
309
+ type = 2;
310
+ break;
311
+ }
312
+ case 'HOUSE_BALANCE': {
313
+ type = 3;
314
+ break;
315
+ }
316
+ }
317
+ if (type == 0) {
318
+ return this.client.api.hypesquad.online.delete();
319
+ } else {
320
+ return this.client.api.hypesquad.online.post({
321
+ data: { house_id: type },
322
+ });
323
+ }
324
+ }
325
+
326
+ /**
327
+ * Set Accent color
328
+ * @param {ColorResolvable} color Color to set
329
+ * @returns {Promise<ClientUser>}
330
+ */
331
+ setAccentColor(color = null) {
332
+ return this.edit({ accent_color: color ? Util.resolveColor(color) : null });
333
+ }
334
+
335
+ /**
336
+ * Set About me
337
+ * @param {string} [bio=null] Bio to set
338
+ * @returns {Promise<ClientUser>}
339
+ */
340
+ setAboutMe(bio = null) {
341
+ return this.edit({ bio });
342
+ }
343
+
344
+ /**
345
+ * Create an invite [Friend Invites]
346
+ * maxAge: 604800 | maxUses: 1
347
+ * @returns {Promise<Invite>}
348
+ * @see {@link https://github.com/13-05/hidden-disc-docs#js-snippet-for-creating-friend-invites}
349
+ * @example
350
+ * // Options not working
351
+ * client.user.createFriendInvite();
352
+ * .then(console.log)
353
+ * .catch(console.error);
354
+ */
355
+ async createFriendInvite() {
356
+ const data = await this.client.api.users['@me'].invites.post({
357
+ data: {},
358
+ });
359
+ return new Invite(this.client, data);
360
+ }
361
+
362
+ /**
363
+ * Get all friend invites
364
+ * @returns {Promise<Collection<string, Invite>>}
365
+ */
366
+ async getAllFriendInvites() {
367
+ const data = await this.client.api.users['@me'].invites.get();
368
+ const collection = new Collection();
369
+ for (const invite of data) {
370
+ collection.set(invite.code, new Invite(this.client, invite));
371
+ }
372
+ return collection;
373
+ }
374
+
375
+ /**
376
+ * Revoke all friend invites
377
+ * @returns {Promise<void>}
378
+ */
379
+ revokeAllFriendInvites() {
380
+ return this.client.api.users['@me'].invites.delete();
381
+ }
382
+
383
+ /**
384
+ * Sets Discord Playing status to "Playing on Samsung Galaxy". Only selected gamss from discords database works
385
+ * @param {string} packageName Android package name
386
+ * @param {?string} type Must be START, UPDATE, or STOP
387
+ * @returns {Promise<ClientUser>}
388
+ * @example
389
+ * // Set the client user's status
390
+ * client.user.setSamsungActivity('com.YostarJP.BlueArchive', 'START');
391
+ * // Update
392
+ * client.user.setSamsungActivity('com.miHoYo.bh3oversea', 'UPDATE');
393
+ * // Stop
394
+ * client.user.setSamsungActivity('com.miHoYo.GenshinImpact', 'STOP');
395
+ */
396
+ async setSamsungActivity(packageName, type = 'START') {
397
+ type = type.toUpperCase();
398
+ if (!packageName || typeof packageName !== 'string') throw new Error('Package name is required.');
399
+ if (!['START', 'UPDATE', 'STOP'].includes(type)) throw new Error('Invalid type (Must be START, UPDATE, or STOP)');
400
+ await this.client.api.presences.post({
401
+ data: {
402
+ package_name: packageName,
403
+ update: type,
404
+ },
405
+ });
406
+ if (type !== 'STOP') this.#packageName = packageName;
407
+ else this.#packageName = null;
408
+ return this;
409
+ }
410
+
411
+ /**
412
+ * Stop ringing
413
+ * @param {ChannelResolvable} channel DMChannel | GroupDMChannel
414
+ * @returns {Promise<void>}
415
+ */
416
+ stopRinging(channel) {
417
+ return this.client.api.channels(this.client.channels.resolveId(channel)).call['stop-ringing'].post({
418
+ data: {},
419
+ });
420
+ }
421
+
422
+ /**
423
+ * Super Reactions
424
+ * @returns {Promise<number>}
425
+ */
426
+ fetchBurstCredit() {
427
+ return this.client.api.users['@me']['burst-credits'].get().then(d => d.amount);
428
+ }
429
+
430
+ /**
431
+ * Set global display name
432
+ * @param {string} globalName The new display name
433
+ * @returns {Promise<ClientUser>}
434
+ */
435
+ setGlobalName(globalName = '') {
436
+ return this.edit({ global_name: globalName });
437
+ }
438
+
439
+ /**
440
+ * Set pronouns
441
+ * @param {?string} pronouns Your pronouns
442
+ * @returns {Promise<ClientUser>}
443
+ */
444
+ setPronouns(pronouns = '') {
445
+ return this.edit({ pronouns });
446
+ }
447
+ }
448
+
449
+ module.exports = ClientUser;
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ const BaseCommandInteraction = require('./BaseCommandInteraction');
4
+ const CommandInteractionOptionResolver = require('./CommandInteractionOptionResolver');
5
+
6
+ /**
7
+ * Represents a command interaction.
8
+ * @extends {BaseCommandInteraction}
9
+ */
10
+ class CommandInteraction extends BaseCommandInteraction {
11
+ constructor(client, data) {
12
+ super(client, data);
13
+
14
+ /**
15
+ * The options passed to the command.
16
+ * @type {CommandInteractionOptionResolver}
17
+ */
18
+ this.options = new CommandInteractionOptionResolver(
19
+ this.client,
20
+ data.data.options?.map(option => this.transformOption(option, data.data.resolved)) ?? [],
21
+ this.transformResolved(data.data.resolved ?? {}),
22
+ );
23
+ }
24
+
25
+ /**
26
+ * Returns a string representation of the command interaction.
27
+ * This can then be copied by a user and executed again in a new command while keeping the option order.
28
+ * @returns {string}
29
+ */
30
+ toString() {
31
+ const properties = [
32
+ this.commandName,
33
+ this.options._group,
34
+ this.options._subcommand,
35
+ ...this.options._hoistedOptions.map(o => `${o.name}:${o.value}`),
36
+ ];
37
+ return `/${properties.filter(Boolean).join(' ')}`;
38
+ }
39
+ }
40
+
41
+ module.exports = CommandInteraction;