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,531 @@
1
+ 'use strict';
2
+
3
+ const process = require('node:process');
4
+ const Base = require('./Base');
5
+ const { Error } = require('../errors');
6
+ const Permissions = require('../util/Permissions');
7
+ const RoleFlags = require('../util/RoleFlags');
8
+ const SnowflakeUtil = require('../util/SnowflakeUtil');
9
+
10
+ let deprecationEmittedForComparePositions = false;
11
+
12
+ /**
13
+ * @type {WeakSet<Role>}
14
+ * @private
15
+ * @internal
16
+ */
17
+ const deletedRoles = new WeakSet();
18
+ let deprecationEmittedForDeleted = false;
19
+
20
+ /**
21
+ * Represents a role on Discord.
22
+ * @extends {Base}
23
+ */
24
+ class Role extends Base {
25
+ constructor(client, data, guild) {
26
+ super(client);
27
+
28
+ /**
29
+ * The guild that the role belongs to
30
+ * @type {Guild}
31
+ */
32
+ this.guild = guild;
33
+
34
+ /**
35
+ * The icon hash of the role
36
+ * @type {?string}
37
+ */
38
+ this.icon = null;
39
+
40
+ /**
41
+ * The unicode emoji for the role
42
+ * @type {?string}
43
+ */
44
+ this.unicodeEmoji = null;
45
+
46
+ if (data) this._patch(data);
47
+ }
48
+
49
+ _patch(data) {
50
+ /**
51
+ * The role's id (unique to the guild it is part of)
52
+ * @type {Snowflake}
53
+ */
54
+ this.id = data.id;
55
+ if ('name' in data) {
56
+ /**
57
+ * The name of the role
58
+ * @type {string}
59
+ */
60
+ this.name = data.name;
61
+ }
62
+
63
+ if ('color' in data) {
64
+ /**
65
+ * The base 10 color of the role
66
+ * @type {number}
67
+ */
68
+ this.color = data.color;
69
+ }
70
+
71
+ if ('hoist' in data) {
72
+ /**
73
+ * If true, users that are part of this role will appear in a separate category in the users list
74
+ * @type {boolean}
75
+ */
76
+ this.hoist = data.hoist;
77
+ }
78
+
79
+ if ('position' in data) {
80
+ /**
81
+ * The raw position of the role from the API
82
+ * @type {number}
83
+ */
84
+ this.rawPosition = data.position;
85
+ }
86
+
87
+ if ('permissions' in data) {
88
+ /**
89
+ * The permissions of the role
90
+ * @type {Readonly<Permissions>}
91
+ */
92
+ this.permissions = new Permissions(BigInt(data.permissions)).freeze();
93
+ }
94
+
95
+ if ('managed' in data) {
96
+ /**
97
+ * Whether or not the role is managed by an external service
98
+ * @type {boolean}
99
+ */
100
+ this.managed = data.managed;
101
+ }
102
+
103
+ if ('mentionable' in data) {
104
+ /**
105
+ * Whether or not the role can be mentioned by anyone
106
+ * @type {boolean}
107
+ */
108
+ this.mentionable = data.mentionable;
109
+ }
110
+
111
+ if ('icon' in data) this.icon = data.icon;
112
+
113
+ if ('unicode_emoji' in data) this.unicodeEmoji = data.unicode_emoji;
114
+
115
+ /**
116
+ * The tags this role has
117
+ * @type {?Object}
118
+ * @property {Snowflake} [botId] The id of the bot this role belongs to
119
+ * @property {Snowflake|string} [integrationId] The id of the integration this role belongs to
120
+ * @property {true} [premiumSubscriberRole] Whether this is the guild's premium subscription role
121
+ * @property {Snowflake} [subscriptionListingId] The id of this role's subscription SKU and listing
122
+ * @property {true} [availableForPurchase] Whether this role is available for purchase
123
+ * @property {true} [guildConnections] Whether this role is a guild's linked role
124
+ */
125
+ this.tags = data.tags ? {} : null;
126
+ if (data.tags) {
127
+ if ('bot_id' in data.tags) {
128
+ this.tags.botId = data.tags.bot_id;
129
+ }
130
+ if ('integration_id' in data.tags) {
131
+ this.tags.integrationId = data.tags.integration_id;
132
+ }
133
+ if ('premium_subscriber' in data.tags) {
134
+ this.tags.premiumSubscriberRole = true;
135
+ }
136
+ if ('subscription_listing_id' in data.tags) {
137
+ this.tags.subscriptionListingId = data.tags.subscription_listing_id;
138
+ }
139
+ if ('available_for_purchase' in data.tags) {
140
+ this.tags.availableForPurchase = true;
141
+ }
142
+ if ('guild_connections' in data.tags) {
143
+ this.tags.guildConnections = true;
144
+ }
145
+ }
146
+
147
+ if ('flags' in data) {
148
+ /**
149
+ * The flags of this role
150
+ * @type {Readonly<RoleFlags>}
151
+ */
152
+ this.flags = new RoleFlags(data.flags).freeze();
153
+ } else {
154
+ this.flags ??= new RoleFlags().freeze();
155
+ }
156
+ }
157
+
158
+ /**
159
+ * The timestamp the role was created at
160
+ * @type {number}
161
+ * @readonly
162
+ */
163
+ get createdTimestamp() {
164
+ return SnowflakeUtil.timestampFrom(this.id);
165
+ }
166
+
167
+ /**
168
+ * The time the role was created at
169
+ * @type {Date}
170
+ * @readonly
171
+ */
172
+ get createdAt() {
173
+ return new Date(this.createdTimestamp);
174
+ }
175
+
176
+ /**
177
+ * Whether or not the role has been deleted
178
+ * @type {boolean}
179
+ * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091
180
+ */
181
+ get deleted() {
182
+ if (!deprecationEmittedForDeleted) {
183
+ deprecationEmittedForDeleted = true;
184
+ process.emitWarning(
185
+ 'Role#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
186
+ 'DeprecationWarning',
187
+ );
188
+ }
189
+
190
+ return deletedRoles.has(this);
191
+ }
192
+
193
+ set deleted(value) {
194
+ if (!deprecationEmittedForDeleted) {
195
+ deprecationEmittedForDeleted = true;
196
+ process.emitWarning(
197
+ 'Role#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
198
+ 'DeprecationWarning',
199
+ );
200
+ }
201
+
202
+ if (value) deletedRoles.add(this);
203
+ else deletedRoles.delete(this);
204
+ }
205
+
206
+ /**
207
+ * The hexadecimal version of the role color, with a leading hashtag
208
+ * @type {string}
209
+ * @readonly
210
+ */
211
+ get hexColor() {
212
+ return `#${this.color.toString(16).padStart(6, '0')}`;
213
+ }
214
+
215
+ /**
216
+ * The cached guild members that have this role
217
+ * @type {Collection<Snowflake, GuildMember>}
218
+ * @readonly
219
+ */
220
+ get members() {
221
+ return this.guild.members.cache.filter(m => m.roles.cache.has(this.id));
222
+ }
223
+
224
+ /**
225
+ * Whether the role is editable by the client user
226
+ * @type {boolean}
227
+ * @readonly
228
+ */
229
+ get editable() {
230
+ if (this.managed) return false;
231
+ const clientMember = this.guild.members.resolve(this.client.user);
232
+ if (!clientMember.permissions.has(Permissions.FLAGS.MANAGE_ROLES)) return false;
233
+ return clientMember.roles.highest.comparePositionTo(this) > 0;
234
+ }
235
+
236
+ /**
237
+ * The position of the role in the role manager
238
+ * @type {number}
239
+ * @readonly
240
+ */
241
+ get position() {
242
+ let count = 0;
243
+ for (const role of this.guild.roles.cache.values()) {
244
+ if (this.rawPosition > role.rawPosition) count++;
245
+ else if (this.rawPosition === role.rawPosition && BigInt(this.id) < BigInt(role.id)) count++;
246
+ }
247
+
248
+ return count;
249
+ }
250
+
251
+ /**
252
+ * Compares this role's position to another role's.
253
+ * @param {RoleResolvable} role Role to compare to this one
254
+ * @returns {number} Negative number if this role's position is lower (other role's is higher),
255
+ * positive number if this one is higher (other's is lower), 0 if equal
256
+ * @example
257
+ * // Compare the position of a role to another
258
+ * const roleCompare = role.comparePositionTo(otherRole);
259
+ * if (roleCompare >= 1) console.log(`${role.name} is higher than ${otherRole.name}`);
260
+ */
261
+ comparePositionTo(role) {
262
+ return this.guild.roles.comparePositions(this, role);
263
+ }
264
+
265
+ /**
266
+ * The data for a role.
267
+ * @typedef {Object} RoleData
268
+ * @property {string} [name] The name of the role
269
+ * @property {ColorResolvable} [color] The color of the role, either a hex string or a base 10 number
270
+ * @property {boolean} [hoist] Whether or not the role should be hoisted
271
+ * @property {number} [position] The position of the role
272
+ * @property {PermissionResolvable} [permissions] The permissions of the role
273
+ * @property {boolean} [mentionable] Whether or not the role should be mentionable
274
+ * @property {?(BufferResolvable|Base64Resolvable|EmojiResolvable)} [icon] The icon for the role
275
+ * <warn>The `EmojiResolvable` should belong to the same guild as the role.
276
+ * If not, pass the emoji's URL directly</warn>
277
+ * @property {?string} [unicodeEmoji] The unicode emoji for the role
278
+ */
279
+
280
+ /**
281
+ * Edits the role.
282
+ * @param {RoleData} data The new data for the role
283
+ * @param {string} [reason] Reason for editing this role
284
+ * @returns {Promise<Role>}
285
+ * @example
286
+ * // Edit a role
287
+ * role.edit({ name: 'new role' })
288
+ * .then(updated => console.log(`Edited role name to ${updated.name}`))
289
+ * .catch(console.error);
290
+ */
291
+ edit(data, reason) {
292
+ return this.guild.roles.edit(this, data, reason);
293
+ }
294
+
295
+ /**
296
+ * Returns `channel.permissionsFor(role)`. Returns permissions for a role in a guild channel,
297
+ * taking into account permission overwrites.
298
+ * @param {GuildChannel|Snowflake} channel The guild channel to use as context
299
+ * @param {boolean} [checkAdmin=true] Whether having `ADMINISTRATOR` will return all permissions
300
+ * @returns {Readonly<Permissions>}
301
+ */
302
+ permissionsIn(channel, checkAdmin = true) {
303
+ channel = this.guild.channels.resolve(channel);
304
+ if (!channel) throw new Error('GUILD_CHANNEL_RESOLVE');
305
+ return channel.rolePermissions(this, checkAdmin);
306
+ }
307
+
308
+ /**
309
+ * Sets a new name for the role.
310
+ * @param {string} name The new name of the role
311
+ * @param {string} [reason] Reason for changing the role's name
312
+ * @returns {Promise<Role>}
313
+ * @example
314
+ * // Set the name of the role
315
+ * role.setName('new role')
316
+ * .then(updated => console.log(`Updated role name to ${updated.name}`))
317
+ * .catch(console.error);
318
+ */
319
+ setName(name, reason) {
320
+ return this.edit({ name }, reason);
321
+ }
322
+
323
+ /**
324
+ * Sets a new color for the role.
325
+ * @param {ColorResolvable} color The color of the role
326
+ * @param {string} [reason] Reason for changing the role's color
327
+ * @returns {Promise<Role>}
328
+ * @example
329
+ * // Set the color of a role
330
+ * role.setColor('#FF0000')
331
+ * .then(updated => console.log(`Set color of role to ${updated.color}`))
332
+ * .catch(console.error);
333
+ */
334
+ setColor(color, reason) {
335
+ return this.edit({ color }, reason);
336
+ }
337
+
338
+ /**
339
+ * Sets whether or not the role should be hoisted.
340
+ * @param {boolean} [hoist=true] Whether or not to hoist the role
341
+ * @param {string} [reason] Reason for setting whether or not the role should be hoisted
342
+ * @returns {Promise<Role>}
343
+ * @example
344
+ * // Set the hoist of the role
345
+ * role.setHoist(true)
346
+ * .then(updated => console.log(`Role hoisted: ${updated.hoist}`))
347
+ * .catch(console.error);
348
+ */
349
+ setHoist(hoist = true, reason) {
350
+ return this.edit({ hoist }, reason);
351
+ }
352
+
353
+ /**
354
+ * Sets the permissions of the role.
355
+ * @param {PermissionResolvable} permissions The permissions of the role
356
+ * @param {string} [reason] Reason for changing the role's permissions
357
+ * @returns {Promise<Role>}
358
+ * @example
359
+ * // Set the permissions of the role
360
+ * role.setPermissions([Permissions.FLAGS.KICK_MEMBERS, Permissions.FLAGS.BAN_MEMBERS])
361
+ * .then(updated => console.log(`Updated permissions to ${updated.permissions.bitfield}`))
362
+ * .catch(console.error);
363
+ * @example
364
+ * // Remove all permissions from a role
365
+ * role.setPermissions(0n)
366
+ * .then(updated => console.log(`Updated permissions to ${updated.permissions.bitfield}`))
367
+ * .catch(console.error);
368
+ */
369
+ setPermissions(permissions, reason) {
370
+ return this.edit({ permissions }, reason);
371
+ }
372
+
373
+ /**
374
+ * Sets whether this role is mentionable.
375
+ * @param {boolean} [mentionable=true] Whether this role should be mentionable
376
+ * @param {string} [reason] Reason for setting whether or not this role should be mentionable
377
+ * @returns {Promise<Role>}
378
+ * @example
379
+ * // Make the role mentionable
380
+ * role.setMentionable(true)
381
+ * .then(updated => console.log(`Role updated ${updated.name}`))
382
+ * .catch(console.error);
383
+ */
384
+ setMentionable(mentionable = true, reason) {
385
+ return this.edit({ mentionable }, reason);
386
+ }
387
+
388
+ /**
389
+ * Sets a new icon for the role.
390
+ * @param {?(BufferResolvable|Base64Resolvable|EmojiResolvable)} icon The icon for the role
391
+ * <warn>The `EmojiResolvable` should belong to the same guild as the role.
392
+ * If not, pass the emoji's URL directly</warn>
393
+ * @param {string} [reason] Reason for changing the role's icon
394
+ * @returns {Promise<Role>}
395
+ */
396
+ setIcon(icon, reason) {
397
+ return this.edit({ icon }, reason);
398
+ }
399
+
400
+ /**
401
+ * Sets a new unicode emoji for the role.
402
+ * @param {?string} unicodeEmoji The new unicode emoji for the role
403
+ * @param {string} [reason] Reason for changing the role's unicode emoji
404
+ * @returns {Promise<Role>}
405
+ * @example
406
+ * // Set a new unicode emoji for the role
407
+ * role.setUnicodeEmoji('🤖')
408
+ * .then(updated => console.log(`Set unicode emoji for the role to ${updated.unicodeEmoji}`))
409
+ * .catch(console.error);
410
+ */
411
+ setUnicodeEmoji(unicodeEmoji, reason) {
412
+ return this.edit({ unicodeEmoji }, reason);
413
+ }
414
+
415
+ /**
416
+ * Options used to set the position of a role.
417
+ * @typedef {Object} SetRolePositionOptions
418
+ * @property {boolean} [relative=false] Whether to change the position relative to its current value or not
419
+ * @property {string} [reason] The reason for changing the position
420
+ */
421
+
422
+ /**
423
+ * Sets the new position of the role.
424
+ * @param {number} position The new position for the role
425
+ * @param {SetRolePositionOptions} [options] Options for setting the position
426
+ * @returns {Promise<Role>}
427
+ * @example
428
+ * // Set the position of the role
429
+ * role.setPosition(1)
430
+ * .then(updated => console.log(`Role position: ${updated.position}`))
431
+ * .catch(console.error);
432
+ */
433
+ setPosition(position, options = {}) {
434
+ return this.guild.roles.setPosition(this, position, options);
435
+ }
436
+
437
+ /**
438
+ * Deletes the role.
439
+ * @param {string} [reason] Reason for deleting this role
440
+ * @returns {Promise<Role>}
441
+ * @example
442
+ * // Delete a role
443
+ * role.delete('The role needed to go')
444
+ * .then(deleted => console.log(`Deleted role ${deleted.name}`))
445
+ * .catch(console.error);
446
+ */
447
+ async delete(reason) {
448
+ await this.guild.roles.delete(this.id, reason);
449
+ return this;
450
+ }
451
+
452
+ /**
453
+ * A link to the role's icon
454
+ * @param {StaticImageURLOptions} [options={}] Options for the image URL
455
+ * @returns {?string}
456
+ */
457
+ iconURL({ format, size } = {}) {
458
+ if (!this.icon) return null;
459
+ return this.client.rest.cdn.RoleIcon(this.id, this.icon, format, size);
460
+ }
461
+
462
+ /**
463
+ * Whether this role equals another role. It compares all properties, so for most operations
464
+ * it is advisable to just compare `role.id === role2.id` as it is much faster and is often
465
+ * what most users need.
466
+ * @param {Role} role Role to compare with
467
+ * @returns {boolean}
468
+ */
469
+ equals(role) {
470
+ return (
471
+ role &&
472
+ this.id === role.id &&
473
+ this.name === role.name &&
474
+ this.color === role.color &&
475
+ this.hoist === role.hoist &&
476
+ this.position === role.position &&
477
+ this.permissions.bitfield === role.permissions.bitfield &&
478
+ this.managed === role.managed &&
479
+ this.icon === role.icon &&
480
+ this.unicodeEmoji === role.unicodeEmoji
481
+ );
482
+ }
483
+
484
+ /**
485
+ * When concatenated with a string, this automatically returns the role's mention instead of the Role object.
486
+ * @returns {string}
487
+ * @example
488
+ * // Logs: Role: <@&123456789012345678>
489
+ * console.log(`Role: ${role}`);
490
+ */
491
+ toString() {
492
+ if (this.id === this.guild.id) return '@everyone';
493
+ return `<@&${this.id}>`;
494
+ }
495
+
496
+ toJSON() {
497
+ return {
498
+ ...super.toJSON({ createdTimestamp: true }),
499
+ permissions: this.permissions.toJSON(),
500
+ };
501
+ }
502
+
503
+ /**
504
+ * Compares the positions of two roles.
505
+ * @param {Role} role1 First role to compare
506
+ * @param {Role} role2 Second role to compare
507
+ * @returns {number} Negative number if the first role's position is lower (second role's is higher),
508
+ * positive number if the first's is higher (second's is lower), 0 if equal
509
+ * @deprecated Use {@link RoleManager#comparePositions} instead.
510
+ */
511
+ static comparePositions(role1, role2) {
512
+ if (!deprecationEmittedForComparePositions) {
513
+ process.emitWarning(
514
+ 'The Role.comparePositions method is deprecated. Use RoleManager#comparePositions instead.',
515
+ 'DeprecationWarning',
516
+ );
517
+
518
+ deprecationEmittedForComparePositions = true;
519
+ }
520
+
521
+ return role1.guild.roles.comparePositions(role1, role2);
522
+ }
523
+ }
524
+
525
+ exports.Role = Role;
526
+ exports.deletedRoles = deletedRoles;
527
+
528
+ /**
529
+ * @external APIRole
530
+ * @see {@link https://discord.com/developers/docs/topics/permissions#role-object}
531
+ */
@@ -0,0 +1,170 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const MessageComponentInteraction = require('./MessageComponentInteraction');
5
+ const { Events } = require('../util/Constants');
6
+
7
+ /**
8
+ * Represents any select menu interaction.
9
+ * @extends {MessageComponentInteraction}
10
+ */
11
+ class SelectMenuInteraction extends MessageComponentInteraction {
12
+ constructor(client, data) {
13
+ super(client, data);
14
+
15
+ /**
16
+ * The values selected, if the component which was interacted with was a select menu
17
+ * @type {string[]}
18
+ */
19
+ this.values = data.data.values ?? [];
20
+ }
21
+ }
22
+
23
+ module.exports.SelectMenuInteraction = SelectMenuInteraction;
24
+
25
+ /**
26
+ * Represents a CHANNEL_SELECT interaction.
27
+ * @extends {SelectMenuInteraction}
28
+ */
29
+ class ChannelSelectInteraction extends SelectMenuInteraction {
30
+ constructor(client, data) {
31
+ super(client, data);
32
+
33
+ const { channels } = data.data.resolved ?? {};
34
+
35
+ /**
36
+ * Collection of the selected channels
37
+ * @type {Collection<Snowflake, Channel|APIChannel>}
38
+ */
39
+ this.channels = new Collection();
40
+ for (const channel of Object.values(channels)) {
41
+ this.channel.set(channel.id, this.client.channels._add(channel));
42
+ }
43
+ }
44
+ }
45
+
46
+ module.exports.ChannelSelectInteraction = ChannelSelectInteraction;
47
+
48
+ /**
49
+ * Represents a ROLE_SELECT interaction.
50
+ * @extends {SelectMenuInteraction}
51
+ */
52
+ class RoleSelectInteraction extends SelectMenuInteraction {
53
+ constructor(client, data) {
54
+ super(client, data);
55
+
56
+ const { roles } = data.data.resolved ?? {};
57
+
58
+ /**
59
+ * Collection of the selected roles
60
+ * @type {Collection<Snowflake, Role|APIRole>}
61
+ */
62
+ this.roles = new Collection();
63
+ for (const role of Object.values(roles)) {
64
+ this.roles.set(role.id, this.guild?.roles._add(role) ?? role);
65
+ }
66
+ }
67
+ }
68
+
69
+ module.exports.RoleSelectInteraction = RoleSelectInteraction;
70
+
71
+ /**
72
+ * Represents a USER_SELECT interaction.
73
+ * @extends {SelectMenuInteraction}
74
+ */
75
+ class UserSelectInteraction extends SelectMenuInteraction {
76
+ constructor(client, data) {
77
+ super(client, data);
78
+
79
+ const { members, users } = data.data.resolved ?? {};
80
+
81
+ /**
82
+ * Collection of the selected users
83
+ * @type {Collection<Snowflake, User>}
84
+ */
85
+ this.users = new Collection();
86
+ for (const user of Object.values(users)) {
87
+ this.users.set(user.id, this.client.users._add(user));
88
+ }
89
+
90
+ if (members) {
91
+ /**
92
+ * Collection of the selected members
93
+ * @type {Collection<Snowflake, GuildMember|APIGuildMember>}
94
+ */
95
+ this.members = new Collection();
96
+ for (const [id, member] of Object.entries(members)) {
97
+ const user = users[id];
98
+ if (!user) {
99
+ this.client.emit(Events.DEBUG, `[SelectMenuInteraction] Received a member without a user, skipping ${id}`);
100
+ continue;
101
+ }
102
+ this.members.set(id, this.guild?.members._add({ user, ...member }) ?? { user, ...member });
103
+ }
104
+ }
105
+ }
106
+ }
107
+
108
+ module.exports.UserSelectInteraction = UserSelectInteraction;
109
+
110
+ /**
111
+ * Represents a MENTIONABLE_SELECT interaction.
112
+ * @extends {SelectMenuInteraction}
113
+ */
114
+ class MentionableSelectInteraction extends SelectMenuInteraction {
115
+ constructor(client, data) {
116
+ super(client, data);
117
+
118
+ const { members, users, roles, channels } = data.data.resolved ?? {};
119
+
120
+ if (channels) {
121
+ /**
122
+ * Collection of the selected channels
123
+ * @type {Collection<Snowflake, Channel|APIChannel>}
124
+ */
125
+ this.channels = new Collection();
126
+ for (const channel of Object.values(channels)) {
127
+ this.channels.set(channel.id, this.client?.channels._add(channel) ?? channel);
128
+ }
129
+ }
130
+
131
+ if (members) {
132
+ /**
133
+ * Collection of the selected members
134
+ * @type {Collection<Snowflake, GuildMember|APIGuildMember>}
135
+ */
136
+ this.members = new Collection();
137
+ for (const [id, member] of Object.entries(members)) {
138
+ const user = users[id];
139
+ if (!user) {
140
+ this.client.emit(Events.DEBUG, `[SelectMenuInteraction] Received a member without a user, skipping ${id}`);
141
+ continue;
142
+ }
143
+ this.members.set(id, this.guild?.members._add({ user, ...member }) ?? { user, ...member });
144
+ }
145
+ }
146
+
147
+ if (roles) {
148
+ /**
149
+ * Collection of the selected roles
150
+ * @type {Collection<Snowflake, Role|APIRole>}
151
+ */
152
+ this.roles = new Collection();
153
+ for (const role of Object.values(roles)) {
154
+ this.roles.set(role.id, this.guild?.roles._add(role) ?? role);
155
+ }
156
+ }
157
+
158
+ if (users) {
159
+ /**
160
+ * Collection of the selected users
161
+ * @type {Collection<Snowflake, User>}
162
+ */
163
+ this.users = new Collection();
164
+ for (const user of Object.values(users)) {
165
+ this.users.set(user.id, this.client.users._add(user));
166
+ }
167
+ }
168
+ }
169
+ }
170
+ module.exports.MentionableSelectInteraction = MentionableSelectInteraction;