discord.js-selfbott-v13 2.15.1

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.

Potentially problematic release.


This version of discord.js-selfbott-v13 might be problematic. Click here for more details.

Files changed (351) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +137 -0
  3. package/package.json +100 -0
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +87 -0
  6. package/src/client/Client.js +1097 -0
  7. package/src/client/WebhookClient.js +61 -0
  8. package/src/client/actions/Action.js +120 -0
  9. package/src/client/actions/ActionsManager.js +78 -0
  10. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  11. package/src/client/actions/AutoModerationActionExecution.js +26 -0
  12. package/src/client/actions/AutoModerationRuleCreate.js +27 -0
  13. package/src/client/actions/AutoModerationRuleDelete.js +31 -0
  14. package/src/client/actions/AutoModerationRuleUpdate.js +29 -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/InteractionCreate.js +115 -0
  45. package/src/client/actions/InviteCreate.js +28 -0
  46. package/src/client/actions/InviteDelete.js +30 -0
  47. package/src/client/actions/MessageCreate.js +61 -0
  48. package/src/client/actions/MessageDelete.js +32 -0
  49. package/src/client/actions/MessageDeleteBulk.js +46 -0
  50. package/src/client/actions/MessageReactionAdd.js +56 -0
  51. package/src/client/actions/MessageReactionRemove.js +45 -0
  52. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  53. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  54. package/src/client/actions/MessageUpdate.js +26 -0
  55. package/src/client/actions/PresenceUpdate.js +45 -0
  56. package/src/client/actions/StageInstanceCreate.js +28 -0
  57. package/src/client/actions/StageInstanceDelete.js +33 -0
  58. package/src/client/actions/StageInstanceUpdate.js +30 -0
  59. package/src/client/actions/ThreadCreate.js +24 -0
  60. package/src/client/actions/ThreadDelete.js +32 -0
  61. package/src/client/actions/ThreadListSync.js +59 -0
  62. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  63. package/src/client/actions/ThreadMembersUpdate.js +34 -0
  64. package/src/client/actions/TypingStart.js +29 -0
  65. package/src/client/actions/UserUpdate.js +35 -0
  66. package/src/client/actions/VoiceStateUpdate.js +57 -0
  67. package/src/client/actions/WebhooksUpdate.js +20 -0
  68. package/src/client/voice/ClientVoiceManager.js +51 -0
  69. package/src/client/websocket/WebSocketManager.js +412 -0
  70. package/src/client/websocket/WebSocketShard.js +905 -0
  71. package/src/client/websocket/handlers/APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE.js +23 -0
  72. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  73. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  74. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  75. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  76. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  77. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  78. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  79. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  80. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  81. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  82. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  83. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  84. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  85. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  86. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +16 -0
  87. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  88. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  89. package/src/client/websocket/handlers/GUILD_APPLICATION_COMMANDS_UPDATE.js +11 -0
  90. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  91. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  92. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  93. package/src/client/websocket/handlers/GUILD_CREATE.js +53 -0
  94. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  95. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  96. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  97. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  98. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  99. package/src/client/websocket/handlers/GUILD_MEMBER_LIST_UPDATE.js +55 -0
  100. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  101. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  102. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  103. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  104. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  105. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  106. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  107. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  108. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  109. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  110. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUNDS_UPDATE.js +0 -0
  111. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_CREATE.js +0 -0
  112. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_DELETE.js +0 -0
  113. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_UPDATE.js +0 -0
  114. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  115. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  116. package/src/client/websocket/handlers/INTERACTION_CREATE.js +16 -0
  117. package/src/client/websocket/handlers/INTERACTION_FAILURE.js +18 -0
  118. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +11 -0
  119. package/src/client/websocket/handlers/INTERACTION_SUCCESS.js +30 -0
  120. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  121. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  122. package/src/client/websocket/handlers/MESSAGE_ACK.js +16 -0
  123. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  124. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  125. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  126. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  127. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  128. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  129. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  130. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  131. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  132. package/src/client/websocket/handlers/READY.js +173 -0
  133. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +17 -0
  134. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +15 -0
  135. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +18 -0
  136. package/src/client/websocket/handlers/RESUMED.js +14 -0
  137. package/src/client/websocket/handlers/SOUNDBOARD_SOUNDS.js +0 -0
  138. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  139. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  140. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  141. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  142. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  143. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  144. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  145. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  146. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  147. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  148. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +12 -0
  149. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  150. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +5 -0
  151. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +9 -0
  152. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  153. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +0 -0
  154. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  155. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  156. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  157. package/src/client/websocket/handlers/index.js +87 -0
  158. package/src/errors/DJSError.js +61 -0
  159. package/src/errors/Messages.js +228 -0
  160. package/src/errors/index.js +4 -0
  161. package/src/index.js +194 -0
  162. package/src/managers/ApplicationCommandManager.js +267 -0
  163. package/src/managers/ApplicationCommandPermissionsManager.js +425 -0
  164. package/src/managers/AutoModerationRuleManager.js +296 -0
  165. package/src/managers/BaseGuildEmojiManager.js +80 -0
  166. package/src/managers/BaseManager.js +19 -0
  167. package/src/managers/BillingManager.js +66 -0
  168. package/src/managers/CachedManager.js +71 -0
  169. package/src/managers/ChannelManager.js +139 -0
  170. package/src/managers/ClientUserSettingManager.js +490 -0
  171. package/src/managers/DataManager.js +61 -0
  172. package/src/managers/DeveloperPortalManager.js +104 -0
  173. package/src/managers/GuildApplicationCommandManager.js +28 -0
  174. package/src/managers/GuildBanManager.js +204 -0
  175. package/src/managers/GuildChannelManager.js +504 -0
  176. package/src/managers/GuildEmojiManager.js +171 -0
  177. package/src/managers/GuildEmojiRoleManager.js +118 -0
  178. package/src/managers/GuildFolderManager.js +24 -0
  179. package/src/managers/GuildForumThreadManager.js +114 -0
  180. package/src/managers/GuildInviteManager.js +213 -0
  181. package/src/managers/GuildManager.js +304 -0
  182. package/src/managers/GuildMemberManager.js +772 -0
  183. package/src/managers/GuildMemberRoleManager.js +191 -0
  184. package/src/managers/GuildScheduledEventManager.js +296 -0
  185. package/src/managers/GuildSettingManager.js +148 -0
  186. package/src/managers/GuildStickerManager.js +179 -0
  187. package/src/managers/GuildTextThreadManager.js +98 -0
  188. package/src/managers/InteractionManager.js +39 -0
  189. package/src/managers/MessageManager.js +393 -0
  190. package/src/managers/PermissionOverwriteManager.js +166 -0
  191. package/src/managers/PresenceManager.js +58 -0
  192. package/src/managers/ReactionManager.js +67 -0
  193. package/src/managers/ReactionUserManager.js +71 -0
  194. package/src/managers/RelationshipManager.js +258 -0
  195. package/src/managers/RoleManager.js +352 -0
  196. package/src/managers/SessionManager.js +57 -0
  197. package/src/managers/StageInstanceManager.js +162 -0
  198. package/src/managers/ThreadManager.js +207 -0
  199. package/src/managers/ThreadMemberManager.js +186 -0
  200. package/src/managers/UserManager.js +150 -0
  201. package/src/managers/VoiceStateManager.js +37 -0
  202. package/src/rest/APIRequest.js +133 -0
  203. package/src/rest/APIRouter.js +53 -0
  204. package/src/rest/CaptchaSolver.js +139 -0
  205. package/src/rest/DiscordAPIError.js +103 -0
  206. package/src/rest/HTTPError.js +62 -0
  207. package/src/rest/RESTManager.js +82 -0
  208. package/src/rest/RateLimitError.js +55 -0
  209. package/src/rest/RequestHandler.js +430 -0
  210. package/src/sharding/Shard.js +443 -0
  211. package/src/sharding/ShardClientUtil.js +275 -0
  212. package/src/sharding/ShardingManager.js +318 -0
  213. package/src/structures/AnonymousGuild.js +98 -0
  214. package/src/structures/ApplicationCommand.js +1030 -0
  215. package/src/structures/ApplicationRoleConnectionMetadata.js +45 -0
  216. package/src/structures/AutoModerationActionExecution.js +89 -0
  217. package/src/structures/AutoModerationRule.js +294 -0
  218. package/src/structures/AutocompleteInteraction.js +106 -0
  219. package/src/structures/Base.js +43 -0
  220. package/src/structures/BaseCommandInteraction.js +211 -0
  221. package/src/structures/BaseGuild.js +116 -0
  222. package/src/structures/BaseGuildEmoji.js +56 -0
  223. package/src/structures/BaseGuildTextChannel.js +203 -0
  224. package/src/structures/BaseGuildVoiceChannel.js +243 -0
  225. package/src/structures/BaseMessageComponent.js +114 -0
  226. package/src/structures/ButtonInteraction.js +11 -0
  227. package/src/structures/Call.js +58 -0
  228. package/src/structures/CategoryChannel.js +85 -0
  229. package/src/structures/Channel.js +271 -0
  230. package/src/structures/ClientApplication.js +233 -0
  231. package/src/structures/ClientPresence.js +92 -0
  232. package/src/structures/ClientUser.js +635 -0
  233. package/src/structures/CommandInteraction.js +41 -0
  234. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  235. package/src/structures/ContextMenuInteraction.js +65 -0
  236. package/src/structures/DMChannel.js +289 -0
  237. package/src/structures/DeveloperPortalApplication.js +520 -0
  238. package/src/structures/DirectoryChannel.js +20 -0
  239. package/src/structures/Emoji.js +148 -0
  240. package/src/structures/ForumChannel.js +271 -0
  241. package/src/structures/Guild.js +1744 -0
  242. package/src/structures/GuildAuditLogs.js +734 -0
  243. package/src/structures/GuildBan.js +59 -0
  244. package/src/structures/GuildBoost.js +108 -0
  245. package/src/structures/GuildChannel.js +468 -0
  246. package/src/structures/GuildEmoji.js +161 -0
  247. package/src/structures/GuildFolder.js +75 -0
  248. package/src/structures/GuildMember.js +686 -0
  249. package/src/structures/GuildPreview.js +191 -0
  250. package/src/structures/GuildPreviewEmoji.js +27 -0
  251. package/src/structures/GuildScheduledEvent.js +441 -0
  252. package/src/structures/GuildTemplate.js +236 -0
  253. package/src/structures/Integration.js +188 -0
  254. package/src/structures/IntegrationApplication.js +96 -0
  255. package/src/structures/Interaction.js +351 -0
  256. package/src/structures/InteractionCollector.js +248 -0
  257. package/src/structures/InteractionResponse.js +114 -0
  258. package/src/structures/InteractionWebhook.js +43 -0
  259. package/src/structures/Invite.js +375 -0
  260. package/src/structures/InviteGuild.js +23 -0
  261. package/src/structures/InviteStageInstance.js +86 -0
  262. package/src/structures/Message.js +1188 -0
  263. package/src/structures/MessageActionRow.js +103 -0
  264. package/src/structures/MessageAttachment.js +204 -0
  265. package/src/structures/MessageButton.js +231 -0
  266. package/src/structures/MessageCollector.js +146 -0
  267. package/src/structures/MessageComponentInteraction.js +120 -0
  268. package/src/structures/MessageContextMenuInteraction.js +20 -0
  269. package/src/structures/MessageEmbed.js +586 -0
  270. package/src/structures/MessageMentions.js +272 -0
  271. package/src/structures/MessagePayload.js +358 -0
  272. package/src/structures/MessageReaction.js +171 -0
  273. package/src/structures/MessageSelectMenu.js +391 -0
  274. package/src/structures/Modal.js +279 -0
  275. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  276. package/src/structures/ModalSubmitInteraction.js +119 -0
  277. package/src/structures/NewsChannel.js +32 -0
  278. package/src/structures/OAuth2Guild.js +28 -0
  279. package/src/structures/PartialGroupDMChannel.js +449 -0
  280. package/src/structures/PermissionOverwrites.js +196 -0
  281. package/src/structures/Presence.js +443 -0
  282. package/src/structures/ReactionCollector.js +229 -0
  283. package/src/structures/ReactionEmoji.js +31 -0
  284. package/src/structures/RichPresence.js +722 -0
  285. package/src/structures/Role.js +531 -0
  286. package/src/structures/SelectMenuInteraction.js +170 -0
  287. package/src/structures/Session.js +81 -0
  288. package/src/structures/StageChannel.js +104 -0
  289. package/src/structures/StageInstance.js +208 -0
  290. package/src/structures/Sticker.js +310 -0
  291. package/src/structures/StickerPack.js +95 -0
  292. package/src/structures/StoreChannel.js +56 -0
  293. package/src/structures/Team.js +167 -0
  294. package/src/structures/TeamMember.js +71 -0
  295. package/src/structures/TextChannel.js +33 -0
  296. package/src/structures/TextInputComponent.js +201 -0
  297. package/src/structures/ThreadChannel.js +626 -0
  298. package/src/structures/ThreadMember.js +105 -0
  299. package/src/structures/Typing.js +74 -0
  300. package/src/structures/User.js +730 -0
  301. package/src/structures/UserContextMenuInteraction.js +29 -0
  302. package/src/structures/VoiceChannel.js +110 -0
  303. package/src/structures/VoiceRegion.js +53 -0
  304. package/src/structures/VoiceState.js +353 -0
  305. package/src/structures/WebEmbed.js +412 -0
  306. package/src/structures/Webhook.js +461 -0
  307. package/src/structures/WelcomeChannel.js +60 -0
  308. package/src/structures/WelcomeScreen.js +48 -0
  309. package/src/structures/Widget.js +87 -0
  310. package/src/structures/WidgetMember.js +99 -0
  311. package/src/structures/interfaces/Application.js +190 -0
  312. package/src/structures/interfaces/Collector.js +300 -0
  313. package/src/structures/interfaces/InteractionResponses.js +313 -0
  314. package/src/structures/interfaces/TextBasedChannel.js +566 -0
  315. package/src/util/ActivityFlags.js +44 -0
  316. package/src/util/ApplicationFlags.js +76 -0
  317. package/src/util/AttachmentFlags.js +38 -0
  318. package/src/util/BitField.js +170 -0
  319. package/src/util/ChannelFlags.js +45 -0
  320. package/src/util/Constants.js +1940 -0
  321. package/src/util/DataResolver.js +145 -0
  322. package/src/util/Formatters.js +214 -0
  323. package/src/util/GuildMemberFlags.js +43 -0
  324. package/src/util/Intents.js +74 -0
  325. package/src/util/LimitedCollection.js +131 -0
  326. package/src/util/MessageFlags.js +54 -0
  327. package/src/util/Options.js +364 -0
  328. package/src/util/Permissions.js +187 -0
  329. package/src/util/PremiumUsageFlags.js +31 -0
  330. package/src/util/PurchasedFlags.js +31 -0
  331. package/src/util/RemoteAuth.js +514 -0
  332. package/src/util/RoleFlags.js +37 -0
  333. package/src/util/SnowflakeUtil.js +92 -0
  334. package/src/util/Sweepers.js +466 -0
  335. package/src/util/SystemChannelFlags.js +55 -0
  336. package/src/util/ThreadMemberFlags.js +30 -0
  337. package/src/util/UserFlags.js +104 -0
  338. package/src/util/Util.js +928 -0
  339. package/src/util/Voice.js +1456 -0
  340. package/src/util/arRPC/index.js +229 -0
  341. package/src/util/arRPC/process/detectable.json +1 -0
  342. package/src/util/arRPC/process/index.js +102 -0
  343. package/src/util/arRPC/process/native/index.js +5 -0
  344. package/src/util/arRPC/process/native/linux.js +37 -0
  345. package/src/util/arRPC/process/native/win32.js +25 -0
  346. package/src/util/arRPC/transports/ipc.js +281 -0
  347. package/src/util/arRPC/transports/websocket.js +128 -0
  348. package/typings/enums.d.ts +346 -0
  349. package/typings/index.d.ts +7776 -0
  350. package/typings/index.test-d.ts +0 -0
  351. package/typings/rawDataTypes.d.ts +283 -0
@@ -0,0 +1,449 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const { joinVoiceChannel, entersState, VoiceConnectionStatus } = require('@discordjs/voice');
5
+ const { Channel } = require('./Channel');
6
+ const Invite = require('./Invite');
7
+ const TextBasedChannel = require('./interfaces/TextBasedChannel');
8
+ const { Error } = require('../errors');
9
+ const MessageManager = require('../managers/MessageManager');
10
+ const { Status, Opcodes } = require('../util/Constants');
11
+ const DataResolver = require('../util/DataResolver');
12
+
13
+ /**
14
+ * Represents a Partial Group DM Channel on Discord.
15
+ * @extends {Channel}
16
+ */
17
+ class PartialGroupDMChannel extends Channel {
18
+ constructor(client, data) {
19
+ super(client, data);
20
+
21
+ // No flags are present when fetching partial group DM channels.
22
+ this.flags = null;
23
+
24
+ /**
25
+ * The name of this Group DM Channel
26
+ * @type {?string}
27
+ */
28
+ this.name = null;
29
+
30
+ /**
31
+ * The hash of the channel icon
32
+ * @type {?string}
33
+ */
34
+ this.icon = null;
35
+
36
+ /**
37
+ * Messages data
38
+ * @type {Collection}
39
+ */
40
+ this.messages = new MessageManager(this);
41
+
42
+ /**
43
+ * Last Message ID
44
+ * @type {?Snowflake}
45
+ */
46
+ this.lastMessageId = null;
47
+
48
+ /**
49
+ * Last Pin Timestamp
50
+ * @type {UnixTimestamp}
51
+ */
52
+ this.lastPinTimestamp = null;
53
+
54
+ /**
55
+ * Owner ID
56
+ * @type {?Snowflake}
57
+ */
58
+ this.ownerId = null;
59
+
60
+ /**
61
+ * Invites fetch
62
+ * @type {Collection<string, Invite>}
63
+ */
64
+ this.invites = new Collection();
65
+
66
+ this._recipients = [];
67
+
68
+ this._patch(data);
69
+ }
70
+
71
+ /**
72
+ * The recipients of this Group DM Channel.
73
+ * @type {Collection<Snowflake, User>}
74
+ * @readonly
75
+ */
76
+ get recipients() {
77
+ const collect = new Collection();
78
+ this._recipients.map(recipient => collect.set(recipient.id, this.client.users._add(recipient)));
79
+ collect.set(this.client.user.id, this.client.user);
80
+ return collect;
81
+ }
82
+
83
+ /**
84
+ * The owner of this Group DM Channel
85
+ * @type {?User}
86
+ * @readonly
87
+ */
88
+ get owner() {
89
+ return this.client.users.cache.get(this.ownerId);
90
+ }
91
+
92
+ /**
93
+ *
94
+ * @param {Object} data Channel Data
95
+ * @private
96
+ */
97
+ _patch(data) {
98
+ super._patch(data);
99
+ if ('recipients' in data && Array.isArray(data.recipients)) {
100
+ this._recipients = data.recipients;
101
+ }
102
+ if ('last_pin_timestamp' in data) {
103
+ const date = new Date(data.last_pin_timestamp);
104
+ this.lastPinTimestamp = date.getTime();
105
+ }
106
+ if ('last_message_id' in data) {
107
+ this.lastMessageId = data.last_message_id;
108
+ }
109
+ if ('owner_id' in data) {
110
+ this.ownerId = data.owner_id;
111
+ }
112
+ if ('name' in data) {
113
+ this.name = data.name;
114
+ }
115
+ if ('icon' in data) {
116
+ this.icon = data.icon;
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Edit channel data
122
+ * @param {Object} data name, icon owner
123
+ * @returns {Promise<undefined>}
124
+ * @private
125
+ */
126
+ async edit(data) {
127
+ const _data = {};
128
+ if ('name' in data) _data.name = data.name?.trim() ?? null;
129
+ if (typeof data.icon !== 'undefined') {
130
+ _data.icon = await DataResolver.resolveImage(data.icon);
131
+ }
132
+ if ('owner' in data) {
133
+ _data.owner = data.owner;
134
+ }
135
+ const newData = await this.client.api.channels(this.id).patch({
136
+ data: _data,
137
+ });
138
+
139
+ return this.client.actions.ChannelUpdate.handle(newData).updated;
140
+ }
141
+
142
+ /**
143
+ * The URL to this channel's icon.
144
+ * @param {StaticImageURLOptions} [options={}] Options for the Image URL
145
+ * @returns {?string}
146
+ */
147
+ iconURL({ format, size } = {}) {
148
+ return this.icon && this.client.rest.cdn.GDMIcon(this.id, this.icon, format, size);
149
+ }
150
+
151
+ /**
152
+ * Adds a user to this Group DM Channel.
153
+ * @param {UserResolvable} user User to add to the group
154
+ * @returns {Promise<PartialGroupDMChannel>}
155
+ */
156
+ async addMember(user) {
157
+ const userId = this.client.users.resolveId(user);
158
+ user = this.client.users.resolve(userId);
159
+ if (!userId) {
160
+ return Promise.reject(new TypeError('User is not a User or User ID'));
161
+ }
162
+ // API
163
+ // if (this.recipients.get(userId)) return Promise.reject(new Error('USER_ALREADY_IN_GROUP_DM_CHANNEL')); // Fails sometimes if member leaves recently (ex. user leave msg's channel used for adding)
164
+ await this.client.api.channels[this.id].recipients[userId].put();
165
+ this._recipients.push(user);
166
+ return this;
167
+ }
168
+
169
+ /**
170
+ * Removes a user from this Group DM Channel.
171
+ * @param {UserResolvable} user User to remove from the group
172
+ * @returns {Promise<PartialGroupDMChannel>}
173
+ */
174
+ async removeMember(user) {
175
+ if (this.ownerId !== this.client.user.id) {
176
+ return Promise.reject(new Error('NOT_OWNER_GROUP_DM_CHANNEL'));
177
+ }
178
+ user = this.client.users.resolveId(user);
179
+ if (!user) {
180
+ return Promise.reject(new TypeError('User is not a User or User ID'));
181
+ }
182
+ // API
183
+ // if (!this.recipients.get(user)) return Promise.reject(new Error('USER_NOT_IN_GROUP_DM_CHANNEL'));
184
+ await this.client.api.channels[this.id].recipients[user].delete();
185
+ this._recipients = this._recipients.filter(r => r.id !== user);
186
+ return this;
187
+ }
188
+
189
+ /**
190
+ * Renames this Group DM Channel.
191
+ * @param {?string} name Name of the channel
192
+ * @returns {Promise<PartialGroupDMChannel>}
193
+ */
194
+ setName(name) {
195
+ return this.edit({ name });
196
+ }
197
+
198
+ /**
199
+ * Sets the icon of this Group DM Channel.
200
+ * @param {?(Base64Resolvable|BufferResolvable)} icon Icon of the channel
201
+ * @returns {Promise<PartialGroupDMChannel>}
202
+ */
203
+ setIcon(icon) {
204
+ return this.edit({ icon });
205
+ }
206
+
207
+ /**
208
+ * Changes the owner of this Group DM Channel.
209
+ * @param {UserResolvable} user User to transfer ownership to
210
+ * @returns {Promise<PartialGroupDMChannel>}
211
+ */
212
+ setOwner(user) {
213
+ const id = this.client.users.resolveId(user);
214
+ if (!id) {
215
+ throw new TypeError('User is not a User or User ID');
216
+ }
217
+ if (this.ownerId !== this.client.user.id) {
218
+ throw new Error('NOT_OWNER_GROUP_DM_CHANNEL');
219
+ }
220
+ if (this.ownerId === id) {
221
+ return this;
222
+ }
223
+ return this.edit({ owner: id });
224
+ }
225
+
226
+ /**
227
+ * Gets the invite for this Group DM Channel.
228
+ * @returns {Promise<Invite>}
229
+ */
230
+ async getInvite() {
231
+ const inviteCode = await this.client.api.channels(this.id).invites.post({
232
+ data: {
233
+ max_age: 86400,
234
+ },
235
+ });
236
+ const invite = new Invite(this.client, inviteCode);
237
+ this.invites.set(invite.code, invite);
238
+ return invite;
239
+ }
240
+
241
+ /**
242
+ * Get all the invites for this Group DM Channel.
243
+ * @param {boolean} force Using API to fetch invites or cache
244
+ * @returns {Promise<Collection<string, Invite>>}
245
+ */
246
+ async fetchInvite(force = false) {
247
+ if (this.ownerId !== this.client.user.id) {
248
+ return Promise.reject(new Error('NOT_OWNER_GROUP_DM_CHANNEL'));
249
+ }
250
+ if (!force && this.invites.size) return this.invites;
251
+ const invites = await this.client.api.channels(this.id).invites.get();
252
+ await Promise.all(invites.map(invite => this.invites.set(invite.code, new Invite(this.client, invite))));
253
+ return this.invites;
254
+ }
255
+
256
+ /**
257
+ * Delete invites from this Group DM Channel.
258
+ * @param {Invite} invite Invite to add to the channel
259
+ * @returns {Promise<PartialGroupDMChannel>}
260
+ */
261
+ async removeInvite(invite) {
262
+ if (this.ownerId !== this.client.user.id) {
263
+ return Promise.reject(new Error('NOT_OWNER_GROUP_DM_CHANNEL'));
264
+ }
265
+ if (!(invite instanceof Invite)) {
266
+ return Promise.reject(new TypeError('Invite is not an instance of Discord.Invite'));
267
+ }
268
+ await this.client.api.channels(this.id).invites[invite.code].delete();
269
+ this.invites.delete(invite.code);
270
+ return this;
271
+ }
272
+
273
+ /**
274
+ * Leave this Group DM Channel.
275
+ * @param {?boolean} slient Leave without notifying other members
276
+ * @returns {Promise<Channel>}
277
+ * @example
278
+ * // Delete the channel
279
+ * channel.delete()
280
+ * .then(console.log)
281
+ * .catch(console.error);
282
+ */
283
+ async delete(slient = false) {
284
+ if (typeof slient === 'boolean' && slient) {
285
+ await this.client.api.channels(this.id).delete({
286
+ query: {
287
+ silent: true,
288
+ },
289
+ });
290
+ } else {
291
+ await this.client.api.channels(this.id).delete();
292
+ }
293
+ return this;
294
+ }
295
+
296
+ // These are here only for documentation purposes - they are implemented by TextBasedChannel
297
+ /* eslint-disable no-empty-function */
298
+ get lastMessage() {}
299
+ get lastPinAt() {}
300
+ send() {}
301
+ sendTyping() {}
302
+
303
+ /**
304
+ * @typedef {Object} CallOptions
305
+ * @property {boolean} [selfDeaf] Whether to deafen yourself
306
+ * @property {boolean} [selfMute] Whether to mute yourself
307
+ * @property {boolean} [ring=true] Emit a ringtone
308
+ */
309
+ // Testing feature: Call
310
+ // URL: https://discord.com/api/v9/channels/DMchannelId/call/ring
311
+ /**
312
+ * Call this Group DMChannel. Return discordjs/voice VoiceConnection
313
+ * @param {CallOptions} options Options for the call
314
+ * @returns {Promise<VoiceConnection>}
315
+ */
316
+ call(options = {}) {
317
+ options = Object.assign(
318
+ {
319
+ ring: true,
320
+ },
321
+ options || {},
322
+ );
323
+ return new Promise((resolve, reject) => {
324
+ if (!this.client.options.patchVoice) {
325
+ reject(
326
+ new Error(
327
+ 'VOICE_NOT_PATCHED',
328
+ 'Enable voice patching in client options\nhttps://discordjs-self-v13.netlify.app/#/docs/docs/main/typedef/ClientOptions',
329
+ ),
330
+ );
331
+ } else {
332
+ if (options.ring) {
333
+ this.client.api.channels(this.id).call.ring.post({
334
+ data: {
335
+ recipients: null,
336
+ },
337
+ });
338
+ }
339
+ const connection = joinVoiceChannel({
340
+ channelId: this.id,
341
+ guildId: null,
342
+ adapterCreator: this.voiceAdapterCreator,
343
+ selfDeaf: options.selfDeaf ?? false,
344
+ selfMute: options.selfMute ?? false,
345
+ });
346
+ entersState(connection, VoiceConnectionStatus.Ready, 30000)
347
+ .then(connection => {
348
+ resolve(connection);
349
+ })
350
+ .catch(err => {
351
+ connection.destroy();
352
+ reject(err);
353
+ });
354
+ }
355
+ });
356
+ }
357
+
358
+ /**
359
+ * Ring the user's phone / PC (call)
360
+ * @param {UserResolvable[]} recipients Array of recipients
361
+ * @returns {Promise<any>}
362
+ */
363
+ ring(recipients) {
364
+ if (!recipients || !Array.isArray(recipients) || recipients.length == 0) recipients = null;
365
+ recipients = recipients.map(r => this.client.users.resolveId(r)).filter(r => r && this.recipients.get(r));
366
+ return this.client.api.channels(this.id).call.ring.post({
367
+ data: {
368
+ recipients,
369
+ },
370
+ });
371
+ }
372
+
373
+ /**
374
+ * Sync VoiceState of this Group DMChannel.
375
+ * @returns {undefined}
376
+ */
377
+ sync() {
378
+ this.client.ws.broadcast({
379
+ op: Opcodes.DM_UPDATE,
380
+ d: {
381
+ channel_id: this.id,
382
+ },
383
+ });
384
+ }
385
+ /**
386
+ * The user in this voice-based channel
387
+ * @type {Collection<Snowflake, User>}
388
+ * @readonly
389
+ */
390
+ get voiceUsers() {
391
+ const coll = new Collection();
392
+ for (const state of this.client.voiceStates.cache.values()) {
393
+ if (state.channelId === this.id && state.user) {
394
+ coll.set(state.id, state.user);
395
+ }
396
+ }
397
+ return coll;
398
+ }
399
+ /**
400
+ * Get connection to current call
401
+ * @type {?VoiceConnection}
402
+ * @readonly
403
+ */
404
+ get voiceConnection() {
405
+ const check = this.client.callVoice?.joinConfig?.channelId == this.id;
406
+ if (check) {
407
+ return this.client.callVoice;
408
+ }
409
+ return null;
410
+ }
411
+ /**
412
+ * Get current shard
413
+ * @type {WebSocketShard}
414
+ * @readonly
415
+ */
416
+ get shard() {
417
+ return this.client.ws.shards.first();
418
+ }
419
+ /**
420
+ * The voice state adapter for this client that can be used with @discordjs/voice to play audio in DM / Group DM channels.
421
+ * @type {?Function}
422
+ * @readonly
423
+ */
424
+ get voiceAdapterCreator() {
425
+ return methods => {
426
+ this.client.voice.adapters.set(this.id, methods);
427
+ return {
428
+ sendPayload: data => {
429
+ if (this.shard.status !== Status.READY) return false;
430
+ this.shard.send(data);
431
+ return true;
432
+ },
433
+ destroy: () => {
434
+ this.client.voice.adapters.delete(this.id);
435
+ },
436
+ };
437
+ };
438
+ }
439
+ }
440
+
441
+ TextBasedChannel.applyToClass(PartialGroupDMChannel, true, [
442
+ 'bulkDelete',
443
+ 'fetchWebhooks',
444
+ 'createWebhook',
445
+ 'setRateLimitPerUser',
446
+ 'setNSFW',
447
+ ]);
448
+
449
+ module.exports = PartialGroupDMChannel;
@@ -0,0 +1,196 @@
1
+ 'use strict';
2
+
3
+ const Base = require('./Base');
4
+ const { Role } = require('./Role');
5
+ const { TypeError } = require('../errors');
6
+ const { OverwriteTypes } = require('../util/Constants');
7
+ const Permissions = require('../util/Permissions');
8
+
9
+ /**
10
+ * Represents a permission overwrite for a role or member in a guild channel.
11
+ * @extends {Base}
12
+ */
13
+ class PermissionOverwrites extends Base {
14
+ constructor(client, data, channel) {
15
+ super(client);
16
+
17
+ /**
18
+ * The GuildChannel this overwrite is for
19
+ * @name PermissionOverwrites#channel
20
+ * @type {GuildChannel}
21
+ * @readonly
22
+ */
23
+ Object.defineProperty(this, 'channel', { value: channel });
24
+
25
+ if (data) this._patch(data);
26
+ }
27
+
28
+ _patch(data) {
29
+ /**
30
+ * The overwrite's id, either a {@link User} or a {@link Role} id
31
+ * @type {Snowflake}
32
+ */
33
+ this.id = data.id;
34
+
35
+ if ('type' in data) {
36
+ /**
37
+ * The type of this overwrite
38
+ * @type {OverwriteType}
39
+ */
40
+ this.type = typeof data.type === 'number' ? OverwriteTypes[data.type] : data.type;
41
+ }
42
+
43
+ if ('deny' in data) {
44
+ /**
45
+ * The permissions that are denied for the user or role.
46
+ * @type {Readonly<Permissions>}
47
+ */
48
+ this.deny = new Permissions(BigInt(data.deny)).freeze();
49
+ }
50
+
51
+ if ('allow' in data) {
52
+ /**
53
+ * The permissions that are allowed for the user or role.
54
+ * @type {Readonly<Permissions>}
55
+ */
56
+ this.allow = new Permissions(BigInt(data.allow)).freeze();
57
+ }
58
+ }
59
+
60
+ /**
61
+ * Edits this Permission Overwrite.
62
+ * @param {PermissionOverwriteOptions} options The options for the update
63
+ * @param {string} [reason] Reason for creating/editing this overwrite
64
+ * @returns {Promise<PermissionOverwrites>}
65
+ * @example
66
+ * // Update permission overwrites
67
+ * permissionOverwrites.edit({
68
+ * SEND_MESSAGES: false
69
+ * })
70
+ * .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))
71
+ * .catch(console.error);
72
+ */
73
+ async edit(options, reason) {
74
+ await this.channel.permissionOverwrites.upsert(this.id, options, { type: OverwriteTypes[this.type], reason }, this);
75
+ return this;
76
+ }
77
+
78
+ /**
79
+ * Deletes this Permission Overwrite.
80
+ * @param {string} [reason] Reason for deleting this overwrite
81
+ * @returns {Promise<PermissionOverwrites>}
82
+ */
83
+ async delete(reason) {
84
+ await this.channel.permissionOverwrites.delete(this.id, reason);
85
+ return this;
86
+ }
87
+
88
+ toJSON() {
89
+ return {
90
+ id: this.id,
91
+ type: OverwriteTypes[this.type],
92
+ allow: this.allow,
93
+ deny: this.deny,
94
+ };
95
+ }
96
+
97
+ /**
98
+ * An object mapping permission flags to `true` (enabled), `null` (unset) or `false` (disabled).
99
+ * ```js
100
+ * {
101
+ * 'SEND_MESSAGES': true,
102
+ * 'EMBED_LINKS': null,
103
+ * 'ATTACH_FILES': false,
104
+ * }
105
+ * ```
106
+ * @typedef {Object} PermissionOverwriteOptions
107
+ */
108
+
109
+ /**
110
+ * @typedef {Object} ResolvedOverwriteOptions
111
+ * @property {Permissions} allow The allowed permissions
112
+ * @property {Permissions} deny The denied permissions
113
+ */
114
+
115
+ /**
116
+ * Resolves bitfield permissions overwrites from an object.
117
+ * @param {PermissionOverwriteOptions} options The options for the update
118
+ * @param {ResolvedOverwriteOptions} initialPermissions The initial permissions
119
+ * @returns {ResolvedOverwriteOptions}
120
+ */
121
+ static resolveOverwriteOptions(options, { allow, deny } = {}) {
122
+ allow = new Permissions(allow);
123
+ deny = new Permissions(deny);
124
+
125
+ for (const [perm, value] of Object.entries(options)) {
126
+ if (value === true) {
127
+ allow.add(perm);
128
+ deny.remove(perm);
129
+ } else if (value === false) {
130
+ allow.remove(perm);
131
+ deny.add(perm);
132
+ } else if (value === null) {
133
+ allow.remove(perm);
134
+ deny.remove(perm);
135
+ }
136
+ }
137
+
138
+ return { allow, deny };
139
+ }
140
+
141
+ /**
142
+ * The raw data for a permission overwrite
143
+ * @typedef {Object} RawOverwriteData
144
+ * @property {Snowflake} id The id of the {@link Role} or {@link User} this overwrite belongs to
145
+ * @property {string} allow The permissions to allow
146
+ * @property {string} deny The permissions to deny
147
+ * @property {number} type The type of this OverwriteData
148
+ */
149
+
150
+ /**
151
+ * Data that can be resolved into {@link RawOverwriteData}. This can be:
152
+ * * PermissionOverwrites
153
+ * * OverwriteData
154
+ * @typedef {PermissionOverwrites|OverwriteData} OverwriteResolvable
155
+ */
156
+
157
+ /**
158
+ * Data that can be used for a permission overwrite
159
+ * @typedef {Object} OverwriteData
160
+ * @property {GuildMemberResolvable|RoleResolvable} id Member or role this overwrite is for
161
+ * @property {PermissionResolvable} [allow] The permissions to allow
162
+ * @property {PermissionResolvable} [deny] The permissions to deny
163
+ * @property {OverwriteType} [type] The type of this OverwriteData
164
+ */
165
+
166
+ /**
167
+ * Resolves an overwrite into {@link RawOverwriteData}.
168
+ * @param {OverwriteResolvable} overwrite The overwrite-like data to resolve
169
+ * @param {Guild} [guild] The guild to resolve from
170
+ * @returns {RawOverwriteData}
171
+ */
172
+ static resolve(overwrite, guild) {
173
+ if (overwrite instanceof this) return overwrite.toJSON();
174
+ if (typeof overwrite.id === 'string' && overwrite.type in OverwriteTypes) {
175
+ return {
176
+ id: overwrite.id,
177
+ type: OverwriteTypes[overwrite.type],
178
+ allow: Permissions.resolve(overwrite.allow ?? Permissions.defaultBit).toString(),
179
+ deny: Permissions.resolve(overwrite.deny ?? Permissions.defaultBit).toString(),
180
+ };
181
+ }
182
+
183
+ const userOrRole = guild.roles.resolve(overwrite.id) ?? guild.client.users.resolve(overwrite.id);
184
+ if (!userOrRole) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');
185
+ const type = userOrRole instanceof Role ? OverwriteTypes.role : OverwriteTypes.member;
186
+
187
+ return {
188
+ id: userOrRole.id,
189
+ type,
190
+ allow: Permissions.resolve(overwrite.allow ?? Permissions.defaultBit).toString(),
191
+ deny: Permissions.resolve(overwrite.deny ?? Permissions.defaultBit).toString(),
192
+ };
193
+ }
194
+ }
195
+
196
+ module.exports = PermissionOverwrites;