discord.js-selfbott-v14 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +136 -0
  3. package/package.json +107 -0
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +87 -0
  6. package/src/client/Client.js +1119 -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 +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 +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 +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 +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_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 +171 -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 +227 -0
  160. package/src/errors/index.js +4 -0
  161. package/src/index.js +189 -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 +502 -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 +132 -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 +193 -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 +83 -0
  229. package/src/structures/Channel.js +271 -0
  230. package/src/structures/ClientApplication.js +204 -0
  231. package/src/structures/ClientPresence.js +84 -0
  232. package/src/structures/ClientUser.js +634 -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 +280 -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 +454 -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 +193 -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 +433 -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 +515 -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 +737 -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 +327 -0
  305. package/src/structures/WebEmbed.js +387 -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/BitField.js +170 -0
  318. package/src/util/ChannelFlags.js +45 -0
  319. package/src/util/Constants.js +1938 -0
  320. package/src/util/DataResolver.js +145 -0
  321. package/src/util/Formatters.js +214 -0
  322. package/src/util/GuildMemberFlags.js +43 -0
  323. package/src/util/Intents.js +74 -0
  324. package/src/util/LimitedCollection.js +131 -0
  325. package/src/util/MessageFlags.js +54 -0
  326. package/src/util/Options.js +363 -0
  327. package/src/util/Permissions.js +187 -0
  328. package/src/util/PremiumUsageFlags.js +31 -0
  329. package/src/util/PurchasedFlags.js +31 -0
  330. package/src/util/RemoteAuth.js +514 -0
  331. package/src/util/SnowflakeUtil.js +92 -0
  332. package/src/util/Sweepers.js +466 -0
  333. package/src/util/SystemChannelFlags.js +55 -0
  334. package/src/util/ThreadMemberFlags.js +30 -0
  335. package/src/util/UserFlags.js +104 -0
  336. package/src/util/Util.js +853 -0
  337. package/src/util/Voice.js +1456 -0
  338. package/src/util/arRPC/index.js +229 -0
  339. package/src/util/arRPC/process/detectable.json +1 -0
  340. package/src/util/arRPC/process/index.js +102 -0
  341. package/src/util/arRPC/process/native/index.js +5 -0
  342. package/src/util/arRPC/process/native/linux.js +37 -0
  343. package/src/util/arRPC/process/native/win32.js +25 -0
  344. package/src/util/arRPC/transports/ipc.js +281 -0
  345. package/src/util/arRPC/transports/websocket.js +128 -0
  346. package/typings/enums.d.ts +346 -0
  347. package/typings/index.d.ts +7742 -0
  348. package/typings/index.test-d.ts +0 -0
  349. package/typings/rawDataTypes.d.ts +283 -0
@@ -0,0 +1,634 @@
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 {ActivityType|number} [type] Type of the activity
386
+ * @property {string} [url] Twitch / YouTube stream URL
387
+ */
388
+
389
+ /**
390
+ * Data resembling a raw Discord presence.
391
+ * @typedef {Object} PresenceData
392
+ * @property {PresenceStatusData} [status] Status of the user
393
+ * @property {boolean} [afk] Whether the user is AFK
394
+ * @property {ActivitiesOptions[]|CustomStatus[]|RichPresence[]|SpotifyRPC[]} [activities] Activity the user is playing
395
+ * @property {number|number[]} [shardId] Shard id(s) to have the activity set on
396
+ */
397
+
398
+ /**
399
+ * Sets the full presence of the client user.
400
+ * @param {PresenceData} data Data for the presence
401
+ * @returns {ClientPresence}
402
+ * @example
403
+ * // Set the client user's presence
404
+ * client.user.setPresence({ activities: [{ name: 'with discord.js' }], status: 'idle' });
405
+ * @see {@link https://github.com/aiko-chan-ai/discord.js-selfbot-v13/blob/main/Document/RichPresence.md}
406
+ */
407
+ setPresence(data) {
408
+ return this.client.presence.set(data);
409
+ }
410
+
411
+ /**
412
+ * A user's status. Must be one of:
413
+ * * `online`
414
+ * * `idle`
415
+ * * `invisible`
416
+ * * `dnd` (do not disturb)
417
+ * @typedef {string} PresenceStatusData
418
+ */
419
+
420
+ /**
421
+ * Sets the status of the client user.
422
+ * @param {PresenceStatusData} status Status to change to
423
+ * @param {number|number[]} [shardId] Shard id(s) to have the activity set on
424
+ * @returns {ClientPresence}
425
+ * @example
426
+ * // Set the client user's status
427
+ * client.user.setStatus('idle');
428
+ */
429
+ setStatus(status, shardId) {
430
+ return this.setPresence({ status, shardId });
431
+ }
432
+
433
+ /**
434
+ * Options for setting an activity.
435
+ * @typedef {Object} ActivityOptions
436
+ * @property {string} [name] Name of the activity
437
+ * @property {string} [url] Twitch / YouTube stream URL
438
+ * @property {ActivityType|number} [type] Type of the activity
439
+ * @property {number|number[]} [shardId] Shard Id(s) to have the activity set on
440
+ */
441
+
442
+ /**
443
+ * Sets the activity the client user is playing.
444
+ * @param {string|ActivityOptions} [name] Activity being played, or options for setting the activity
445
+ * @param {ActivityOptions} [options] Options for setting the activity
446
+ * @returns {ClientPresence}
447
+ * @example
448
+ * // Set the client user's activity
449
+ * client.user.setActivity('discord.js', { type: 'WATCHING' });
450
+ * @see {@link https://github.com/aiko-chan-ai/discord.js-selfbot-v13/blob/main/Document/RichPresence.md}
451
+ */
452
+ setActivity(name, options = {}) {
453
+ if (!name) {
454
+ return this.setPresence({ activities: [], shardId: options.shardId });
455
+ }
456
+
457
+ const activity = Object.assign({}, options, typeof name === 'object' ? name : { name });
458
+ return this.setPresence({
459
+ activities: [activity],
460
+ shardId: activity.shardId,
461
+ });
462
+ }
463
+
464
+ /**
465
+ * Sets/removes the AFK flag for the client user.
466
+ * @param {boolean} [afk=true] Whether or not the user is AFK
467
+ * @param {number|number[]} [shardId] Shard Id(s) to have the AFK flag set on
468
+ * @returns {ClientPresence}
469
+ */
470
+ setAFK(afk = true, shardId) {
471
+ return this.setPresence({ afk, shardId });
472
+ }
473
+
474
+ /**
475
+ * Create an invite [Friend Invites]
476
+ * maxAge: 604800 | maxUses: 1
477
+ * @returns {Promise<Invite>}
478
+ * @see {@link https://github.com/13-05/hidden-disc-docs#js-snippet-for-creating-friend-invites}
479
+ * @example
480
+ * // Options not working
481
+ * client.user.createFriendInvite();
482
+ * .then(console.log)
483
+ * .catch(console.error);
484
+ */
485
+ async createFriendInvite() {
486
+ const data = await this.client.api.users['@me'].invites.post({
487
+ data: {},
488
+ });
489
+ return new Invite(this.client, data);
490
+ }
491
+
492
+ /**
493
+ * Get all friend invites
494
+ * @returns {Promise<Collection<string, Invite>>}
495
+ */
496
+ async getAllFriendInvites() {
497
+ const data = await this.client.api.users['@me'].invites.get();
498
+ const collection = new Collection();
499
+ for (const invite of data) {
500
+ collection.set(invite.code, new Invite(this.client, invite));
501
+ }
502
+ return collection;
503
+ }
504
+
505
+ /**
506
+ * Revoke all friend invites
507
+ * @returns {Promise<Collection<string, Invite>>}
508
+ */
509
+ async revokeAllFriendInvites() {
510
+ const data = await this.client.api.users['@me'].invites.delete();
511
+ const collection = new Collection();
512
+ for (const invite of data) {
513
+ collection.set(invite.code, new Invite(this.client, invite));
514
+ }
515
+ return collection;
516
+ }
517
+
518
+ /**
519
+ * Get a collection of messages mentioning clientUser
520
+ * @param {number} [limit=25] Maximum number of messages to get
521
+ * @param {boolean} [mentionRoles=true] Whether or not to mention roles
522
+ * @param {boolean} [mentionEveryone=true] Whether or not to mention `@everyone`
523
+ * @returns {Promise<Collection<Snowflake, Message>>}
524
+ */
525
+ async getMentions(limit = 25, mentionRoles = true, mentionEveryone = true) {
526
+ // https://canary.discord.com/api/v9/users/@me/mentions?limit=25&roles=true&everyone=true
527
+ const data = await this.client.api.users['@me'].mentions.get({
528
+ query: {
529
+ limit,
530
+ roles: mentionRoles,
531
+ everyone: mentionEveryone,
532
+ },
533
+ });
534
+ const collection = new Collection();
535
+ for (const msg of data) {
536
+ collection.set(msg.id, new Message(this.client, msg));
537
+ }
538
+ return collection;
539
+ }
540
+
541
+ /**
542
+ * Change Theme color
543
+ * @param {ColorResolvable} primary The primary color of the user's profile
544
+ * @param {ColorResolvable} accent The accent color of the user's profile
545
+ * @returns {Promise<ClientUser>}
546
+ */
547
+ async setThemeColors(primary, accent) {
548
+ if (!primary || !accent) throw new Error('PRIMARY_COLOR or ACCENT_COLOR are required.');
549
+ // Check nitro
550
+ if (this.nitroType !== 'NITRO_BOOST') {
551
+ throw new Error_('NITRO_BOOST_REQUIRED', 'themeColors');
552
+ }
553
+ primary = Util.resolveColor(primary) || this.themeColors[0];
554
+ accent = Util.resolveColor(accent) || this.themeColors[1];
555
+ const data_ = await this.client.api.users['@me'].profile.patch({
556
+ data: {
557
+ theme_colors: [primary, accent],
558
+ },
559
+ });
560
+ this._ProfilePatch({
561
+ user_profile: data_,
562
+ });
563
+ return this;
564
+ }
565
+
566
+ /**
567
+ * Sets Discord Playing status to "Playing on Samsung Galaxy". Only selected gamss from discords database works
568
+ * @param {string} packageName Android package name
569
+ * @param {?string} type Must be START, UPDATE, or STOP
570
+ * @returns {Promise<ClientUser>}
571
+ * @example
572
+ * // Set the client user's status
573
+ * client.user.setSamsungActivity('com.YostarJP.BlueArchive', 'START');
574
+ * // Update
575
+ * client.user.setSamsungActivity('com.miHoYo.bh3oversea', 'UPDATE');
576
+ * // Stop
577
+ * client.user.setSamsungActivity('com.miHoYo.GenshinImpact', 'STOP');
578
+ */
579
+ async setSamsungActivity(packageName, type = 'START') {
580
+ type = type.toUpperCase();
581
+ if (!packageName || typeof packageName !== 'string') throw new Error('Package name is required.');
582
+ if (!['START', 'UPDATE', 'STOP'].includes(type)) throw new Error('Invalid type (Must be START, UPDATE, or STOP)');
583
+ await this.client.api.presences.post({
584
+ data: {
585
+ package_name: packageName,
586
+ update: type,
587
+ },
588
+ });
589
+ if (type !== 'STOP') this._packageName = packageName;
590
+ else this._packageName = null;
591
+ return this;
592
+ }
593
+
594
+ /**
595
+ * Stop ringing
596
+ * @param {ChannelResolvable} channel DMChannel | GroupDMChannel
597
+ * @returns {Promise<void>}
598
+ */
599
+ stopRinging(channel) {
600
+ const id = this.client.channels.resolveId(channel);
601
+ if (!channel) return false;
602
+ return this.client.api.channels(id).call['stop-ringing'].post({
603
+ data: {},
604
+ });
605
+ }
606
+
607
+ /**
608
+ * Super Reactions
609
+ * @returns {Promise<number>}
610
+ */
611
+ fetchBurstCredit() {
612
+ return this.client.api.users['@me']['burst-credits'].get().then(d => d.amount);
613
+ }
614
+
615
+ /**
616
+ * Set global display name
617
+ * @param {string} globalName The new display name
618
+ * @returns {Promise<ClientUser>}
619
+ */
620
+ setGlobalName(globalName = '') {
621
+ return this.edit({ global_name: globalName });
622
+ }
623
+
624
+ /**
625
+ * Set pronouns
626
+ * @param {?string} pronouns Your pronouns
627
+ * @returns {Promise<ClientUser>}
628
+ */
629
+ setPronouns(pronouns = '') {
630
+ return this.edit({ pronouns });
631
+ }
632
+ }
633
+
634
+ 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;