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,271 @@
1
+ 'use strict';
2
+
3
+ const process = require('node:process');
4
+ const Base = require('./Base');
5
+ let CategoryChannel;
6
+ let DMChannel;
7
+ let NewsChannel;
8
+ let StageChannel;
9
+ let StoreChannel;
10
+ let TextChannel;
11
+ let ThreadChannel;
12
+ let VoiceChannel;
13
+ let DirectoryChannel;
14
+ let ForumChannel;
15
+ const ChannelFlags = require('../util/ChannelFlags');
16
+ const { ChannelTypes, ThreadChannelTypes, VoiceBasedChannelTypes } = require('../util/Constants');
17
+ const SnowflakeUtil = require('../util/SnowflakeUtil');
18
+
19
+ /**
20
+ * @type {WeakSet<Channel>}
21
+ * @private
22
+ * @internal
23
+ */
24
+ const deletedChannels = new WeakSet();
25
+ let deprecationEmittedForDeleted = false;
26
+
27
+ /**
28
+ * Represents any channel on Discord.
29
+ * @extends {Base}
30
+ * @abstract
31
+ */
32
+ class Channel extends Base {
33
+ constructor(client, data, immediatePatch = true) {
34
+ super(client);
35
+
36
+ const type = ChannelTypes[data?.type];
37
+ /**
38
+ * The type of the channel
39
+ * @type {ChannelType}
40
+ */
41
+ this.type = type ?? 'UNKNOWN';
42
+
43
+ if (data && immediatePatch) this._patch(data);
44
+ }
45
+
46
+ _patch(data) {
47
+ /**
48
+ * The channel's id
49
+ * @type {Snowflake}
50
+ */
51
+ this.id = data.id;
52
+
53
+ if ('flags' in data) {
54
+ /**
55
+ * The flags that are applied to the channel.
56
+ * <info>This is only `null` in a {@link PartialGroupDMChannel}. In all other cases, it is not `null`.</info>
57
+ * @type {?Readonly<ChannelFlags>}
58
+ */
59
+ this.flags = new ChannelFlags(data.flags).freeze();
60
+ } else {
61
+ this.flags ??= new ChannelFlags().freeze();
62
+ }
63
+ }
64
+
65
+ /**
66
+ * The timestamp the channel was created at
67
+ * @type {number}
68
+ * @readonly
69
+ */
70
+ get createdTimestamp() {
71
+ return SnowflakeUtil.timestampFrom(this.id);
72
+ }
73
+
74
+ /**
75
+ * The time the channel was created at
76
+ * @type {Date}
77
+ * @readonly
78
+ */
79
+ get createdAt() {
80
+ return new Date(this.createdTimestamp);
81
+ }
82
+
83
+ /**
84
+ * Whether or not the structure has been deleted
85
+ * @type {boolean}
86
+ * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091
87
+ */
88
+ get deleted() {
89
+ if (!deprecationEmittedForDeleted) {
90
+ deprecationEmittedForDeleted = true;
91
+ process.emitWarning(
92
+ 'Channel#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
93
+ 'DeprecationWarning',
94
+ );
95
+ }
96
+
97
+ return deletedChannels.has(this);
98
+ }
99
+
100
+ set deleted(value) {
101
+ if (!deprecationEmittedForDeleted) {
102
+ deprecationEmittedForDeleted = true;
103
+ process.emitWarning(
104
+ 'Channel#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
105
+ 'DeprecationWarning',
106
+ );
107
+ }
108
+
109
+ if (value) deletedChannels.add(this);
110
+ else deletedChannels.delete(this);
111
+ }
112
+
113
+ /**
114
+ * Whether this Channel is a partial
115
+ * <info>This is always false outside of DM channels.</info>
116
+ * @type {boolean}
117
+ * @readonly
118
+ */
119
+ get partial() {
120
+ return false;
121
+ }
122
+
123
+ /**
124
+ * When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.
125
+ * @returns {string}
126
+ * @example
127
+ * // Logs: Hello from <#123456789012345678>!
128
+ * console.log(`Hello from ${channel}!`);
129
+ */
130
+ toString() {
131
+ return `<#${this.id}>`;
132
+ }
133
+
134
+ /**
135
+ * Deletes this channel.
136
+ * @returns {Promise<Channel>}
137
+ * @example
138
+ * // Delete the channel
139
+ * channel.delete()
140
+ * .then(console.log)
141
+ * .catch(console.error);
142
+ */
143
+ async delete() {
144
+ await this.client.api.channels(this.id).delete();
145
+ return this;
146
+ }
147
+
148
+ /**
149
+ * Fetches this channel.
150
+ * @param {boolean} [force=true] Whether to skip the cache check and request the API
151
+ * @returns {Promise<Channel>}
152
+ */
153
+ fetch(force = true) {
154
+ return this.client.channels.fetch(this.id, { force });
155
+ }
156
+
157
+ /**
158
+ * Indicates whether this channel is {@link TextBasedChannels text-based}.
159
+ * @returns {boolean}
160
+ */
161
+ isText() {
162
+ return 'messages' in this;
163
+ }
164
+
165
+ /**
166
+ * Indicates whether this channel is {@link BaseGuildVoiceChannel voice-based}.
167
+ * @returns {boolean}
168
+ */
169
+ isVoice() {
170
+ return VoiceBasedChannelTypes.includes(this.type);
171
+ }
172
+
173
+ /**
174
+ * Indicates whether this channel is a {@link ThreadChannel}.
175
+ * @returns {boolean}
176
+ */
177
+ isThread() {
178
+ return ThreadChannelTypes.includes(this.type);
179
+ }
180
+
181
+ /**
182
+ * Indicates whether this channel is a {@link DirectoryChannel}
183
+ * @returns {boolean}
184
+ */
185
+ isDirectory() {
186
+ return this.type === 'GUILD_DIRECTORY';
187
+ }
188
+
189
+ static create(client, data, guild, { allowUnknownGuild } = {}) {
190
+ CategoryChannel ??= require('./CategoryChannel');
191
+ DMChannel ??= require('./DMChannel');
192
+ NewsChannel ??= require('./NewsChannel');
193
+ StageChannel ??= require('./StageChannel');
194
+ StoreChannel ??= require('./StoreChannel');
195
+ TextChannel ??= require('./TextChannel');
196
+ ThreadChannel ??= require('./ThreadChannel');
197
+ VoiceChannel ??= require('./VoiceChannel');
198
+ DirectoryChannel ??= require('./DirectoryChannel');
199
+ ForumChannel ??= require('./ForumChannel');
200
+
201
+ let channel;
202
+ if (!data.guild_id && !guild) {
203
+ if ((data.recipients && data.type !== ChannelTypes.GROUP_DM) || data.type === ChannelTypes.DM) {
204
+ channel = new DMChannel(client, data);
205
+ } else if (data.type === ChannelTypes.GROUP_DM) {
206
+ const PartialGroupDMChannel = require('./PartialGroupDMChannel');
207
+ channel = new PartialGroupDMChannel(client, data);
208
+ }
209
+ } else {
210
+ guild ??= client.guilds.cache.get(data.guild_id);
211
+
212
+ if (guild || allowUnknownGuild) {
213
+ switch (data.type) {
214
+ case ChannelTypes.GUILD_TEXT: {
215
+ channel = new TextChannel(guild, data, client);
216
+ break;
217
+ }
218
+ case ChannelTypes.GUILD_VOICE: {
219
+ channel = new VoiceChannel(guild, data, client);
220
+ break;
221
+ }
222
+ case ChannelTypes.GUILD_CATEGORY: {
223
+ channel = new CategoryChannel(guild, data, client);
224
+ break;
225
+ }
226
+ case ChannelTypes.GUILD_NEWS: {
227
+ channel = new NewsChannel(guild, data, client);
228
+ break;
229
+ }
230
+ case ChannelTypes.GUILD_STORE: {
231
+ channel = new StoreChannel(guild, data, client);
232
+ break;
233
+ }
234
+ case ChannelTypes.GUILD_STAGE_VOICE: {
235
+ channel = new StageChannel(guild, data, client);
236
+ break;
237
+ }
238
+ case ChannelTypes.GUILD_NEWS_THREAD:
239
+ case ChannelTypes.GUILD_PUBLIC_THREAD:
240
+ case ChannelTypes.GUILD_PRIVATE_THREAD: {
241
+ channel = new ThreadChannel(guild, data, client);
242
+ if (!allowUnknownGuild) channel.parent?.threads.cache.set(channel.id, channel);
243
+ break;
244
+ }
245
+
246
+ case ChannelTypes.GUILD_DIRECTORY:
247
+ channel = new DirectoryChannel(client, data);
248
+ break;
249
+
250
+ case ChannelTypes.GUILD_FORUM:
251
+ channel = new ForumChannel(guild, data, client);
252
+ break;
253
+ }
254
+ if (channel && !allowUnknownGuild) guild.channels?.cache.set(channel.id, channel);
255
+ }
256
+ }
257
+ return channel;
258
+ }
259
+
260
+ toJSON(...props) {
261
+ return super.toJSON({ createdTimestamp: true }, ...props);
262
+ }
263
+ }
264
+
265
+ exports.Channel = Channel;
266
+ exports.deletedChannels = deletedChannels;
267
+
268
+ /**
269
+ * @external APIChannel
270
+ * @see {@link https://discord.com/developers/docs/resources/channel#channel-object}
271
+ */
@@ -0,0 +1,204 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const { ApplicationRoleConnectionMetadata } = require('./ApplicationRoleConnectionMetadata');
5
+ const Team = require('./Team');
6
+ const Application = require('./interfaces/Application');
7
+ const ApplicationCommandManager = require('../managers/ApplicationCommandManager');
8
+ const ApplicationFlags = require('../util/ApplicationFlags');
9
+ const { ApplicationRoleConnectionMetadataTypes } = require('../util/Constants');
10
+ const Permissions = require('../util/Permissions');
11
+
12
+ /**
13
+ * @typedef {Object} ClientApplicationInstallParams
14
+ * @property {InviteScope[]} scopes The scopes to add the application to the server with
15
+ * @property {Readonly<Permissions>} permissions The permissions this bot will request upon joining
16
+ */
17
+
18
+ /**
19
+ * Represents a Client OAuth2 Application.
20
+ * @extends {Application}
21
+ */
22
+ class ClientApplication extends Application {
23
+ constructor(client, data, user) {
24
+ super(client, data);
25
+
26
+ /**
27
+ * The application command manager for this application
28
+ * @type {ApplicationCommandManager}
29
+ */
30
+ this.commands = new ApplicationCommandManager(this.client, undefined, user);
31
+ }
32
+
33
+ _patch(data) {
34
+ super._patch(data);
35
+
36
+ /**
37
+ * The tags this application has (max of 5)
38
+ * @type {string[]}
39
+ */
40
+ this.tags = data.tags ?? [];
41
+
42
+ if ('install_params' in data) {
43
+ /**
44
+ * Settings for this application's default in-app authorization
45
+ * @type {?ClientApplicationInstallParams}
46
+ */
47
+ this.installParams = {
48
+ scopes: data.install_params.scopes,
49
+ permissions: new Permissions(data.install_params.permissions).freeze(),
50
+ };
51
+ } else {
52
+ this.installParams ??= null;
53
+ }
54
+
55
+ if ('custom_install_url' in data) {
56
+ /**
57
+ * This application's custom installation URL
58
+ * @type {?string}
59
+ */
60
+ this.customInstallURL = data.custom_install_url;
61
+ } else {
62
+ this.customInstallURL = null;
63
+ }
64
+
65
+ if ('flags' in data) {
66
+ /**
67
+ * The flags this application has
68
+ * @type {ApplicationFlags}
69
+ */
70
+ this.flags = new ApplicationFlags(data.flags).freeze();
71
+ }
72
+
73
+ if ('cover_image' in data) {
74
+ /**
75
+ * The hash of the application's cover image
76
+ * @type {?string}
77
+ */
78
+ this.cover = data.cover_image;
79
+ } else {
80
+ this.cover ??= null;
81
+ }
82
+
83
+ if ('rpc_origins' in data) {
84
+ /**
85
+ * The application's RPC origins, if enabled
86
+ * @type {string[]}
87
+ */
88
+ this.rpcOrigins = data.rpc_origins;
89
+ } else {
90
+ this.rpcOrigins ??= [];
91
+ }
92
+
93
+ if ('bot_require_code_grant' in data) {
94
+ /**
95
+ * If this application's bot requires a code grant when using the OAuth2 flow
96
+ * @type {?boolean}
97
+ */
98
+ this.botRequireCodeGrant = data.bot_require_code_grant;
99
+ } else {
100
+ this.botRequireCodeGrant ??= null;
101
+ }
102
+
103
+ if ('bot_public' in data) {
104
+ /**
105
+ * If this application's bot is public
106
+ * @type {?boolean}
107
+ */
108
+ this.botPublic = data.bot_public;
109
+ } else {
110
+ this.botPublic ??= null;
111
+ }
112
+
113
+ if ('popular_application_command_ids' in data) {
114
+ /**
115
+ * List of popular command
116
+ * @type {?Collection<Snowflake, ApplicationCommand>}
117
+ */
118
+ this.popularCommands = new Collection();
119
+ data.popular_application_command_ids.forEach(id => {
120
+ this.popularCommands.set(id, this.commands?.cache?.get(id));
121
+ });
122
+ }
123
+
124
+ /**
125
+ * The owner of this OAuth application
126
+ * @type {?(User|Team)}
127
+ */
128
+ this.owner = data.team
129
+ ? new Team(this.client, data.team)
130
+ : data.owner
131
+ ? this.client.users._add(data.owner)
132
+ : this.owner ?? null;
133
+ }
134
+
135
+ /**
136
+ * Whether this application is partial
137
+ * @type {boolean}
138
+ * @readonly
139
+ */
140
+ get partial() {
141
+ return !this.name;
142
+ }
143
+
144
+ /**
145
+ * Obtains this application from Discord.
146
+ * @returns {Promise<ClientApplication>}
147
+ */
148
+ async fetch() {
149
+ const app = await this.client.api.oauth2.authorize.get({
150
+ query: {
151
+ client_id: this.id,
152
+ scope: 'bot applications.commands',
153
+ },
154
+ });
155
+ const user = this.client.users._add(app.bot);
156
+ user._partial = false;
157
+ this._patch(app.application);
158
+ return this;
159
+ }
160
+
161
+ /**
162
+ * Gets this application's role connection metadata records
163
+ * @returns {Promise<ApplicationRoleConnectionMetadata[]>}
164
+ */
165
+ async fetchRoleConnectionMetadataRecords() {
166
+ const metadata = await this.client.api.applications(this.id)('role-connections').metadata.get();
167
+ return metadata.map(data => new ApplicationRoleConnectionMetadata(data));
168
+ }
169
+
170
+ /**
171
+ * Data for creating or editing an application role connection metadata.
172
+ * @typedef {Object} ApplicationRoleConnectionMetadataEditOptions
173
+ * @property {string} name The name of the metadata field
174
+ * @property {?Object<Locale, string>} [nameLocalizations] The name localizations for the metadata field
175
+ * @property {string} description The description of the metadata field
176
+ * @property {?Object<Locale, string>} [descriptionLocalizations] The description localizations for the metadata field
177
+ * @property {string} key The dictionary key of the metadata field
178
+ * @property {ApplicationRoleConnectionMetadataType} type The type of the metadata field
179
+ */
180
+
181
+ /**
182
+ * Updates this application's role connection metadata records
183
+ * @param {ApplicationRoleConnectionMetadataEditOptions[]} records The new role connection metadata records
184
+ * @returns {Promise<ApplicationRoleConnectionMetadata[]>}
185
+ */
186
+ async editRoleConnectionMetadataRecords(records) {
187
+ const newRecords = await this.client.api
188
+ .applications(this.client.user.id)('role-connections')
189
+ .metadata.put({
190
+ data: records.map(record => ({
191
+ type: typeof record.type === 'string' ? ApplicationRoleConnectionMetadataTypes[record.type] : record.type,
192
+ key: record.key,
193
+ name: record.name,
194
+ name_localizations: record.nameLocalizations,
195
+ description: record.description,
196
+ description_localizations: record.descriptionLocalizations,
197
+ })),
198
+ });
199
+
200
+ return newRecords.map(data => new ApplicationRoleConnectionMetadata(data));
201
+ }
202
+ }
203
+
204
+ module.exports = ClientApplication;
@@ -0,0 +1,84 @@
1
+ 'use strict';
2
+
3
+ const { Presence } = require('./Presence');
4
+ const { TypeError } = require('../errors');
5
+ const { Opcodes, ActivityTypes } = require('../util/Constants');
6
+
7
+ /**
8
+ * Represents the client's presence.
9
+ * @extends {Presence}
10
+ */
11
+ class ClientPresence extends Presence {
12
+ constructor(client, data = {}) {
13
+ super(client, Object.assign(data, { status: data.status ?? 'online', user: { id: null } }));
14
+ }
15
+
16
+ /**
17
+ * Sets the client's presence
18
+ * @param {PresenceData} presence The data to set the presence to
19
+ * @returns {ClientPresence}
20
+ */
21
+ set(presence) {
22
+ const packet = this._parse(presence);
23
+ // Parse with custom class
24
+ this._patch(packet, true);
25
+ if (typeof presence.shardId === 'undefined') {
26
+ this.client.ws.broadcast({ op: Opcodes.STATUS_UPDATE, d: packet });
27
+ } else if (Array.isArray(presence.shardId)) {
28
+ for (const shardId of presence.shardId) {
29
+ this.client.ws.shards.get(shardId).send({ op: Opcodes.STATUS_UPDATE, d: packet });
30
+ }
31
+ } else {
32
+ this.client.ws.shards.get(presence.shardId).send({ op: Opcodes.STATUS_UPDATE, d: packet });
33
+ }
34
+ // Parse with default class
35
+ // this._patch(packet, false);
36
+ return this;
37
+ }
38
+
39
+ /**
40
+ * Parses presence data into a packet ready to be sent to Discord
41
+ * @param {PresenceData} presence The data to parse
42
+ * @returns {APIPresence}
43
+ * @private
44
+ */
45
+ _parse({ status, since, afk, activities }) {
46
+ const data = {
47
+ activities: [],
48
+ afk: typeof afk === 'boolean' ? afk : false,
49
+ since: 0,
50
+ status: status ?? this.status,
51
+ };
52
+ if (activities?.length) {
53
+ for (const [i, activity] of activities.entries()) {
54
+ if (![ActivityTypes.CUSTOM, 'CUSTOM'].includes(activity.type) && typeof activity.name !== 'string') {
55
+ throw new TypeError('INVALID_TYPE', `activities[${i}].name`, 'string');
56
+ }
57
+ activity.type ??= 0;
58
+ data.activities.push(
59
+ Object.assign(activity, {
60
+ type: typeof activity.type === 'number' ? activity.type : ActivityTypes[activity.type],
61
+ }),
62
+ );
63
+ }
64
+ } else if (!activities && (status || afk || since) && this.activities.length) {
65
+ data.activities.push(
66
+ ...this.activities.map(a =>
67
+ Object.assign(a, {
68
+ type: typeof a.type === 'number' ? a.type : ActivityTypes[a.type],
69
+ }),
70
+ ),
71
+ );
72
+ }
73
+
74
+ return data;
75
+ }
76
+ }
77
+
78
+ module.exports = ClientPresence;
79
+
80
+ /* eslint-disable max-len */
81
+ /**
82
+ * @external APIPresence
83
+ * @see {@link https://discord.com/developers/docs/rich-presence/how-to#updating-presence-update-presence-payload-fields}
84
+ */