discord.js-selfbots-v13 0.0.1-security → 3.3.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.

Potentially problematic release.


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

Files changed (343) 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 +172 -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 +190 -0
  155. package/src/main.js +1 -0
  156. package/src/managers/ApplicationCommandManager.js +267 -0
  157. package/src/managers/ApplicationCommandPermissionsManager.js +425 -0
  158. package/src/managers/AutoModerationRuleManager.js +296 -0
  159. package/src/managers/BaseGuildEmojiManager.js +80 -0
  160. package/src/managers/BaseManager.js +19 -0
  161. package/src/managers/BillingManager.js +66 -0
  162. package/src/managers/CachedManager.js +71 -0
  163. package/src/managers/ChannelManager.js +139 -0
  164. package/src/managers/ClientUserSettingManager.js +490 -0
  165. package/src/managers/DataManager.js +61 -0
  166. package/src/managers/DeveloperPortalManager.js +104 -0
  167. package/src/managers/GuildApplicationCommandManager.js +28 -0
  168. package/src/managers/GuildBanManager.js +204 -0
  169. package/src/managers/GuildChannelManager.js +502 -0
  170. package/src/managers/GuildEmojiManager.js +171 -0
  171. package/src/managers/GuildEmojiRoleManager.js +118 -0
  172. package/src/managers/GuildFolderManager.js +24 -0
  173. package/src/managers/GuildForumThreadManager.js +114 -0
  174. package/src/managers/GuildInviteManager.js +213 -0
  175. package/src/managers/GuildManager.js +304 -0
  176. package/src/managers/GuildMemberManager.js +724 -0
  177. package/src/managers/GuildMemberRoleManager.js +191 -0
  178. package/src/managers/GuildScheduledEventManager.js +296 -0
  179. package/src/managers/GuildSettingManager.js +148 -0
  180. package/src/managers/GuildStickerManager.js +179 -0
  181. package/src/managers/GuildTextThreadManager.js +98 -0
  182. package/src/managers/InteractionManager.js +39 -0
  183. package/src/managers/MessageManager.js +393 -0
  184. package/src/managers/PermissionOverwriteManager.js +166 -0
  185. package/src/managers/PresenceManager.js +58 -0
  186. package/src/managers/ReactionManager.js +67 -0
  187. package/src/managers/ReactionUserManager.js +71 -0
  188. package/src/managers/RelationshipManager.js +258 -0
  189. package/src/managers/RoleManager.js +352 -0
  190. package/src/managers/SessionManager.js +57 -0
  191. package/src/managers/StageInstanceManager.js +162 -0
  192. package/src/managers/ThreadManager.js +207 -0
  193. package/src/managers/ThreadMemberManager.js +186 -0
  194. package/src/managers/UserManager.js +150 -0
  195. package/src/managers/VoiceStateManager.js +37 -0
  196. package/src/rest/APIRequest.js +136 -0
  197. package/src/rest/APIRouter.js +53 -0
  198. package/src/rest/CaptchaSolver.js +78 -0
  199. package/src/rest/DiscordAPIError.js +103 -0
  200. package/src/rest/HTTPError.js +62 -0
  201. package/src/rest/RESTManager.js +81 -0
  202. package/src/rest/RateLimitError.js +55 -0
  203. package/src/rest/RequestHandler.js +446 -0
  204. package/src/sharding/Shard.js +443 -0
  205. package/src/sharding/ShardClientUtil.js +275 -0
  206. package/src/sharding/ShardingManager.js +318 -0
  207. package/src/structures/AnonymousGuild.js +98 -0
  208. package/src/structures/ApplicationCommand.js +1028 -0
  209. package/src/structures/ApplicationRoleConnectionMetadata.js +45 -0
  210. package/src/structures/AutoModerationActionExecution.js +89 -0
  211. package/src/structures/AutoModerationRule.js +294 -0
  212. package/src/structures/AutocompleteInteraction.js +106 -0
  213. package/src/structures/Base.js +43 -0
  214. package/src/structures/BaseCommandInteraction.js +211 -0
  215. package/src/structures/BaseGuild.js +116 -0
  216. package/src/structures/BaseGuildEmoji.js +56 -0
  217. package/src/structures/BaseGuildTextChannel.js +193 -0
  218. package/src/structures/BaseGuildVoiceChannel.js +243 -0
  219. package/src/structures/BaseMessageComponent.js +114 -0
  220. package/src/structures/ButtonInteraction.js +11 -0
  221. package/src/structures/Call.js +58 -0
  222. package/src/structures/CategoryChannel.js +83 -0
  223. package/src/structures/Channel.js +271 -0
  224. package/src/structures/ClientApplication.js +204 -0
  225. package/src/structures/ClientPresence.js +84 -0
  226. package/src/structures/ClientUser.js +624 -0
  227. package/src/structures/CommandInteraction.js +41 -0
  228. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  229. package/src/structures/ContextMenuInteraction.js +65 -0
  230. package/src/structures/DMChannel.js +280 -0
  231. package/src/structures/DeveloperPortalApplication.js +520 -0
  232. package/src/structures/DirectoryChannel.js +20 -0
  233. package/src/structures/Emoji.js +148 -0
  234. package/src/structures/ForumChannel.js +271 -0
  235. package/src/structures/Guild.js +1744 -0
  236. package/src/structures/GuildAuditLogs.js +734 -0
  237. package/src/structures/GuildBan.js +59 -0
  238. package/src/structures/GuildBoost.js +108 -0
  239. package/src/structures/GuildChannel.js +454 -0
  240. package/src/structures/GuildEmoji.js +161 -0
  241. package/src/structures/GuildFolder.js +75 -0
  242. package/src/structures/GuildMember.js +686 -0
  243. package/src/structures/GuildPreview.js +191 -0
  244. package/src/structures/GuildPreviewEmoji.js +27 -0
  245. package/src/structures/GuildScheduledEvent.js +441 -0
  246. package/src/structures/GuildTemplate.js +236 -0
  247. package/src/structures/Integration.js +188 -0
  248. package/src/structures/IntegrationApplication.js +96 -0
  249. package/src/structures/Interaction.js +351 -0
  250. package/src/structures/InteractionCollector.js +248 -0
  251. package/src/structures/InteractionResponse.js +114 -0
  252. package/src/structures/InteractionWebhook.js +43 -0
  253. package/src/structures/Invite.js +375 -0
  254. package/src/structures/InviteGuild.js +23 -0
  255. package/src/structures/InviteStageInstance.js +86 -0
  256. package/src/structures/Message.js +1188 -0
  257. package/src/structures/MessageActionRow.js +103 -0
  258. package/src/structures/MessageAttachment.js +193 -0
  259. package/src/structures/MessageButton.js +231 -0
  260. package/src/structures/MessageCollector.js +146 -0
  261. package/src/structures/MessageComponentInteraction.js +120 -0
  262. package/src/structures/MessageContextMenuInteraction.js +20 -0
  263. package/src/structures/MessageEmbed.js +586 -0
  264. package/src/structures/MessageMentions.js +272 -0
  265. package/src/structures/MessagePayload.js +358 -0
  266. package/src/structures/MessageReaction.js +171 -0
  267. package/src/structures/MessageSelectMenu.js +391 -0
  268. package/src/structures/Modal.js +279 -0
  269. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  270. package/src/structures/ModalSubmitInteraction.js +119 -0
  271. package/src/structures/NewsChannel.js +32 -0
  272. package/src/structures/OAuth2Guild.js +28 -0
  273. package/src/structures/PartialGroupDMChannel.js +430 -0
  274. package/src/structures/PermissionOverwrites.js +196 -0
  275. package/src/structures/Presence.js +441 -0
  276. package/src/structures/ReactionCollector.js +229 -0
  277. package/src/structures/ReactionEmoji.js +31 -0
  278. package/src/structures/RichPresence.js +722 -0
  279. package/src/structures/Role.js +515 -0
  280. package/src/structures/SelectMenuInteraction.js +170 -0
  281. package/src/structures/Session.js +81 -0
  282. package/src/structures/StageChannel.js +104 -0
  283. package/src/structures/StageInstance.js +208 -0
  284. package/src/structures/Sticker.js +310 -0
  285. package/src/structures/StickerPack.js +95 -0
  286. package/src/structures/StoreChannel.js +56 -0
  287. package/src/structures/Team.js +167 -0
  288. package/src/structures/TeamMember.js +71 -0
  289. package/src/structures/TextChannel.js +33 -0
  290. package/src/structures/TextInputComponent.js +201 -0
  291. package/src/structures/ThreadChannel.js +626 -0
  292. package/src/structures/ThreadMember.js +105 -0
  293. package/src/structures/Typing.js +74 -0
  294. package/src/structures/User.js +697 -0
  295. package/src/structures/UserContextMenuInteraction.js +29 -0
  296. package/src/structures/VoiceChannel.js +110 -0
  297. package/src/structures/VoiceRegion.js +53 -0
  298. package/src/structures/VoiceState.js +306 -0
  299. package/src/structures/WebEmbed.js +401 -0
  300. package/src/structures/Webhook.js +461 -0
  301. package/src/structures/WelcomeChannel.js +60 -0
  302. package/src/structures/WelcomeScreen.js +48 -0
  303. package/src/structures/Widget.js +87 -0
  304. package/src/structures/WidgetMember.js +99 -0
  305. package/src/structures/interfaces/Application.js +190 -0
  306. package/src/structures/interfaces/Collector.js +300 -0
  307. package/src/structures/interfaces/InteractionResponses.js +313 -0
  308. package/src/structures/interfaces/TextBasedChannel.js +566 -0
  309. package/src/util/ActivityFlags.js +44 -0
  310. package/src/util/ApplicationFlags.js +74 -0
  311. package/src/util/BitField.js +170 -0
  312. package/src/util/ChannelFlags.js +45 -0
  313. package/src/util/Constants.js +1917 -0
  314. package/src/util/DataResolver.js +145 -0
  315. package/src/util/Formatters.js +214 -0
  316. package/src/util/GuildMemberFlags.js +43 -0
  317. package/src/util/Intents.js +74 -0
  318. package/src/util/LimitedCollection.js +131 -0
  319. package/src/util/MessageFlags.js +54 -0
  320. package/src/util/Options.js +360 -0
  321. package/src/util/Permissions.js +187 -0
  322. package/src/util/PremiumUsageFlags.js +31 -0
  323. package/src/util/PurchasedFlags.js +31 -0
  324. package/src/util/RemoteAuth.js +522 -0
  325. package/src/util/SnowflakeUtil.js +92 -0
  326. package/src/util/Sweepers.js +466 -0
  327. package/src/util/SystemChannelFlags.js +55 -0
  328. package/src/util/ThreadMemberFlags.js +30 -0
  329. package/src/util/UserFlags.js +104 -0
  330. package/src/util/Util.js +741 -0
  331. package/src/util/Voice.js +1456 -0
  332. package/src/util/arRPC/index.js +229 -0
  333. package/src/util/arRPC/process/detectable.json +1 -0
  334. package/src/util/arRPC/process/index.js +102 -0
  335. package/src/util/arRPC/process/native/index.js +5 -0
  336. package/src/util/arRPC/process/native/linux.js +37 -0
  337. package/src/util/arRPC/process/native/win32.js +25 -0
  338. package/src/util/arRPC/transports/ipc.js +281 -0
  339. package/src/util/arRPC/transports/websocket.js +128 -0
  340. package/typings/enums.d.ts +346 -0
  341. package/typings/index.d.ts +7725 -0
  342. package/typings/index.test-d.ts +0 -0
  343. package/typings/rawDataTypes.d.ts +283 -0
@@ -0,0 +1,520 @@
1
+ 'use strict';
2
+ const { Collection } = require('@discordjs/collection');
3
+ const { ApplicationRoleConnectionMetadata } = require('./ApplicationRoleConnectionMetadata');
4
+ const Base = require('./Base');
5
+ const ApplicationFlags = require('../util/ApplicationFlags');
6
+ const { ClientApplicationAssetTypes, Endpoints, ApplicationRoleConnectionMetadataTypes } = require('../util/Constants');
7
+ const DataResolver = require('../util/DataResolver');
8
+ const Permissions = require('../util/Permissions');
9
+ const SnowflakeUtil = require('../util/SnowflakeUtil');
10
+
11
+ const AssetTypes = Object.keys(ClientApplicationAssetTypes);
12
+
13
+ /**
14
+ * Represents an OAuth2 Application.
15
+ * @extends {Base}
16
+ * @abstract
17
+ */
18
+ class DeveloperPortalApplication extends Base {
19
+ constructor(client, data) {
20
+ super(client);
21
+ this._patch(data);
22
+ }
23
+ _patch(data) {
24
+ /**
25
+ * The application's id
26
+ * @type {Snowflake}
27
+ */
28
+ this.id = data.id;
29
+
30
+ if ('name' in data) {
31
+ /**
32
+ * The name of the application
33
+ * @type {?string}
34
+ */
35
+ this.name = data.name;
36
+ } else {
37
+ this.name ??= null;
38
+ }
39
+
40
+ if ('description' in data) {
41
+ /**
42
+ * The application's description
43
+ * @type {?string}
44
+ */
45
+ this.description = data.description;
46
+ } else {
47
+ this.description ??= null;
48
+ }
49
+
50
+ if ('icon' in data) {
51
+ /**
52
+ * The application's icon hash
53
+ * @type {?string}
54
+ */
55
+ this.icon = data.icon;
56
+ } else {
57
+ this.icon ??= null;
58
+ }
59
+
60
+ if ('bot' in data) {
61
+ /**
62
+ * Bot application
63
+ * @type {User}
64
+ */
65
+ this.bot = this.client.users._add(data.bot);
66
+ }
67
+
68
+ /**
69
+ * The tags this application has (max of 5)
70
+ * @type {string[]}
71
+ */
72
+ this.tags = data.tags ?? [];
73
+
74
+ if ('install_params' in data) {
75
+ /**
76
+ * Settings for this application's default in-app authorization
77
+ * @type {?ClientApplicationInstallParams}
78
+ */
79
+ this.installParams = {
80
+ scopes: data.install_params.scopes,
81
+ permissions: new Permissions(data.install_params.permissions).freeze(),
82
+ };
83
+ } else {
84
+ this.installParams ??= null;
85
+ }
86
+
87
+ if ('custom_install_url' in data) {
88
+ /**
89
+ * This application's custom installation URL
90
+ * @type {?string}
91
+ */
92
+ this.customInstallURL = data.custom_install_url;
93
+ } else {
94
+ this.customInstallURL = null;
95
+ }
96
+
97
+ if ('flags' in data) {
98
+ /**
99
+ * The flags this application has
100
+ * @type {ApplicationFlags}
101
+ */
102
+ this.flags = new ApplicationFlags(data.flags).freeze();
103
+ }
104
+
105
+ if ('cover_image' in data) {
106
+ /**
107
+ * The hash of the application's cover image
108
+ * @type {?string}
109
+ */
110
+ this.cover = data.cover_image;
111
+ } else {
112
+ this.cover ??= null;
113
+ }
114
+
115
+ if ('rpc_origins' in data) {
116
+ /**
117
+ * The application's RPC origins, if enabled
118
+ * @type {string[]}
119
+ */
120
+ this.rpcOrigins = data.rpc_origins;
121
+ } else {
122
+ this.rpcOrigins ??= [];
123
+ }
124
+
125
+ if ('bot_require_code_grant' in data) {
126
+ /**
127
+ * If this application's bot requires a code grant when using the OAuth2 flow
128
+ * @type {?boolean}
129
+ */
130
+ this.botRequireCodeGrant = data.bot_require_code_grant;
131
+ } else {
132
+ this.botRequireCodeGrant ??= null;
133
+ }
134
+
135
+ if ('bot_public' in data) {
136
+ /**
137
+ * If this application's bot is public
138
+ * @type {?boolean}
139
+ */
140
+ this.botPublic = data.bot_public;
141
+ } else {
142
+ this.botPublic ??= null;
143
+ }
144
+
145
+ /**
146
+ * The owner of this OAuth application
147
+ * @type {?(User|Team)}
148
+ */
149
+ this.owner = null;
150
+ if (data.owner.username == `team${data.owner.id}` && data.owner.discriminator == '0000') {
151
+ this.owner = this.client.developerPortal.teams.get(data.owner.id);
152
+ } else {
153
+ this.owner = data.owner ? this.client.users._add(data.owner) : this.owner ?? null;
154
+ }
155
+
156
+ /**
157
+ * Redirect URIs for this application
158
+ * @type {Array<string>}
159
+ */
160
+ this.redirectURIs = data.redirect_uris ?? [];
161
+
162
+ /**
163
+ * BOT_HTTP_INTERACTIONS feature flag
164
+ * @type {?string}
165
+ */
166
+ this.interactionEndpointURL = data.interactions_endpoint_url ?? null;
167
+
168
+ /**
169
+ * Public key
170
+ * @type {?string}
171
+ */
172
+ this.publicKey = data.verify_key ?? null;
173
+
174
+ /**
175
+ * @typedef {Object} Tester
176
+ * @property {number} state The state of the tester (2: Accepted, 1: Pending)
177
+ * @property {User} user The user that the tester is
178
+ */
179
+ /**
180
+ * User tester
181
+ * @type {Collection<Snowflake, Tester>}
182
+ */
183
+ this.testers = new Collection(); // <Snowflake, User>
184
+
185
+ /**
186
+ * Terms of service URL
187
+ * @type {?string}
188
+ */
189
+ this.TermsOfService = data.terms_of_service_url ?? null;
190
+
191
+ /**
192
+ * Privacy policy URL
193
+ * @type {?string}
194
+ */
195
+ this.PrivacyPolicy = data.privacy_policy_url ?? null;
196
+
197
+ if ('role_connections_verification_url' in data) {
198
+ /**
199
+ * This application's role connection verification entry point URL
200
+ * @type {?string}
201
+ */
202
+ this.roleConnectionsVerificationURL = data.role_connections_verification_url;
203
+ } else {
204
+ this.roleConnectionsVerificationURL ??= null;
205
+ }
206
+ }
207
+ /**
208
+ * The timestamp the application was created at
209
+ * @type {number}
210
+ * @readonly
211
+ */
212
+ get createdTimestamp() {
213
+ return SnowflakeUtil.timestampFrom(this.id);
214
+ }
215
+
216
+ /**
217
+ * The time the application was created at
218
+ * @type {Date}
219
+ * @readonly
220
+ */
221
+ get createdAt() {
222
+ return new Date(this.createdTimestamp);
223
+ }
224
+
225
+ /**
226
+ * A link to the application's icon.
227
+ * @param {StaticImageURLOptions} [options={}] Options for the Image URL
228
+ * @returns {?string}
229
+ */
230
+ iconURL({ format, size } = {}) {
231
+ if (!this.icon) return null;
232
+ return this.client.rest.cdn.AppIcon(this.id, this.icon, { format, size });
233
+ }
234
+
235
+ /**
236
+ * A link to this application's cover image.
237
+ * @param {StaticImageURLOptions} [options={}] Options for the Image URL
238
+ * @returns {?string}
239
+ */
240
+ coverURL({ format, size } = {}) {
241
+ if (!this.cover) return null;
242
+ return Endpoints.CDN(this.client.options.http.cdn).AppIcon(this.id, this.cover, { format, size });
243
+ }
244
+
245
+ /**
246
+ * Asset data.
247
+ * @typedef {Object} ApplicationAsset
248
+ * @property {Snowflake} id The asset's id
249
+ * @property {string} name The asset's name
250
+ * @property {string} type The asset's type
251
+ */
252
+
253
+ /**
254
+ * Gets the application's rich presence assets.
255
+ * @returns {Promise<Array<ApplicationAsset>>}
256
+ * @deprecated This will be removed in the next major as it is unsupported functionality.
257
+ */
258
+ async fetchAssets() {
259
+ const assets = await this.client.api.oauth2.applications(this.id).assets.get();
260
+ return assets.map(a => ({
261
+ id: a.id,
262
+ name: a.name,
263
+ type: AssetTypes[a.type - 1],
264
+ }));
265
+ }
266
+
267
+ /**
268
+ * Whether this application is partial
269
+ * @type {boolean}
270
+ * @readonly
271
+ */
272
+ get partial() {
273
+ return !this.name;
274
+ }
275
+
276
+ /**
277
+ * Obtains this application from Discord.
278
+ * @returns {Promise<DeveloperPortalApplication>}
279
+ */
280
+ async fetch() {
281
+ const app = await this.client.api.applications[this.id].get();
282
+ this._patch(app);
283
+ return this;
284
+ }
285
+
286
+ /**
287
+ * Gets all testers for this application.
288
+ * @returns {Promise<DeveloperPortalApplication>}
289
+ */
290
+ async fetchTesters() {
291
+ const app = await this.client.api.applications[this.id].allowlist.get();
292
+ this.testers = new Collection();
293
+ for (const tester of app || []) {
294
+ this.testers.set(tester.user.id, {
295
+ state: tester.state,
296
+ user: this.client.users._add(tester.user),
297
+ });
298
+ }
299
+ return this;
300
+ }
301
+
302
+ /**
303
+ * Add user to this application's allowlist.
304
+ * @param {string} username Username of the user to add
305
+ * @param {string} discriminator Discriminator of the user to add
306
+ * @returns {Promise<DeveloperPortalApplication>}
307
+ */
308
+ async addTester(username, discriminator) {
309
+ const app = await this.client.api.applications[this.id].allowlist.post({
310
+ data: {
311
+ username,
312
+ discriminator,
313
+ },
314
+ });
315
+ this.testers.set(app.user.id, {
316
+ state: app.state,
317
+ user: this.client.users._add(app.user),
318
+ });
319
+ return this;
320
+ }
321
+
322
+ /**
323
+ * Delete user from this application's allowlist.
324
+ * @param {UserResolvable} user User
325
+ * @returns {Promise<DeveloperPortalApplication>}
326
+ */
327
+ async deleteTester(user) {
328
+ const userId = this.client.users.resolveId(user);
329
+ await this.client.api.applications[this.id].allowlist[userId].delete();
330
+ this.testers.delete(userId);
331
+ return this;
332
+ }
333
+
334
+ /**
335
+ * The data for editing a application.
336
+ * @typedef {Object} ApplicationEditData
337
+ * @property {string} [name] The name of the app
338
+ * @property {string} [description] The description of the app
339
+ * @property {?(BufferResolvable|Base64Resolvable)} [icon] The icon of the app
340
+ * @property {?(BufferResolvable|Base64Resolvable)} [cover] The application's default rich presence invite
341
+ * @property {boolean} [botPublic] When false only app owner can join the app's bot to guilds
342
+ * @property {boolean} [botRequireCodeGrant] When true the app's bot will only join upon completion of the full oauth2 code grant flow
343
+ * @property {?string} [TermsOfService] ToS URL
344
+ * @property {?string} [PrivacyPolicy] Privacy policy URL
345
+ * @property {number} [flags] The application's public flags
346
+ * @property {Array<string>} [redirectURIs] Redirect URIs (OAuth2 only)
347
+ * @property {Array<string>} [tags] Up to 5 tags describing the content and functionality of the application
348
+ */
349
+ /**
350
+ * Edits this application.
351
+ * @param {ApplicationEditData} data Edit data for the application
352
+ * @returns {Promise<DeveloperPortalApplication>}
353
+ */
354
+ async edit(data) {
355
+ const _data = {};
356
+ if (data.name) _data.name = data.name;
357
+ if (typeof data.icon !== 'undefined') {
358
+ _data.icon = await DataResolver.resolveImage(data.icon);
359
+ }
360
+ if (data.description) _data.description = data.description;
361
+ if (typeof data.cover !== 'undefined') {
362
+ _data.cover = await DataResolver.resolveImage(data.cover);
363
+ }
364
+ if (data.botPublic) _data.bot_public = data.botPublic;
365
+ if (data.botRequireCodeGrant) _data.bot_require_code_grant = data.botRequireCodeGrant;
366
+ if (data.TermsOfService) _data.terms_of_service_url = data.TermsOfService;
367
+ if (data.PrivacyPolicy) _data.privacy_policy_url = data.PrivacyPolicy;
368
+ if (data.flags) _data.flags = data.flags;
369
+ if (data.redirectURIs) _data.redirect_uris = data.redirectURIs;
370
+ if (data.tags) _data.tags = data.tags;
371
+ //
372
+ const app = await this.client.api.applications[this.id].patch({ data: _data });
373
+ this._patch(app);
374
+ return this;
375
+ }
376
+
377
+ /**
378
+ * Creates a new bot for this application.
379
+ * @returns {Promise<DeveloperPortalApplication>}
380
+ */
381
+ async createBot() {
382
+ if (this.bot) throw new Error('Application already has a bot.');
383
+ await this.client.api.applications[this.id].bot.post();
384
+ const app = await this.fetch();
385
+ return app;
386
+ }
387
+
388
+ /**
389
+ * Reset CLient Secret for this application.
390
+ * @param {number} MFACode The MFA code (if required)
391
+ * @returns {Promise<string>}
392
+ */
393
+ async resetClientSecret(MFACode) {
394
+ const app = MFACode
395
+ ? await this.client.api.applications[this.id].reset.post({
396
+ data: {
397
+ code: MFACode,
398
+ },
399
+ })
400
+ : await this.client.api.applications[this.id].reset.post();
401
+ return app.secret;
402
+ }
403
+
404
+ /**
405
+ * Reset Bot Token for this application.
406
+ * @param {number} MFACode The MFA code (if required)
407
+ * @returns {Promise<string>}
408
+ */
409
+ async resetBotToken(MFACode) {
410
+ const app = MFACode
411
+ ? await this.client.api.applications[this.id].bot.reset.post({
412
+ data: {
413
+ code: MFACode,
414
+ },
415
+ })
416
+ : await this.client.api.applications[this.id].bot.reset.post();
417
+ return app.token;
418
+ }
419
+
420
+ /**
421
+ * Deletes this application.
422
+ * @param {number} MFACode The MFA code (if required)
423
+ * @returns {Promise<void>}
424
+ */
425
+ delete(MFACode) {
426
+ return this.client.developerPortal.deleteApplication(this.id, MFACode);
427
+ }
428
+
429
+ /**
430
+ * Add new image to this application. (RPC)
431
+ * @param {BufferResolvable|Base64Resolvable} image Image Resolvable
432
+ * @param {string} name Name of the image
433
+ * @returns {ApplicationAsset}
434
+ */
435
+ async addAsset(image, name) {
436
+ const data = await DataResolver.resolveImage(image);
437
+ const asset = await this.client.api.applications[this.id].assets.post({
438
+ data: {
439
+ type: 1,
440
+ name,
441
+ image: data,
442
+ },
443
+ });
444
+ return {
445
+ id: asset.id,
446
+ name: asset.name,
447
+ type: AssetTypes[asset.type - 1],
448
+ };
449
+ }
450
+
451
+ /**
452
+ * Delete an image from this application. (RPC)
453
+ * @param {Snowflake} id ID of the image
454
+ * @returns {Promise<undefined>}
455
+ */
456
+ async deleteAsset(id) {
457
+ await this.client.api.applications[this.id].assets[id].delete();
458
+ return undefined;
459
+ }
460
+
461
+ /**
462
+ * Gets this application's role connection metadata records
463
+ * @returns {Promise<ApplicationRoleConnectionMetadata[]>}
464
+ */
465
+ async fetchRoleConnectionMetadataRecords() {
466
+ const metadata = await this.client.api.applications(this.id)('role-connections').metadata.get();
467
+ return metadata.map(data => new ApplicationRoleConnectionMetadata(data));
468
+ }
469
+
470
+ /**
471
+ * Data for creating or editing an application role connection metadata.
472
+ * @typedef {Object} ApplicationRoleConnectionMetadataEditOptions
473
+ * @property {string} name The name of the metadata field
474
+ * @property {?Object<Locale, string>} [nameLocalizations] The name localizations for the metadata field
475
+ * @property {string} description The description of the metadata field
476
+ * @property {?Object<Locale, string>} [descriptionLocalizations] The description localizations for the metadata field
477
+ * @property {string} key The dictionary key of the metadata field
478
+ * @property {ApplicationRoleConnectionMetadataType} type The type of the metadata field
479
+ */
480
+
481
+ /**
482
+ * Updates this application's role connection metadata records
483
+ * @param {ApplicationRoleConnectionMetadataEditOptions[]} records The new role connection metadata records
484
+ * @returns {Promise<ApplicationRoleConnectionMetadata[]>}
485
+ */
486
+ async editRoleConnectionMetadataRecords(records) {
487
+ const newRecords = await this.client.api
488
+ .applications(this.client.user.id)('role-connections')
489
+ .metadata.put({
490
+ data: records.map(record => ({
491
+ type: typeof record.type === 'string' ? ApplicationRoleConnectionMetadataTypes[record.type] : record.type,
492
+ key: record.key,
493
+ name: record.name,
494
+ name_localizations: record.nameLocalizations,
495
+ description: record.description,
496
+ description_localizations: record.descriptionLocalizations,
497
+ })),
498
+ });
499
+
500
+ return newRecords.map(data => new ApplicationRoleConnectionMetadata(data));
501
+ }
502
+
503
+ /**
504
+ * When concatenated with a string, this automatically returns the application's name instead of the
505
+ * Application object.
506
+ * @returns {?string}
507
+ * @example
508
+ * // Logs: Application name: My App
509
+ * console.log(`Application name: ${application}`);
510
+ */
511
+ toString() {
512
+ return this.name;
513
+ }
514
+
515
+ toJSON() {
516
+ return super.toJSON({ createdTimestamp: true });
517
+ }
518
+ }
519
+
520
+ module.exports = DeveloperPortalApplication;
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ const { Channel } = require('./Channel');
4
+
5
+ /**
6
+ * Represents a channel that displays a directory of guilds.
7
+ * @extends {Channel}
8
+ */
9
+ class DirectoryChannel extends Channel {
10
+ _patch(data) {
11
+ super._patch(data);
12
+ /**
13
+ * The channel's name
14
+ * @type {string}
15
+ */
16
+ this.name = data.name;
17
+ }
18
+ }
19
+
20
+ module.exports = DirectoryChannel;
@@ -0,0 +1,148 @@
1
+ 'use strict';
2
+
3
+ const process = require('node:process');
4
+ const Base = require('./Base');
5
+ const SnowflakeUtil = require('../util/SnowflakeUtil');
6
+
7
+ /**
8
+ * @type {WeakSet<Emoji>}
9
+ * @private
10
+ * @internal
11
+ */
12
+ const deletedEmojis = new WeakSet();
13
+ let deprecationEmittedForDeleted = false;
14
+
15
+ /**
16
+ * Represents raw emoji data from the API
17
+ * @typedef {APIEmoji} RawEmoji
18
+ * @property {?Snowflake} id The emoji's id
19
+ * @property {?string} name The emoji's name
20
+ * @property {?boolean} animated Whether the emoji is animated
21
+ */
22
+
23
+ /**
24
+ * Represents an emoji, see {@link GuildEmoji} and {@link ReactionEmoji}.
25
+ * @extends {Base}
26
+ */
27
+ class Emoji extends Base {
28
+ constructor(client, emoji) {
29
+ super(client);
30
+ /**
31
+ * Whether or not the emoji is animated
32
+ * @type {?boolean}
33
+ */
34
+ this.animated = emoji.animated ?? null;
35
+
36
+ /**
37
+ * The emoji's name
38
+ * @type {?string}
39
+ */
40
+ this.name = emoji.name ?? null;
41
+
42
+ /**
43
+ * The emoji's id
44
+ * @type {?Snowflake}
45
+ */
46
+ this.id = emoji.id;
47
+ }
48
+
49
+ /**
50
+ * Whether or not the structure has been deleted
51
+ * @type {boolean}
52
+ * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091
53
+ */
54
+ get deleted() {
55
+ if (!deprecationEmittedForDeleted) {
56
+ deprecationEmittedForDeleted = true;
57
+ process.emitWarning(
58
+ 'Emoji#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
59
+ 'DeprecationWarning',
60
+ );
61
+ }
62
+
63
+ return deletedEmojis.has(this);
64
+ }
65
+
66
+ set deleted(value) {
67
+ if (!deprecationEmittedForDeleted) {
68
+ deprecationEmittedForDeleted = true;
69
+ process.emitWarning(
70
+ 'Emoji#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
71
+ 'DeprecationWarning',
72
+ );
73
+ }
74
+
75
+ if (value) deletedEmojis.add(this);
76
+ else deletedEmojis.delete(this);
77
+ }
78
+
79
+ /**
80
+ * The identifier of this emoji, used for message reactions
81
+ * @type {string}
82
+ * @readonly
83
+ */
84
+ get identifier() {
85
+ if (this.id) return `${this.animated ? 'a:' : ''}${this.name}:${this.id}`;
86
+ return encodeURIComponent(this.name);
87
+ }
88
+
89
+ /**
90
+ * The URL to the emoji file if it's a custom emoji
91
+ * @type {?string}
92
+ * @readonly
93
+ */
94
+ get url() {
95
+ return this.id && this.client.rest.cdn.Emoji(this.id, this.animated ? 'gif' : 'png');
96
+ }
97
+
98
+ /**
99
+ * The timestamp the emoji was created at, or null if unicode
100
+ * @type {?number}
101
+ * @readonly
102
+ */
103
+ get createdTimestamp() {
104
+ return this.id && SnowflakeUtil.timestampFrom(this.id);
105
+ }
106
+
107
+ /**
108
+ * The time the emoji was created at, or null if unicode
109
+ * @type {?Date}
110
+ * @readonly
111
+ */
112
+ get createdAt() {
113
+ return this.id && new Date(this.createdTimestamp);
114
+ }
115
+
116
+ /**
117
+ * When concatenated with a string, this automatically returns the text required to form a graphical emoji on Discord
118
+ * instead of the Emoji object.
119
+ * @returns {string}
120
+ * @example
121
+ * // Send a custom emoji from a guild:
122
+ * const emoji = guild.emojis.cache.first();
123
+ * msg.channel.send(`Hello! ${emoji}`);
124
+ * @example
125
+ * // Send the emoji used in a reaction to the channel the reaction is part of
126
+ * reaction.message.channel.send(`The emoji used was: ${reaction.emoji}`);
127
+ */
128
+ toString() {
129
+ return this.id ? `<${this.animated ? 'a' : ''}:${this.name}:${this.id}>` : this.name;
130
+ }
131
+
132
+ toJSON() {
133
+ return super.toJSON({
134
+ guild: 'guildId',
135
+ createdTimestamp: true,
136
+ url: true,
137
+ identifier: true,
138
+ });
139
+ }
140
+ }
141
+
142
+ exports.Emoji = Emoji;
143
+ exports.deletedEmojis = deletedEmojis;
144
+
145
+ /**
146
+ * @external APIEmoji
147
+ * @see {@link https://discord.com/developers/docs/resources/emoji#emoji-object}
148
+ */