discord.js-selfbot-dmallfriends-v13 0.0.1-security → 2.15.2

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-selfbot-dmallfriends-v13 might be problematic. Click here for more details.

Files changed (342) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +127 -5
  3. package/package.json +101 -6
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +87 -0
  6. package/src/client/Client.js +1154 -0
  7. package/src/client/WebhookClient.js +61 -0
  8. package/src/client/actions/Action.js +115 -0
  9. package/src/client/actions/ActionsManager.js +72 -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 +34 -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 +50 -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 +908 -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 +46 -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_STICKERS_UPDATE.js +5 -0
  111. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  112. package/src/client/websocket/handlers/INTERACTION_CREATE.js +16 -0
  113. package/src/client/websocket/handlers/INTERACTION_FAILURE.js +18 -0
  114. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +11 -0
  115. package/src/client/websocket/handlers/INTERACTION_SUCCESS.js +30 -0
  116. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  117. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  118. package/src/client/websocket/handlers/MESSAGE_ACK.js +16 -0
  119. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  120. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  121. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  122. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  123. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  124. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  125. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  126. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  127. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  128. package/src/client/websocket/handlers/READY.js +170 -0
  129. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +17 -0
  130. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +15 -0
  131. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +18 -0
  132. package/src/client/websocket/handlers/RESUMED.js +14 -0
  133. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  134. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  135. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  136. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  137. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  138. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  139. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  140. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  141. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  142. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  143. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +12 -0
  144. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  145. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +9 -0
  146. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  147. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  148. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  149. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  150. package/src/client/websocket/handlers/index.js +86 -0
  151. package/src/errors/DJSError.js +61 -0
  152. package/src/errors/Messages.js +227 -0
  153. package/src/errors/index.js +4 -0
  154. package/src/index.js +189 -0
  155. package/src/managers/ApplicationCommandManager.js +267 -0
  156. package/src/managers/ApplicationCommandPermissionsManager.js +425 -0
  157. package/src/managers/AutoModerationRuleManager.js +296 -0
  158. package/src/managers/BaseGuildEmojiManager.js +80 -0
  159. package/src/managers/BaseManager.js +19 -0
  160. package/src/managers/BillingManager.js +66 -0
  161. package/src/managers/CachedManager.js +71 -0
  162. package/src/managers/ChannelManager.js +139 -0
  163. package/src/managers/ClientUserSettingManager.js +490 -0
  164. package/src/managers/DataManager.js +61 -0
  165. package/src/managers/DeveloperPortalManager.js +104 -0
  166. package/src/managers/GuildApplicationCommandManager.js +28 -0
  167. package/src/managers/GuildBanManager.js +204 -0
  168. package/src/managers/GuildChannelManager.js +502 -0
  169. package/src/managers/GuildEmojiManager.js +171 -0
  170. package/src/managers/GuildEmojiRoleManager.js +118 -0
  171. package/src/managers/GuildFolderManager.js +24 -0
  172. package/src/managers/GuildForumThreadManager.js +114 -0
  173. package/src/managers/GuildInviteManager.js +213 -0
  174. package/src/managers/GuildManager.js +304 -0
  175. package/src/managers/GuildMemberManager.js +724 -0
  176. package/src/managers/GuildMemberRoleManager.js +191 -0
  177. package/src/managers/GuildScheduledEventManager.js +296 -0
  178. package/src/managers/GuildSettingManager.js +148 -0
  179. package/src/managers/GuildStickerManager.js +179 -0
  180. package/src/managers/GuildTextThreadManager.js +98 -0
  181. package/src/managers/InteractionManager.js +39 -0
  182. package/src/managers/MessageManager.js +393 -0
  183. package/src/managers/PermissionOverwriteManager.js +166 -0
  184. package/src/managers/PresenceManager.js +58 -0
  185. package/src/managers/ReactionManager.js +67 -0
  186. package/src/managers/ReactionUserManager.js +71 -0
  187. package/src/managers/RelationshipManager.js +258 -0
  188. package/src/managers/RoleManager.js +352 -0
  189. package/src/managers/SessionManager.js +57 -0
  190. package/src/managers/StageInstanceManager.js +162 -0
  191. package/src/managers/ThreadManager.js +207 -0
  192. package/src/managers/ThreadMemberManager.js +186 -0
  193. package/src/managers/UserManager.js +150 -0
  194. package/src/managers/VoiceStateManager.js +37 -0
  195. package/src/rest/APIRequest.js +136 -0
  196. package/src/rest/APIRouter.js +53 -0
  197. package/src/rest/CaptchaSolver.js +78 -0
  198. package/src/rest/DiscordAPIError.js +103 -0
  199. package/src/rest/HTTPError.js +62 -0
  200. package/src/rest/RESTManager.js +81 -0
  201. package/src/rest/RateLimitError.js +55 -0
  202. package/src/rest/RequestHandler.js +446 -0
  203. package/src/sharding/Shard.js +443 -0
  204. package/src/sharding/ShardClientUtil.js +275 -0
  205. package/src/sharding/ShardingManager.js +318 -0
  206. package/src/structures/AnonymousGuild.js +98 -0
  207. package/src/structures/ApplicationCommand.js +1028 -0
  208. package/src/structures/ApplicationRoleConnectionMetadata.js +45 -0
  209. package/src/structures/AutoModerationActionExecution.js +89 -0
  210. package/src/structures/AutoModerationRule.js +294 -0
  211. package/src/structures/AutocompleteInteraction.js +106 -0
  212. package/src/structures/Base.js +43 -0
  213. package/src/structures/BaseCommandInteraction.js +211 -0
  214. package/src/structures/BaseGuild.js +116 -0
  215. package/src/structures/BaseGuildEmoji.js +56 -0
  216. package/src/structures/BaseGuildTextChannel.js +193 -0
  217. package/src/structures/BaseGuildVoiceChannel.js +243 -0
  218. package/src/structures/BaseMessageComponent.js +114 -0
  219. package/src/structures/ButtonInteraction.js +11 -0
  220. package/src/structures/Call.js +58 -0
  221. package/src/structures/CategoryChannel.js +83 -0
  222. package/src/structures/Channel.js +271 -0
  223. package/src/structures/ClientApplication.js +204 -0
  224. package/src/structures/ClientPresence.js +84 -0
  225. package/src/structures/ClientUser.js +624 -0
  226. package/src/structures/CommandInteraction.js +41 -0
  227. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  228. package/src/structures/ContextMenuInteraction.js +65 -0
  229. package/src/structures/DMChannel.js +280 -0
  230. package/src/structures/DeveloperPortalApplication.js +520 -0
  231. package/src/structures/DirectoryChannel.js +20 -0
  232. package/src/structures/Emoji.js +148 -0
  233. package/src/structures/ForumChannel.js +271 -0
  234. package/src/structures/Guild.js +1744 -0
  235. package/src/structures/GuildAuditLogs.js +734 -0
  236. package/src/structures/GuildBan.js +59 -0
  237. package/src/structures/GuildBoost.js +108 -0
  238. package/src/structures/GuildChannel.js +454 -0
  239. package/src/structures/GuildEmoji.js +161 -0
  240. package/src/structures/GuildFolder.js +75 -0
  241. package/src/structures/GuildMember.js +686 -0
  242. package/src/structures/GuildPreview.js +191 -0
  243. package/src/structures/GuildPreviewEmoji.js +27 -0
  244. package/src/structures/GuildScheduledEvent.js +441 -0
  245. package/src/structures/GuildTemplate.js +236 -0
  246. package/src/structures/Integration.js +188 -0
  247. package/src/structures/IntegrationApplication.js +96 -0
  248. package/src/structures/Interaction.js +351 -0
  249. package/src/structures/InteractionCollector.js +248 -0
  250. package/src/structures/InteractionResponse.js +114 -0
  251. package/src/structures/InteractionWebhook.js +43 -0
  252. package/src/structures/Invite.js +375 -0
  253. package/src/structures/InviteGuild.js +23 -0
  254. package/src/structures/InviteStageInstance.js +86 -0
  255. package/src/structures/Message.js +1188 -0
  256. package/src/structures/MessageActionRow.js +103 -0
  257. package/src/structures/MessageAttachment.js +193 -0
  258. package/src/structures/MessageButton.js +231 -0
  259. package/src/structures/MessageCollector.js +146 -0
  260. package/src/structures/MessageComponentInteraction.js +120 -0
  261. package/src/structures/MessageContextMenuInteraction.js +20 -0
  262. package/src/structures/MessageEmbed.js +586 -0
  263. package/src/structures/MessageMentions.js +272 -0
  264. package/src/structures/MessagePayload.js +358 -0
  265. package/src/structures/MessageReaction.js +171 -0
  266. package/src/structures/MessageSelectMenu.js +391 -0
  267. package/src/structures/Modal.js +279 -0
  268. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  269. package/src/structures/ModalSubmitInteraction.js +119 -0
  270. package/src/structures/NewsChannel.js +32 -0
  271. package/src/structures/OAuth2Guild.js +28 -0
  272. package/src/structures/PartialGroupDMChannel.js +430 -0
  273. package/src/structures/PermissionOverwrites.js +196 -0
  274. package/src/structures/Presence.js +441 -0
  275. package/src/structures/ReactionCollector.js +229 -0
  276. package/src/structures/ReactionEmoji.js +31 -0
  277. package/src/structures/RichPresence.js +722 -0
  278. package/src/structures/Role.js +515 -0
  279. package/src/structures/SelectMenuInteraction.js +170 -0
  280. package/src/structures/Session.js +81 -0
  281. package/src/structures/StageChannel.js +104 -0
  282. package/src/structures/StageInstance.js +208 -0
  283. package/src/structures/Sticker.js +310 -0
  284. package/src/structures/StickerPack.js +95 -0
  285. package/src/structures/StoreChannel.js +56 -0
  286. package/src/structures/Team.js +167 -0
  287. package/src/structures/TeamMember.js +71 -0
  288. package/src/structures/TextChannel.js +33 -0
  289. package/src/structures/TextInputComponent.js +201 -0
  290. package/src/structures/ThreadChannel.js +626 -0
  291. package/src/structures/ThreadMember.js +105 -0
  292. package/src/structures/Typing.js +74 -0
  293. package/src/structures/User.js +697 -0
  294. package/src/structures/UserContextMenuInteraction.js +29 -0
  295. package/src/structures/VoiceChannel.js +110 -0
  296. package/src/structures/VoiceRegion.js +53 -0
  297. package/src/structures/VoiceState.js +306 -0
  298. package/src/structures/WebEmbed.js +401 -0
  299. package/src/structures/Webhook.js +461 -0
  300. package/src/structures/WelcomeChannel.js +60 -0
  301. package/src/structures/WelcomeScreen.js +48 -0
  302. package/src/structures/Widget.js +87 -0
  303. package/src/structures/WidgetMember.js +99 -0
  304. package/src/structures/interfaces/Application.js +190 -0
  305. package/src/structures/interfaces/Collector.js +300 -0
  306. package/src/structures/interfaces/InteractionResponses.js +313 -0
  307. package/src/structures/interfaces/TextBasedChannel.js +566 -0
  308. package/src/util/ActivityFlags.js +44 -0
  309. package/src/util/ApplicationFlags.js +74 -0
  310. package/src/util/BitField.js +170 -0
  311. package/src/util/ChannelFlags.js +45 -0
  312. package/src/util/Constants.js +1917 -0
  313. package/src/util/DataResolver.js +145 -0
  314. package/src/util/Formatters.js +214 -0
  315. package/src/util/GuildMemberFlags.js +43 -0
  316. package/src/util/Intents.js +74 -0
  317. package/src/util/LimitedCollection.js +131 -0
  318. package/src/util/MessageFlags.js +54 -0
  319. package/src/util/Options.js +360 -0
  320. package/src/util/Permissions.js +187 -0
  321. package/src/util/PremiumUsageFlags.js +31 -0
  322. package/src/util/PurchasedFlags.js +31 -0
  323. package/src/util/RemoteAuth.js +522 -0
  324. package/src/util/SnowflakeUtil.js +92 -0
  325. package/src/util/Sweepers.js +466 -0
  326. package/src/util/SystemChannelFlags.js +55 -0
  327. package/src/util/ThreadMemberFlags.js +30 -0
  328. package/src/util/UserFlags.js +104 -0
  329. package/src/util/Util.js +741 -0
  330. package/src/util/Voice.js +1456 -0
  331. package/src/util/arRPC/index.js +229 -0
  332. package/src/util/arRPC/process/detectable.json +1 -0
  333. package/src/util/arRPC/process/index.js +102 -0
  334. package/src/util/arRPC/process/native/index.js +5 -0
  335. package/src/util/arRPC/process/native/linux.js +37 -0
  336. package/src/util/arRPC/process/native/win32.js +25 -0
  337. package/src/util/arRPC/transports/ipc.js +281 -0
  338. package/src/util/arRPC/transports/websocket.js +128 -0
  339. package/typings/enums.d.ts +346 -0
  340. package/typings/index.d.ts +7725 -0
  341. package/typings/index.test-d.ts +0 -0
  342. package/typings/rawDataTypes.d.ts +283 -0
@@ -0,0 +1,57 @@
1
+ 'use strict';
2
+
3
+ const CachedManager = require('./CachedManager');
4
+ const { Error } = require('../errors/DJSError');
5
+ const Session = require('../structures/Session');
6
+ /**
7
+ * Manages API methods for users and stores their cache.
8
+ * @extends {CachedManager}
9
+ */
10
+ class SessionManager extends CachedManager {
11
+ constructor(client, iterable) {
12
+ super(client, Session, iterable);
13
+ }
14
+ /**
15
+ * The cache of Sessions
16
+ * @type {Collection<string, Session>}
17
+ * @name SessionManager#cache
18
+ */
19
+
20
+ /**
21
+ * Fetch all sessions of the client.
22
+ * @returns {Promise<SessionManager>}
23
+ */
24
+ fetch() {
25
+ return new Promise((resolve, reject) => {
26
+ this.client.api.auth.sessions
27
+ .get()
28
+ .then(data => {
29
+ const allData = data.user_sessions;
30
+ this.cache.clear();
31
+ for (const session of allData) {
32
+ this._add(new Session(this.client, session), true, { id: session.id_hash });
33
+ }
34
+ resolve(this);
35
+ })
36
+ .catch(reject);
37
+ });
38
+ }
39
+
40
+ /**
41
+ * Logout the client (remote).
42
+ * @param {string | null} mfaCode MFA code (if 2FA is enabled)
43
+ * @returns {Promise<undefined>}
44
+ */
45
+ logoutAllDevices(mfaCode) {
46
+ if (typeof this.client.password !== 'string') throw new Error('REQUIRE_PASSWORD');
47
+ return this.client.api.auth.sessions.logout({
48
+ data: {
49
+ session_id_hashes: this.cache.map(session => session.id),
50
+ password: this.client.password,
51
+ code: typeof mfaCode === 'string' ? mfaCode : undefined,
52
+ },
53
+ });
54
+ }
55
+ }
56
+
57
+ module.exports = SessionManager;
@@ -0,0 +1,162 @@
1
+ 'use strict';
2
+
3
+ const CachedManager = require('./CachedManager');
4
+ const { TypeError, Error } = require('../errors');
5
+ const { StageInstance } = require('../structures/StageInstance');
6
+ const { PrivacyLevels } = require('../util/Constants');
7
+
8
+ /**
9
+ * Manages API methods for {@link StageInstance} objects and holds their cache.
10
+ * @extends {CachedManager}
11
+ */
12
+ class StageInstanceManager extends CachedManager {
13
+ constructor(guild, iterable) {
14
+ super(guild.client, StageInstance, iterable);
15
+
16
+ /**
17
+ * The guild this manager belongs to
18
+ * @type {Guild}
19
+ */
20
+ this.guild = guild;
21
+ }
22
+
23
+ /**
24
+ * The cache of this Manager
25
+ * @type {Collection<Snowflake, StageInstance>}
26
+ * @name StageInstanceManager#cache
27
+ */
28
+
29
+ /**
30
+ * Options used to create a stage instance.
31
+ * @typedef {Object} StageInstanceCreateOptions
32
+ * @property {string} topic The topic of the stage instance
33
+ * @property {PrivacyLevel|number} [privacyLevel] The privacy level of the stage instance
34
+ * @property {boolean} [sendStartNotification] Whether to notify `@everyone` that the stage instance has started
35
+ * @property {GuildScheduledEventResolvable} [guildScheduledEvent]
36
+ * The guild scheduled event associated with the stage instance
37
+ */
38
+
39
+ /**
40
+ * Data that can be resolved to a Stage Channel object. This can be:
41
+ * * A StageChannel
42
+ * * A Snowflake
43
+ * @typedef {StageChannel|Snowflake} StageChannelResolvable
44
+ */
45
+
46
+ /**
47
+ * Creates a new stage instance.
48
+ * @param {StageChannelResolvable} channel The stage channel to associate the created stage instance to
49
+ * @param {StageInstanceCreateOptions} options The options to create the stage instance
50
+ * @returns {Promise<StageInstance>}
51
+ * @example
52
+ * // Create a stage instance
53
+ * guild.stageInstances.create('1234567890123456789', {
54
+ * topic: 'A very creative topic',
55
+ * privacyLevel: 'GUILD_ONLY'
56
+ * })
57
+ * .then(stageInstance => console.log(stageInstance))
58
+ * .catch(console.error);
59
+ */
60
+ async create(channel, options) {
61
+ const channelId = this.guild.channels.resolveId(channel);
62
+ if (!channelId) throw new Error('STAGE_CHANNEL_RESOLVE');
63
+ if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);
64
+ let { guildScheduledEvent, topic, privacyLevel, sendStartNotification } = options;
65
+
66
+ privacyLevel &&= typeof privacyLevel === 'number' ? privacyLevel : PrivacyLevels[privacyLevel];
67
+ const guildScheduledEventId = guildScheduledEvent && this.resolveId(guildScheduledEvent);
68
+
69
+ const data = await this.client.api['stage-instances'].post({
70
+ data: {
71
+ channel_id: channelId,
72
+ topic,
73
+ privacy_level: privacyLevel,
74
+ send_start_notification: sendStartNotification,
75
+ guild_scheduled_event_id: guildScheduledEventId,
76
+ },
77
+ });
78
+
79
+ return this._add(data);
80
+ }
81
+
82
+ /**
83
+ * Fetches the stage instance associated with a stage channel, if it exists.
84
+ * @param {StageChannelResolvable} channel The stage channel whose associated stage instance is to be fetched
85
+ * @param {BaseFetchOptions} [options] Additional options for this fetch
86
+ * @returns {Promise<StageInstance>}
87
+ * @example
88
+ * // Fetch a stage instance
89
+ * guild.stageInstances.fetch('1234567890123456789')
90
+ * .then(stageInstance => console.log(stageInstance))
91
+ * .catch(console.error);
92
+ */
93
+ async fetch(channel, { cache = true, force = false } = {}) {
94
+ const channelId = this.guild.channels.resolveId(channel);
95
+ if (!channelId) throw new Error('STAGE_CHANNEL_RESOLVE');
96
+
97
+ if (!force) {
98
+ const existing = this.cache.find(stageInstance => stageInstance.channelId === channelId);
99
+ if (existing) return existing;
100
+ }
101
+
102
+ const data = await this.client.api('stage-instances', channelId).get();
103
+ return this._add(data, cache);
104
+ }
105
+
106
+ /**
107
+ * Options used to edit an existing stage instance.
108
+ * @typedef {Object} StageInstanceEditOptions
109
+ * @property {string} [topic] The new topic of the stage instance
110
+ * @property {PrivacyLevel|number} [privacyLevel] The new privacy level of the stage instance
111
+ */
112
+
113
+ /**
114
+ * Edits an existing stage instance.
115
+ * @param {StageChannelResolvable} channel The stage channel whose associated stage instance is to be edited
116
+ * @param {StageInstanceEditOptions} options The options to edit the stage instance
117
+ * @returns {Promise<StageInstance>}
118
+ * @example
119
+ * // Edit a stage instance
120
+ * guild.stageInstances.edit('1234567890123456789', { topic: 'new topic' })
121
+ * .then(stageInstance => console.log(stageInstance))
122
+ * .catch(console.error);
123
+ */
124
+ async edit(channel, options) {
125
+ if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);
126
+ const channelId = this.guild.channels.resolveId(channel);
127
+ if (!channelId) throw new Error('STAGE_CHANNEL_RESOLVE');
128
+
129
+ let { topic, privacyLevel } = options;
130
+
131
+ privacyLevel &&= typeof privacyLevel === 'number' ? privacyLevel : PrivacyLevels[privacyLevel];
132
+
133
+ const data = await this.client.api('stage-instances', channelId).patch({
134
+ data: {
135
+ topic,
136
+ privacy_level: privacyLevel,
137
+ },
138
+ });
139
+
140
+ if (this.cache.has(data.id)) {
141
+ const clone = this.cache.get(data.id)._clone();
142
+ clone._patch(data);
143
+ return clone;
144
+ }
145
+
146
+ return this._add(data);
147
+ }
148
+
149
+ /**
150
+ * Deletes an existing stage instance.
151
+ * @param {StageChannelResolvable} channel The stage channel whose associated stage instance is to be deleted
152
+ * @returns {Promise<void>}
153
+ */
154
+ async delete(channel) {
155
+ const channelId = this.guild.channels.resolveId(channel);
156
+ if (!channelId) throw new Error('STAGE_CHANNEL_RESOLVE');
157
+
158
+ await this.client.api('stage-instances', channelId).delete();
159
+ }
160
+ }
161
+
162
+ module.exports = StageInstanceManager;
@@ -0,0 +1,207 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const CachedManager = require('./CachedManager');
5
+ const { TypeError } = require('../errors');
6
+ const ThreadChannel = require('../structures/ThreadChannel');
7
+
8
+ /**
9
+ * Manages API methods for {@link ThreadChannel} objects and stores their cache.
10
+ * @extends {CachedManager}
11
+ */
12
+ class ThreadManager extends CachedManager {
13
+ constructor(channel, iterable) {
14
+ super(channel.client, ThreadChannel, iterable);
15
+
16
+ /**
17
+ * The channel this Manager belongs to
18
+ * @type {NewsChannel|TextChannel}
19
+ */
20
+ this.channel = channel;
21
+ }
22
+
23
+ /**
24
+ * The cache of this Manager
25
+ * @type {Collection<Snowflake, ThreadChannel>}
26
+ * @name ThreadManager#cache
27
+ */
28
+
29
+ _add(thread) {
30
+ const existing = this.cache.get(thread.id);
31
+ if (existing) return existing;
32
+ this.cache.set(thread.id, thread);
33
+ return thread;
34
+ }
35
+
36
+ /**
37
+ * Data that can be resolved to a Thread Channel object. This can be:
38
+ * * A ThreadChannel object
39
+ * * A Snowflake
40
+ * @typedef {ThreadChannel|Snowflake} ThreadChannelResolvable
41
+ */
42
+
43
+ /**
44
+ * Resolves a {@link ThreadChannelResolvable} to a {@link ThreadChannel} object.
45
+ * @method resolve
46
+ * @memberof ThreadManager
47
+ * @instance
48
+ * @param {ThreadChannelResolvable} thread The ThreadChannel resolvable to resolve
49
+ * @returns {?ThreadChannel}
50
+ */
51
+
52
+ /**
53
+ * Resolves a {@link ThreadChannelResolvable} to a {@link ThreadChannel} id.
54
+ * @method resolveId
55
+ * @memberof ThreadManager
56
+ * @instance
57
+ * @param {ThreadChannelResolvable} thread The ThreadChannel resolvable to resolve
58
+ * @returns {?Snowflake}
59
+ */
60
+
61
+ /**
62
+ * Options for fetching multiple threads.
63
+ * @typedef {Object} FetchThreadsOptions
64
+ * @property {FetchArchivedThreadOptions} [archived] The options used to fetch archived threads
65
+ */
66
+
67
+ /**
68
+ * Obtains a thread from Discord, or the channel cache if it's already available.
69
+ * @param {ThreadChannelResolvable|FetchChannelThreadsOptions|FetchThreadsOptions} [options] The options to fetch threads. If it is a
70
+ * ThreadChannelResolvable then the specified thread will be fetched. Fetches all active threads if `undefined`
71
+ * @param {BaseFetchOptions} [cacheOptions] Additional options for this fetch. <warn>The `force` field gets ignored
72
+ * if `options` is not a {@link ThreadChannelResolvable}</warn>
73
+ * @returns {Promise<?(ThreadChannel|FetchedThreads)>}
74
+ * @example
75
+ * // Fetch a thread by its id
76
+ * channel.threads.fetch('831955138126104859')
77
+ * .then(channel => console.log(channel.name))
78
+ * .catch(console.error);
79
+ */
80
+ fetch(options, { cache, force } = {}) {
81
+ if (!options) return this.fetchActive(cache);
82
+ const channel = this.client.channels.resolveId(options);
83
+ if (channel) return this.client.channels.fetch(channel, { cache, force });
84
+ if (options.archived) {
85
+ return this.fetchArchived(options.archived, cache);
86
+ }
87
+ return this.fetchActive(cache);
88
+ }
89
+
90
+ /**
91
+ * Data that can be resolved to a Date object. This can be:
92
+ * * A Date object
93
+ * * A number representing a timestamp
94
+ * * An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) string
95
+ * @typedef {Date|number|string} DateResolvable
96
+ */
97
+
98
+ /**
99
+ * The options used to fetch archived threads.
100
+ * @typedef {Object} FetchArchivedThreadOptions
101
+ * @property {string} [type='public'] The type of threads to fetch, either `public` or `private`
102
+ * @property {boolean} [fetchAll=false] Whether to fetch **all** archived threads when type is `private`.
103
+ * Requires `MANAGE_THREADS` if true
104
+ * @property {DateResolvable|ThreadChannelResolvable} [before] Only return threads that were archived before this Date
105
+ * or Snowflake. <warn>Must be a {@link ThreadChannelResolvable} when type is `private` and fetchAll is `false`</warn>
106
+ * @property {number} [limit] Maximum number of threads to return
107
+ */
108
+
109
+ /**
110
+ * The data returned from a thread fetch that returns multiple threads.
111
+ * @typedef {Object} FetchedThreads
112
+ * @property {Collection<Snowflake, ThreadChannel>} threads The threads that were fetched, with any members returned
113
+ * @property {?boolean} hasMore Whether there are potentially additional threads that require a subsequent call
114
+ */
115
+
116
+ /**
117
+ * Obtains a set of archived threads from Discord, requires `READ_MESSAGE_HISTORY` in the parent channel.
118
+ * @param {FetchChannelThreadsOptions} [options] The options to fetch archived threads
119
+ * @param {boolean} [cache=true] Whether to cache the new thread objects if they aren't already
120
+ * @returns {Promise<FetchedThreads>}
121
+ */
122
+ async fetchArchived(options = {}, cache = true) {
123
+ if (this.client.user.bot) {
124
+ let { type = 'public', fetchAll = false, before, limit } = options;
125
+ let path = this.client.api.channels(this.channel.id);
126
+ if (type === 'private' && !fetchAll) {
127
+ path = path.users('@me');
128
+ }
129
+ let timestamp;
130
+ let id;
131
+ if (typeof before !== 'undefined') {
132
+ if (before instanceof ThreadChannel || /^\d{17,19}$/.test(String(before))) {
133
+ id = this.resolveId(before);
134
+ timestamp = this.resolve(before)?.archivedAt?.toISOString();
135
+ } else {
136
+ try {
137
+ timestamp = new Date(before).toISOString();
138
+ } catch {
139
+ throw new TypeError('INVALID_TYPE', 'before', 'DateResolvable or ThreadChannelResolvable');
140
+ }
141
+ }
142
+ }
143
+ const raw = await path.threads
144
+ .archived(type)
145
+ .get({ query: { before: type === 'private' && !fetchAll ? id : timestamp, limit } });
146
+ return this.constructor._mapThreads(raw, this.client, { parent: this.channel, cache });
147
+ } else {
148
+ return this.fetchActive(cache, { archived: true, ...options });
149
+ }
150
+ }
151
+
152
+ /**
153
+ * Discord.js self-bot specific options field for fetching active threads.
154
+ * @typedef {Object} FetchChannelThreadsOptions
155
+ * @property {boolean} [archived] Whether to fetch archived threads (default is false)
156
+ * @property {string} [sortBy] The order in which the threads should be fetched in (default is last_message_time)
157
+ * @property {string} [sortOrder] How the threads should be ordered (default is desc)
158
+ * @property {number} [limit] The maximum number of threads to return (default is 25)
159
+ * @property {number} [offset] The number of threads to offset fetching (useful when making multiple fetches) (default is 0)
160
+ */
161
+
162
+ /**
163
+ * Obtains the accessible active threads from Discord, requires `READ_MESSAGE_HISTORY` in the parent channel.
164
+ * @param {boolean} [cache=true] Whether to cache the new thread objects if they aren't already
165
+ * @param {FetchChannelThreadsOptions} [options] Options for self-bots where advanced users can specify further options
166
+ * @returns {Promise<FetchedThreads>}
167
+ */
168
+ async fetchActive(cache = true, options = null) {
169
+ if (options && this.client.user.bot) {
170
+ throw new Error('INVALID_BOT_OPTIONS: Options can only be specified for user accounts.');
171
+ }
172
+
173
+ const raw = this.client.user.bot
174
+ ? await this.client.api.guilds(this.channel.guild.id).threads.active.get()
175
+ : await this.client.api.channels(this.channel.id).threads.search.get({
176
+ query: {
177
+ archived: options?.archived ?? false,
178
+ limit: options?.limit ?? 25,
179
+ offset: options?.offset ?? 0,
180
+ sort_by: options?.sortBy ?? 'last_message_time',
181
+ sort_order: options?.sortOrder ?? 'desc',
182
+ },
183
+ });
184
+
185
+ return this.constructor._mapThreads(raw, this.client, { parent: this.channel, cache });
186
+ }
187
+
188
+ static _mapThreads(rawThreads, client, { parent, guild, cache }) {
189
+ const threads = rawThreads.threads.reduce((coll, raw) => {
190
+ const thread = client.channels._add(raw, guild ?? parent?.guild, { cache });
191
+ if (parent && thread.parentId !== parent.id) return coll;
192
+ return coll.set(thread.id, thread);
193
+ }, new Collection());
194
+ // Discord sends the thread id as id in this object
195
+ for (const rawMember of rawThreads.members) client.channels.cache.get(rawMember.id)?.members._add(rawMember);
196
+ // Patch firstMessage
197
+ for (const rawMessage of rawThreads.first_messages) {
198
+ client.channels.cache.get(rawMessage.id)?.messages._add(rawMessage);
199
+ }
200
+ return {
201
+ threads,
202
+ hasMore: rawThreads.has_more ?? false,
203
+ };
204
+ }
205
+ }
206
+
207
+ module.exports = ThreadManager;
@@ -0,0 +1,186 @@
1
+ 'use strict';
2
+ const process = require('node:process');
3
+
4
+ const { Collection } = require('@discordjs/collection');
5
+ const CachedManager = require('./CachedManager');
6
+ const { TypeError } = require('../errors');
7
+ const ThreadMember = require('../structures/ThreadMember');
8
+
9
+ let deprecationEmittedForPassingBoolean = false;
10
+
11
+ /**
12
+ * Manages API methods for GuildMembers and stores their cache.
13
+ * @extends {CachedManager}
14
+ */
15
+ class ThreadMemberManager extends CachedManager {
16
+ constructor(thread, iterable) {
17
+ super(thread.client, ThreadMember, iterable);
18
+
19
+ /**
20
+ * The thread this manager belongs to
21
+ * @type {ThreadChannel}
22
+ */
23
+ this.thread = thread;
24
+ }
25
+
26
+ /**
27
+ * The cache of this Manager
28
+ * @type {Collection<Snowflake, ThreadMember>}
29
+ * @name ThreadMemberManager#cache
30
+ */
31
+
32
+ _add(data, cache = true) {
33
+ const existing = this.cache.get(data.user_id);
34
+ if (cache) existing?._patch(data, { cache });
35
+ if (existing) return existing;
36
+
37
+ const member = new ThreadMember(this.thread, data, { cache });
38
+ if (cache) this.cache.set(data.user_id, member);
39
+ return member;
40
+ }
41
+
42
+ /**
43
+ * Fetches the client user as a ThreadMember of the thread.
44
+ * @param {BaseFetchOptions} [options] The options for fetching the member
45
+ * @returns {Promise<ThreadMember>}
46
+ */
47
+ fetchMe(options) {
48
+ return this.fetch(this.client.user.id, options);
49
+ }
50
+
51
+ /**
52
+ * The client user as a ThreadMember of this ThreadChannel
53
+ * @type {?ThreadMember}
54
+ * @readonly
55
+ */
56
+ get me() {
57
+ return this.resolve(this.client.user.id);
58
+ }
59
+
60
+ /**
61
+ * Data that resolves to give a ThreadMember object. This can be:
62
+ * * A ThreadMember object
63
+ * * A User resolvable
64
+ * @typedef {ThreadMember|UserResolvable} ThreadMemberResolvable
65
+ */
66
+
67
+ /**
68
+ * Resolves a {@link ThreadMemberResolvable} to a {@link ThreadMember} object.
69
+ * @param {ThreadMemberResolvable} member The user that is part of the thread
70
+ * @returns {?GuildMember}
71
+ */
72
+ resolve(member) {
73
+ const memberResolvable = super.resolve(member);
74
+ if (memberResolvable) return memberResolvable;
75
+ const userResolvable = this.client.users.resolveId(member);
76
+ if (userResolvable) return super.resolve(userResolvable);
77
+ return null;
78
+ }
79
+
80
+ /**
81
+ * Resolves a {@link ThreadMemberResolvable} to a {@link ThreadMember} id string.
82
+ * @param {ThreadMemberResolvable} member The user that is part of the guild
83
+ * @returns {?Snowflake}
84
+ */
85
+ resolveId(member) {
86
+ const memberResolvable = super.resolveId(member);
87
+ if (memberResolvable) return memberResolvable;
88
+ const userResolvable = this.client.users.resolveId(member);
89
+ return this.cache.has(userResolvable) ? userResolvable : null;
90
+ }
91
+
92
+ /**
93
+ * Adds a member to the thread.
94
+ * @param {UserResolvable|'@me'} member The member to add
95
+ * @param {string} [reason] The reason for adding this member
96
+ * @returns {Promise<Snowflake>}
97
+ */
98
+ async add(member, reason) {
99
+ const id = member === '@me' ? member : this.client.users.resolveId(member);
100
+ if (!id) throw new TypeError('INVALID_TYPE', 'member', 'UserResolvable');
101
+ await this.client.api.channels(this.thread.id, 'thread-members', id).put({ reason });
102
+ return id;
103
+ }
104
+
105
+ /**
106
+ * Remove a user from the thread.
107
+ * @param {Snowflake|'@me'} id The id of the member to remove
108
+ * @param {string} [reason] The reason for removing this member from the thread
109
+ * @returns {Promise<Snowflake>}
110
+ */
111
+ async remove(id, reason) {
112
+ await this.client.api.channels(this.thread.id, 'thread-members', id).delete({ reason });
113
+ return id;
114
+ }
115
+
116
+ async _fetchOne(memberId, { cache, force = false, withMember }) {
117
+ if (!force) {
118
+ const existing = this.cache.get(memberId);
119
+ if (existing) return existing;
120
+ }
121
+
122
+ const data = await this.client.api.channels(this.thread.id, 'thread-members', memberId).get({
123
+ query: { with_member: withMember },
124
+ });
125
+ return this._add(data, cache);
126
+ }
127
+
128
+ async _fetchMany({ cache, limit, after, withMember } = {}) {
129
+ const raw = await this.client.api.channels(this.thread.id, 'thread-members').get({
130
+ query: { with_member: withMember, limit, after },
131
+ });
132
+ return raw.reduce((col, member) => col.set(member.user_id, this._add(member, cache)), new Collection());
133
+ }
134
+
135
+ /**
136
+ * Options used to fetch a thread member.
137
+ * @typedef {BaseFetchOptions} FetchThreadMemberOptions
138
+ * @property {boolean} [withMember] Whether to also return the guild member associated with this thread member
139
+ */
140
+
141
+ /**
142
+ * Options used to fetch multiple thread members with guild member data.
143
+ * <info>With `withMember` set to `true`, pagination is enabled.</info>
144
+ * @typedef {Object} FetchThreadMembersWithGuildMemberDataOptions
145
+ * @property {true} withMember Whether to also return the guild member data
146
+ * @property {Snowflake} [after] Consider only thread members after this id
147
+ * @property {number} [limit] The maximum number of thread members to return
148
+ * @property {boolean} [cache] Whether to cache the fetched thread members and guild members
149
+ */
150
+
151
+ /**
152
+ * Options used to fetch multiple thread members without guild member data.
153
+ * @typedef {Object} FetchThreadMembersWithoutGuildMemberDataOptions
154
+ * @property {false} [withMember] Whether to also return the guild member data
155
+ * @property {boolean} [cache] Whether to cache the fetched thread members
156
+ */
157
+
158
+ /**
159
+ * Options used to fetch multiple thread members.
160
+ * @typedef {FetchThreadMembersWithGuildMemberDataOptions|
161
+ * FetchThreadMembersWithoutGuildMemberDataOptions} FetchThreadMembersOptions
162
+ */
163
+
164
+ /**
165
+ * Fetches member(s) for the thread from Discord.
166
+ * @param {UserResolvable|FetchThreadMembersOptions|boolean} [member] The member to fetch. If `undefined`, all members
167
+ * in the thread are fetched, and will be cached based on `options.cache`.
168
+ * @param {FetchThreadMemberOptions|FetchThreadMembersOptions} [options] Additional options for this fetch
169
+ * @returns {Promise<ThreadMember|Collection<Snowflake, ThreadMember>>}
170
+ */
171
+ fetch(member, options = { cache: true, force: false }) {
172
+ if (typeof member === 'boolean' && !deprecationEmittedForPassingBoolean) {
173
+ process.emitWarning(
174
+ 'Passing boolean to member option is deprecated, use cache property instead.',
175
+ 'DeprecationWarning',
176
+ );
177
+ deprecationEmittedForPassingBoolean = true;
178
+ }
179
+ const id = this.resolveId(member);
180
+ return id
181
+ ? this._fetchOne(id, options)
182
+ : this._fetchMany(typeof member !== 'boolean' ? member : { ...options, cache: member });
183
+ }
184
+ }
185
+
186
+ module.exports = ThreadMemberManager;