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,635 @@
1
+ 'use strict';
2
+
3
+ const { setInterval } = require('node:timers');
4
+ const { Collection } = require('@discordjs/collection');
5
+ const Invite = require('./Invite');
6
+ const { Message } = require('./Message');
7
+ const User = require('./User');
8
+ const { Util } = require('..');
9
+ const { Error: Error_ } = require('../errors');
10
+ const { Opcodes, NitroType, HypeSquadType } = require('../util/Constants');
11
+ const DataResolver = require('../util/DataResolver');
12
+ const PremiumUsageFlags = require('../util/PremiumUsageFlags');
13
+ const PurchasedFlags = require('../util/PurchasedFlags');
14
+ /**
15
+ * Represents the logged in client's Discord user.
16
+ * @extends {User}
17
+ */
18
+ class ClientUser extends User {
19
+ _patch(data) {
20
+ super._patch(data);
21
+
22
+ if ('verified' in data) {
23
+ /**
24
+ * Whether or not this account has been verified
25
+ * @type {boolean}
26
+ */
27
+ this.verified = data.verified;
28
+ }
29
+
30
+ if ('mfa_enabled' in data) {
31
+ /**
32
+ * If the bot's {@link ClientApplication#owner Owner} has MFA enabled on their account
33
+ * @type {?boolean}
34
+ */
35
+ this.mfaEnabled = typeof data.mfa_enabled === 'boolean' ? data.mfa_enabled : null;
36
+ } else {
37
+ this.mfaEnabled ??= null;
38
+ }
39
+
40
+ if ('token' in data) this.client.token = data.token;
41
+
42
+ // Todo: Add (Selfbot)
43
+ if ('premium_type' in data) {
44
+ const nitro = NitroType[data.premium_type ?? 0];
45
+ /**
46
+ * Nitro type of the client user.
47
+ * @type {NitroType}
48
+ */
49
+ this.nitroType = nitro ?? `UNKNOWN_TYPE_${data.premium_type}`;
50
+ }
51
+
52
+ if ('purchased_flags' in data) {
53
+ /**
54
+ * Purchased state of the client user.
55
+ * @type {?PurchasedFlags}
56
+ */
57
+ this.purchasedFlags = new PurchasedFlags(data.purchased_flags || 0);
58
+ }
59
+
60
+ if ('premium_usage_flags' in data) {
61
+ /**
62
+ * Premium usage state of the client user.
63
+ * @type {?PremiumUsageFlags}
64
+ */
65
+ this.premiumUsageFlags = new PremiumUsageFlags(data.premium_usage_flags || 0);
66
+ }
67
+
68
+ if ('phone' in data) {
69
+ /**
70
+ * Phone number of the client user.
71
+ * @type {?string}
72
+ */
73
+ this.phoneNumber = data.phone;
74
+ }
75
+
76
+ if ('nsfw_allowed' in data) {
77
+ /**
78
+ * Whether or not the client user is allowed to send NSFW messages [iOS device].
79
+ * @type {?boolean}
80
+ */
81
+ this.nsfwAllowed = data.nsfw_allowed;
82
+ }
83
+
84
+ if ('email' in data) {
85
+ /**
86
+ * Email address of the client user.
87
+ * @type {?string}
88
+ */
89
+ this.emailAddress = data.email;
90
+ }
91
+
92
+ if ('bio' in data) {
93
+ this.bio = data.bio;
94
+ }
95
+
96
+ if ('pronouns' in data) {
97
+ this.pronouns = data.pronouns;
98
+ }
99
+
100
+ if (!this.friendNicknames?.size) {
101
+ /**
102
+ * The friend nicknames cache of the client user.
103
+ * @type {Collection<Snowflake, string>}
104
+ * @private
105
+ */
106
+ this.friendNicknames = new Collection();
107
+ }
108
+
109
+ if (!this._intervalSamsungPresence) {
110
+ this._intervalSamsungPresence = setInterval(() => {
111
+ this.client.emit('debug', `Samsung Presence: ${this._packageName}`);
112
+ if (!this._packageName) return;
113
+ this.setSamsungActivity(this._packageName, 'UPDATE');
114
+ }, 1000 * 60 * 10).unref();
115
+ // 20 minutes max
116
+ }
117
+ }
118
+
119
+ /**
120
+ * Patch note
121
+ * @param {Object} data Note data
122
+ * @private
123
+ */
124
+ _patchNote(data) {
125
+ /**
126
+ * The notes cache of the client user.
127
+ * @type {Collection<Snowflake, string>}
128
+ * @private
129
+ */
130
+ this.notes = data ? new Collection(Object.entries(data)) : new Collection();
131
+ }
132
+
133
+ /**
134
+ * Represents the client user's presence
135
+ * @type {ClientPresence}
136
+ * @readonly
137
+ */
138
+ get presence() {
139
+ return this.client.presence;
140
+ }
141
+
142
+ /**
143
+ * Data used to edit the logged in client
144
+ * @typedef {Object} ClientUserEditData
145
+ * @property {string} [username] The new username
146
+ * @property {?(BufferResolvable|Base64Resolvable)} [avatar] The new avatar
147
+ * @property {?(BufferResolvable|Base64Resolvable)} [banner] The new banner
148
+ * @property {?string} [bio] The new bio
149
+ */
150
+
151
+ /**
152
+ * Edits the logged in client.
153
+ * @param {ClientUserEditData} options The new data
154
+ * @returns {Promise<ClientUser>}
155
+ */
156
+ async edit(options = {}) {
157
+ const data = await this.client.api.users('@me').patch({ data: options });
158
+ this.client.token = data.token;
159
+ const { updated } = this.client.actions.UserUpdate.handle(data);
160
+ return updated ?? this;
161
+ }
162
+
163
+ /**
164
+ * Sets the username of the logged in client.
165
+ * <info>Changing usernames in Discord is heavily rate limited, with only 2 requests
166
+ * every hour. Use this sparingly!</info>
167
+ * @param {string} username The new username
168
+ * @param {string} password The password of the account
169
+ * @returns {Promise<ClientUser>}
170
+ * @example
171
+ * // Set username
172
+ * client.user.setUsername('discordjs')
173
+ * .then(user => console.log(`My new username is ${user.username}`))
174
+ * .catch(console.error);
175
+ */
176
+ setUsername(username, password) {
177
+ if (!password && !this.client.password) {
178
+ throw new Error('A password is required to change a username.');
179
+ }
180
+ return this.edit({
181
+ username,
182
+ password: this.client.password ? this.client.password : password,
183
+ });
184
+ }
185
+
186
+ /**
187
+ * Sets the avatar of the logged in client.
188
+ * @param {?(BufferResolvable|Base64Resolvable)} avatar The new avatar
189
+ * @returns {Promise<ClientUser>}
190
+ * @example
191
+ * // Set avatar
192
+ * client.user.setAvatar('./avatar.png')
193
+ * .then(user => console.log(`New avatar set!`))
194
+ * .catch(console.error);
195
+ */
196
+ async setAvatar(avatar) {
197
+ avatar = avatar && (await DataResolver.resolveImage(avatar));
198
+ return this.edit({ avatar });
199
+ }
200
+ /**
201
+ * Sets the banner of the logged in client.
202
+ * @param {?(BufferResolvable|Base64Resolvable)} banner The new banner
203
+ * @returns {Promise<ClientUser>}
204
+ * @example
205
+ * // Set banner
206
+ * client.user.setBanner('./banner.png')
207
+ * .then(user => console.log(`New banner set!`))
208
+ * .catch(console.error);
209
+ */
210
+ async setBanner(banner) {
211
+ if (this.nitroType !== 'NITRO_BOOST') {
212
+ throw new Error('You must be a Nitro Boosted User to change your banner.');
213
+ }
214
+ banner = banner && (await DataResolver.resolveImage(banner));
215
+ return this.edit({ banner });
216
+ }
217
+
218
+ /**
219
+ * Set HyperSquad House
220
+ * @param {HypeSquadType} type
221
+ * * `LEAVE`: 0
222
+ * * `HOUSE_BRAVERY`: 1
223
+ * * `HOUSE_BRILLIANCE`: 2
224
+ * * `HOUSE_BALANCE`: 3
225
+ * @returns {Promise<void>}
226
+ * @example
227
+ * // Set HyperSquad HOUSE_BRAVERY
228
+ * client.user.setHypeSquad(1); || client.user.setHypeSquad('HOUSE_BRAVERY');
229
+ * // Leave
230
+ * client.user.setHypeSquad(0);
231
+ */
232
+ async setHypeSquad(type) {
233
+ const id = typeof type === 'string' ? HypeSquadType[type] : type;
234
+ if (!id && id !== 0) throw new Error('Invalid HypeSquad type.');
235
+ if (id !== 0) {
236
+ const data = await this.client.api.hypesquad.online.post({
237
+ data: { house_id: id },
238
+ });
239
+ return data;
240
+ } else {
241
+ const data = await this.client.api.hypesquad.online.delete();
242
+ return data;
243
+ }
244
+ }
245
+
246
+ /**
247
+ * Set Accent color
248
+ * @param {ColorResolvable} color Color to set
249
+ * @returns {Promise<ClientUser>}
250
+ */
251
+ setAccentColor(color = null) {
252
+ return this.edit({ accent_color: color ? Util.resolveColor(color) : null });
253
+ }
254
+
255
+ /**
256
+ * Set discriminator
257
+ * @param {User.discriminator} discriminator It is #1234
258
+ * @param {string} password The password of the account
259
+ * @returns {Promise<ClientUser>}
260
+ */
261
+ setDiscriminator(discriminator, password) {
262
+ if (this.nitroType == 'NONE') throw new Error('You must be a Nitro User to change your discriminator.');
263
+ if (!password && !this.client.password) {
264
+ throw new Error('A password is required to change a discriminator.');
265
+ }
266
+ return this.edit({
267
+ discriminator,
268
+ username: this.username,
269
+ password: this.client.password ? this.client.password : password,
270
+ });
271
+ }
272
+
273
+ /**
274
+ * Set About me
275
+ * @param {string | null} bio Bio to set
276
+ * @returns {Promise<ClientUser>}
277
+ */
278
+ setAboutMe(bio = null) {
279
+ return this.edit({
280
+ bio,
281
+ });
282
+ }
283
+
284
+ /**
285
+ * Change the email
286
+ * @param {Email<string>} email Email to change
287
+ * @param {string} password Password of the account
288
+ * @returns {Promise<ClientUser>}
289
+ */
290
+ setEmail(email, password) {
291
+ throw new Error('This method is not available yet. Please use the official Discord client to change your email.');
292
+ // eslint-disable-next-line no-unreachable
293
+ if (!password && !this.client.password) {
294
+ throw new Error('A password is required to change a email.');
295
+ }
296
+ return this.edit({
297
+ email,
298
+ password: this.client.password ? this.client.password : password,
299
+ });
300
+ }
301
+
302
+ /**
303
+ * Set new password
304
+ * @param {string} oldPassword Old password
305
+ * @param {string} newPassword New password to set
306
+ * @returns {Promise<ClientUser>}
307
+ */
308
+ setPassword(oldPassword, newPassword) {
309
+ if (!oldPassword && !this.client.password) {
310
+ throw new Error('A password is required to change a password.');
311
+ }
312
+ if (!newPassword) throw new Error('New password is required.');
313
+ return this.edit({
314
+ password: this.client.password ? this.client.password : oldPassword,
315
+ new_password: newPassword,
316
+ });
317
+ }
318
+
319
+ /**
320
+ * Disable account
321
+ * @param {string} password Password of the account
322
+ * @returns {Promise<ClientUser>}
323
+ */
324
+ async disableAccount(password) {
325
+ if (!password && !this.client.password) {
326
+ throw new Error('A password is required to disable an account.');
327
+ }
328
+ const data = await this.client.api.users['@me'].disable.post({
329
+ data: {
330
+ password: this.client.password ? this.client.password : password,
331
+ },
332
+ });
333
+ return data;
334
+ }
335
+
336
+ /**
337
+ * Set selfdeaf (Global)
338
+ * @param {boolean} status Whether or not the ClientUser is deafened
339
+ * @returns {boolean}
340
+ */
341
+ setDeaf(status) {
342
+ if (typeof status !== 'boolean') throw new Error('Deaf status must be a boolean.');
343
+ this.client.ws.broadcast({
344
+ op: Opcodes.VOICE_STATE_UPDATE,
345
+ d: { self_deaf: status },
346
+ });
347
+ return status;
348
+ }
349
+
350
+ /**
351
+ * Set selfmute (Global)
352
+ * @param {boolean} status Whether or not the ClientUser is muted
353
+ * @returns {boolean}
354
+ */
355
+ setMute(status) {
356
+ if (typeof status !== 'boolean') throw new Error('Mute status must be a boolean.');
357
+ this.client.ws.broadcast({
358
+ op: Opcodes.VOICE_STATE_UPDATE,
359
+ d: { self_mute: status },
360
+ });
361
+ return status;
362
+ }
363
+
364
+ /**
365
+ * Delete account. Warning: Cannot be changed once used!
366
+ * @param {string} password Password of the account
367
+ * @returns {Promise<ClientUser>}
368
+ */
369
+ async deleteAccount(password) {
370
+ if (!password && !this.client.password) {
371
+ throw new Error('A password is required to delete an account.');
372
+ }
373
+ const data = await this.client.api.users['@me/delete'].post({
374
+ data: {
375
+ password: this.client.password ? this.client.password : password,
376
+ },
377
+ });
378
+ return data;
379
+ }
380
+
381
+ /**
382
+ * Options for setting activities
383
+ * @typedef {Object} ActivitiesOptions
384
+ * @property {string} name Name of the activity
385
+ * @property {string} [state] State of the activity
386
+ * @property {ActivityType|number} [type] Type of the activity
387
+ * @property {string} [url] Twitch / YouTube stream URL
388
+ */
389
+
390
+ /**
391
+ * Data resembling a raw Discord presence.
392
+ * @typedef {Object} PresenceData
393
+ * @property {PresenceStatusData} [status] Status of the user
394
+ * @property {boolean} [afk] Whether the user is AFK
395
+ * @property {ActivitiesOptions[]|CustomStatus[]|RichPresence[]|SpotifyRPC[]} [activities] Activity the user is playing
396
+ * @property {number|number[]} [shardId] Shard id(s) to have the activity set on
397
+ */
398
+
399
+ /**
400
+ * Sets the full presence of the client user.
401
+ * @param {PresenceData} data Data for the presence
402
+ * @returns {ClientPresence}
403
+ * @example
404
+ * // Set the client user's presence
405
+ * client.user.setPresence({ activities: [{ name: 'with discord.js' }], status: 'idle' });
406
+ * @see {@link https://github.com/aiko-chan-ai/discord.js-selfbot-v13/blob/main/Document/RichPresence.md}
407
+ */
408
+ setPresence(data) {
409
+ return this.client.presence.set(data);
410
+ }
411
+
412
+ /**
413
+ * A user's status. Must be one of:
414
+ * * `online`
415
+ * * `idle`
416
+ * * `invisible`
417
+ * * `dnd` (do not disturb)
418
+ * @typedef {string} PresenceStatusData
419
+ */
420
+
421
+ /**
422
+ * Sets the status of the client user.
423
+ * @param {PresenceStatusData} status Status to change to
424
+ * @param {number|number[]} [shardId] Shard id(s) to have the activity set on
425
+ * @returns {ClientPresence}
426
+ * @example
427
+ * // Set the client user's status
428
+ * client.user.setStatus('idle');
429
+ */
430
+ setStatus(status, shardId) {
431
+ return this.setPresence({ status, shardId });
432
+ }
433
+
434
+ /**
435
+ * Options for setting an activity.
436
+ * @typedef {Object} ActivityOptions
437
+ * @property {string} name Name of the activity
438
+ * @property {string} [url] Twitch / YouTube stream URL
439
+ * @property {ActivityType|number} [type] Type of the activity
440
+ * @property {number|number[]} [shardId] Shard Id(s) to have the activity set on
441
+ */
442
+
443
+ /**
444
+ * Sets the activity the client user is playing.
445
+ * @param {string|ActivityOptions} name Activity being played, or options for setting the activity
446
+ * @param {ActivityOptions} [options] Options for setting the activity
447
+ * @returns {ClientPresence}
448
+ * @example
449
+ * // Set the client user's activity
450
+ * client.user.setActivity('discord.js', { type: 'WATCHING' });
451
+ * @see {@link https://github.com/aiko-chan-ai/discord.js-selfbot-v13/blob/main/Document/RichPresence.md}
452
+ */
453
+ setActivity(name, options = {}) {
454
+ if (!name) {
455
+ return this.setPresence({ activities: [], shardId: options.shardId });
456
+ }
457
+
458
+ const activity = Object.assign({}, options, typeof name === 'object' ? name : { name });
459
+ return this.setPresence({
460
+ activities: [activity],
461
+ shardId: activity.shardId,
462
+ });
463
+ }
464
+
465
+ /**
466
+ * Sets/removes the AFK flag for the client user.
467
+ * @param {boolean} [afk=true] Whether or not the user is AFK
468
+ * @param {number|number[]} [shardId] Shard Id(s) to have the AFK flag set on
469
+ * @returns {ClientPresence}
470
+ */
471
+ setAFK(afk = true, shardId) {
472
+ return this.setPresence({ afk, shardId });
473
+ }
474
+
475
+ /**
476
+ * Create an invite [Friend Invites]
477
+ * maxAge: 604800 | maxUses: 1
478
+ * @returns {Promise<Invite>}
479
+ * @see {@link https://github.com/13-05/hidden-disc-docs#js-snippet-for-creating-friend-invites}
480
+ * @example
481
+ * // Options not working
482
+ * client.user.createFriendInvite();
483
+ * .then(console.log)
484
+ * .catch(console.error);
485
+ */
486
+ async createFriendInvite() {
487
+ const data = await this.client.api.users['@me'].invites.post({
488
+ data: {},
489
+ });
490
+ return new Invite(this.client, data);
491
+ }
492
+
493
+ /**
494
+ * Get all friend invites
495
+ * @returns {Promise<Collection<string, Invite>>}
496
+ */
497
+ async getAllFriendInvites() {
498
+ const data = await this.client.api.users['@me'].invites.get();
499
+ const collection = new Collection();
500
+ for (const invite of data) {
501
+ collection.set(invite.code, new Invite(this.client, invite));
502
+ }
503
+ return collection;
504
+ }
505
+
506
+ /**
507
+ * Revoke all friend invites
508
+ * @returns {Promise<Collection<string, Invite>>}
509
+ */
510
+ async revokeAllFriendInvites() {
511
+ const data = await this.client.api.users['@me'].invites.delete();
512
+ const collection = new Collection();
513
+ for (const invite of data) {
514
+ collection.set(invite.code, new Invite(this.client, invite));
515
+ }
516
+ return collection;
517
+ }
518
+
519
+ /**
520
+ * Get a collection of messages mentioning clientUser
521
+ * @param {number} [limit=25] Maximum number of messages to get
522
+ * @param {boolean} [mentionRoles=true] Whether or not to mention roles
523
+ * @param {boolean} [mentionEveryone=true] Whether or not to mention `@everyone`
524
+ * @returns {Promise<Collection<Snowflake, Message>>}
525
+ */
526
+ async getMentions(limit = 25, mentionRoles = true, mentionEveryone = true) {
527
+ // https://canary.discord.com/api/v9/users/@me/mentions?limit=25&roles=true&everyone=true
528
+ const data = await this.client.api.users['@me'].mentions.get({
529
+ query: {
530
+ limit,
531
+ roles: mentionRoles,
532
+ everyone: mentionEveryone,
533
+ },
534
+ });
535
+ const collection = new Collection();
536
+ for (const msg of data) {
537
+ collection.set(msg.id, new Message(this.client, msg));
538
+ }
539
+ return collection;
540
+ }
541
+
542
+ /**
543
+ * Change Theme color
544
+ * @param {ColorResolvable} primary The primary color of the user's profile
545
+ * @param {ColorResolvable} accent The accent color of the user's profile
546
+ * @returns {Promise<ClientUser>}
547
+ */
548
+ async setThemeColors(primary, accent) {
549
+ if (!primary || !accent) throw new Error('PRIMARY_COLOR or ACCENT_COLOR are required.');
550
+ // Check nitro
551
+ if (this.nitroType !== 'NITRO_BOOST') {
552
+ throw new Error_('NITRO_BOOST_REQUIRED', 'themeColors');
553
+ }
554
+ primary = Util.resolveColor(primary) || this.themeColors[0];
555
+ accent = Util.resolveColor(accent) || this.themeColors[1];
556
+ const data_ = await this.client.api.users['@me'].profile.patch({
557
+ data: {
558
+ theme_colors: [primary, accent],
559
+ },
560
+ });
561
+ this._ProfilePatch({
562
+ user_profile: data_,
563
+ });
564
+ return this;
565
+ }
566
+
567
+ /**
568
+ * Sets Discord Playing status to "Playing on Samsung Galaxy". Only selected gamss from discords database works
569
+ * @param {string} packageName Android package name
570
+ * @param {?string} type Must be START, UPDATE, or STOP
571
+ * @returns {Promise<ClientUser>}
572
+ * @example
573
+ * // Set the client user's status
574
+ * client.user.setSamsungActivity('com.YostarJP.BlueArchive', 'START');
575
+ * // Update
576
+ * client.user.setSamsungActivity('com.miHoYo.bh3oversea', 'UPDATE');
577
+ * // Stop
578
+ * client.user.setSamsungActivity('com.miHoYo.GenshinImpact', 'STOP');
579
+ */
580
+ async setSamsungActivity(packageName, type = 'START') {
581
+ type = type.toUpperCase();
582
+ if (!packageName || typeof packageName !== 'string') throw new Error('Package name is required.');
583
+ if (!['START', 'UPDATE', 'STOP'].includes(type)) throw new Error('Invalid type (Must be START, UPDATE, or STOP)');
584
+ await this.client.api.presences.post({
585
+ data: {
586
+ package_name: packageName,
587
+ update: type,
588
+ },
589
+ });
590
+ if (type !== 'STOP') this._packageName = packageName;
591
+ else this._packageName = null;
592
+ return this;
593
+ }
594
+
595
+ /**
596
+ * Stop ringing
597
+ * @param {ChannelResolvable} channel DMChannel | GroupDMChannel
598
+ * @returns {Promise<void>}
599
+ */
600
+ stopRinging(channel) {
601
+ const id = this.client.channels.resolveId(channel);
602
+ if (!channel) return false;
603
+ return this.client.api.channels(id).call['stop-ringing'].post({
604
+ data: {},
605
+ });
606
+ }
607
+
608
+ /**
609
+ * Super Reactions
610
+ * @returns {Promise<number>}
611
+ */
612
+ fetchBurstCredit() {
613
+ return this.client.api.users['@me']['burst-credits'].get().then(d => d.amount);
614
+ }
615
+
616
+ /**
617
+ * Set global display name
618
+ * @param {string} globalName The new display name
619
+ * @returns {Promise<ClientUser>}
620
+ */
621
+ setGlobalName(globalName = '') {
622
+ return this.edit({ global_name: globalName });
623
+ }
624
+
625
+ /**
626
+ * Set pronouns
627
+ * @param {?string} pronouns Your pronouns
628
+ * @returns {Promise<ClientUser>}
629
+ */
630
+ setPronouns(pronouns = '') {
631
+ return this.edit({ pronouns });
632
+ }
633
+ }
634
+
635
+ module.exports = ClientUser;
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ const BaseCommandInteraction = require('./BaseCommandInteraction');
4
+ const CommandInteractionOptionResolver = require('./CommandInteractionOptionResolver');
5
+
6
+ /**
7
+ * Represents a command interaction.
8
+ * @extends {BaseCommandInteraction}
9
+ */
10
+ class CommandInteraction extends BaseCommandInteraction {
11
+ constructor(client, data) {
12
+ super(client, data);
13
+
14
+ /**
15
+ * The options passed to the command.
16
+ * @type {CommandInteractionOptionResolver}
17
+ */
18
+ this.options = new CommandInteractionOptionResolver(
19
+ this.client,
20
+ data.data.options?.map(option => this.transformOption(option, data.data.resolved)) ?? [],
21
+ this.transformResolved(data.data.resolved ?? {}),
22
+ );
23
+ }
24
+
25
+ /**
26
+ * Returns a string representation of the command interaction.
27
+ * This can then be copied by a user and executed again in a new command while keeping the option order.
28
+ * @returns {string}
29
+ */
30
+ toString() {
31
+ const properties = [
32
+ this.commandName,
33
+ this.options._group,
34
+ this.options._subcommand,
35
+ ...this.options._hoistedOptions.map(o => `${o.name}:${o.value}`),
36
+ ];
37
+ return `/${properties.filter(Boolean).join(' ')}`;
38
+ }
39
+ }
40
+
41
+ module.exports = CommandInteraction;