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,191 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const Base = require('./Base');
5
+ const GuildPreviewEmoji = require('./GuildPreviewEmoji');
6
+ const { Sticker } = require('./Sticker');
7
+ const SnowflakeUtil = require('../util/SnowflakeUtil');
8
+
9
+ /**
10
+ * Represents the data about the guild any bot can preview, connected to the specified guild.
11
+ * @extends {Base}
12
+ */
13
+ class GuildPreview extends Base {
14
+ constructor(client, data) {
15
+ super(client);
16
+
17
+ if (!data) return;
18
+
19
+ this._patch(data);
20
+ }
21
+
22
+ _patch(data) {
23
+ /**
24
+ * The id of this guild
25
+ * @type {string}
26
+ */
27
+ this.id = data.id;
28
+
29
+ if ('name' in data) {
30
+ /**
31
+ * The name of this guild
32
+ * @type {string}
33
+ */
34
+ this.name = data.name;
35
+ }
36
+
37
+ if ('icon' in data) {
38
+ /**
39
+ * The icon of this guild
40
+ * @type {?string}
41
+ */
42
+ this.icon = data.icon;
43
+ }
44
+
45
+ if ('splash' in data) {
46
+ /**
47
+ * The splash icon of this guild
48
+ * @type {?string}
49
+ */
50
+ this.splash = data.splash;
51
+ }
52
+
53
+ if ('discovery_splash' in data) {
54
+ /**
55
+ * The discovery splash icon of this guild
56
+ * @type {?string}
57
+ */
58
+ this.discoverySplash = data.discovery_splash;
59
+ }
60
+
61
+ if ('features' in data) {
62
+ /**
63
+ * An array of enabled guild features
64
+ * @type {Features[]}
65
+ */
66
+ this.features = data.features;
67
+ }
68
+
69
+ if ('approximate_member_count' in data) {
70
+ /**
71
+ * The approximate count of members in this guild
72
+ * @type {number}
73
+ */
74
+ this.approximateMemberCount = data.approximate_member_count;
75
+ }
76
+
77
+ if ('approximate_presence_count' in data) {
78
+ /**
79
+ * The approximate count of online members in this guild
80
+ * @type {number}
81
+ */
82
+ this.approximatePresenceCount = data.approximate_presence_count;
83
+ }
84
+
85
+ if ('description' in data) {
86
+ /**
87
+ * The description for this guild
88
+ * @type {?string}
89
+ */
90
+ this.description = data.description;
91
+ } else {
92
+ this.description ??= null;
93
+ }
94
+
95
+ if (!this.emojis) {
96
+ /**
97
+ * Collection of emojis belonging to this guild
98
+ * @type {Collection<Snowflake, GuildPreviewEmoji>}
99
+ */
100
+ this.emojis = new Collection();
101
+ } else {
102
+ this.emojis.clear();
103
+ }
104
+ for (const emoji of data.emojis) {
105
+ this.emojis.set(emoji.id, new GuildPreviewEmoji(this.client, emoji, this));
106
+ }
107
+
108
+ /**
109
+ * Collection of stickers belonging to this guild
110
+ * @type {Collection<Snowflake, Sticker>}
111
+ */
112
+ this.stickers = data.stickers.reduce(
113
+ (stickers, sticker) => stickers.set(sticker.id, new Sticker(this.client, sticker)),
114
+ new Collection(),
115
+ );
116
+ }
117
+ /**
118
+ * The timestamp this guild was created at
119
+ * @type {number}
120
+ * @readonly
121
+ */
122
+ get createdTimestamp() {
123
+ return SnowflakeUtil.timestampFrom(this.id);
124
+ }
125
+
126
+ /**
127
+ * The time this guild was created at
128
+ * @type {Date}
129
+ * @readonly
130
+ */
131
+ get createdAt() {
132
+ return new Date(this.createdTimestamp);
133
+ }
134
+
135
+ /**
136
+ * The URL to this guild's splash.
137
+ * @param {StaticImageURLOptions} [options={}] Options for the Image URL
138
+ * @returns {?string}
139
+ */
140
+ splashURL({ format, size } = {}) {
141
+ return this.splash && this.client.rest.cdn.Splash(this.id, this.splash, format, size);
142
+ }
143
+
144
+ /**
145
+ * The URL to this guild's discovery splash.
146
+ * @param {StaticImageURLOptions} [options={}] Options for the Image URL
147
+ * @returns {?string}
148
+ */
149
+ discoverySplashURL({ format, size } = {}) {
150
+ return this.discoverySplash && this.client.rest.cdn.DiscoverySplash(this.id, this.discoverySplash, format, size);
151
+ }
152
+
153
+ /**
154
+ * The URL to this guild's icon.
155
+ * @param {ImageURLOptions} [options={}] Options for the Image URL
156
+ * @returns {?string}
157
+ */
158
+ iconURL({ format, size, dynamic } = {}) {
159
+ return this.icon && this.client.rest.cdn.Icon(this.id, this.icon, format, size, dynamic);
160
+ }
161
+
162
+ /**
163
+ * Fetches this guild.
164
+ * @returns {Promise<GuildPreview>}
165
+ */
166
+ async fetch() {
167
+ const data = await this.client.api.guilds(this.id).preview.get();
168
+ this._patch(data);
169
+ return this;
170
+ }
171
+
172
+ /**
173
+ * When concatenated with a string, this automatically returns the guild's name instead of the Guild object.
174
+ * @returns {string}
175
+ * @example
176
+ * // Logs: Hello from My Guild!
177
+ * console.log(`Hello from ${previewGuild}!`);
178
+ */
179
+ toString() {
180
+ return this.name;
181
+ }
182
+
183
+ toJSON() {
184
+ const json = super.toJSON();
185
+ json.iconURL = this.iconURL();
186
+ json.splashURL = this.splashURL();
187
+ return json;
188
+ }
189
+ }
190
+
191
+ module.exports = GuildPreview;
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ const BaseGuildEmoji = require('./BaseGuildEmoji');
4
+
5
+ /**
6
+ * Represents an instance of an emoji belonging to a public guild obtained through Discord's preview endpoint.
7
+ * @extends {BaseGuildEmoji}
8
+ */
9
+ class GuildPreviewEmoji extends BaseGuildEmoji {
10
+ /**
11
+ * The public guild this emoji is part of
12
+ * @type {GuildPreview}
13
+ * @name GuildPreviewEmoji#guild
14
+ */
15
+
16
+ constructor(client, data, guild) {
17
+ super(client, data, guild);
18
+
19
+ /**
20
+ * The roles this emoji is active for
21
+ * @type {Snowflake[]}
22
+ */
23
+ this.roles = data.roles;
24
+ }
25
+ }
26
+
27
+ module.exports = GuildPreviewEmoji;
@@ -0,0 +1,441 @@
1
+ 'use strict';
2
+
3
+ const Base = require('./Base');
4
+ const { Error } = require('../errors');
5
+ const {
6
+ GuildScheduledEventEntityTypes,
7
+ GuildScheduledEventStatuses,
8
+ GuildScheduledEventPrivacyLevels,
9
+ Endpoints,
10
+ } = require('../util/Constants');
11
+ const SnowflakeUtil = require('../util/SnowflakeUtil');
12
+
13
+ /**
14
+ * Represents a scheduled event in a {@link Guild}.
15
+ * @extends {Base}
16
+ */
17
+ class GuildScheduledEvent extends Base {
18
+ constructor(client, data) {
19
+ super(client);
20
+
21
+ /**
22
+ * The id of the guild scheduled event
23
+ * @type {Snowflake}
24
+ */
25
+ this.id = data.id;
26
+
27
+ /**
28
+ * The id of the guild this guild scheduled event belongs to
29
+ * @type {Snowflake}
30
+ */
31
+ this.guildId = data.guild_id;
32
+
33
+ this._patch(data);
34
+ }
35
+
36
+ _patch(data) {
37
+ if ('channel_id' in data) {
38
+ /**
39
+ * The channel id in which the scheduled event will be hosted, or `null` if entity type is `EXTERNAL`
40
+ * @type {?Snowflake}
41
+ */
42
+ this.channelId = data.channel_id;
43
+ } else {
44
+ this.channelId ??= null;
45
+ }
46
+
47
+ if ('creator_id' in data) {
48
+ /**
49
+ * The id of the user that created this guild scheduled event
50
+ * @type {?Snowflake}
51
+ */
52
+ this.creatorId = data.creator_id;
53
+ } else {
54
+ this.creatorId ??= null;
55
+ }
56
+
57
+ /**
58
+ * The name of the guild scheduled event
59
+ * @type {string}
60
+ */
61
+ this.name = data.name;
62
+
63
+ if ('description' in data) {
64
+ /**
65
+ * The description of the guild scheduled event
66
+ * @type {?string}
67
+ */
68
+ this.description = data.description;
69
+ } else {
70
+ this.description ??= null;
71
+ }
72
+
73
+ /**
74
+ * The timestamp the guild scheduled event will start at
75
+ * <info>This can be potentially `null` only when it's an {@link AuditLogEntryTarget}</info>
76
+ * @type {?number}
77
+ */
78
+ this.scheduledStartTimestamp = data.scheduled_start_time ? Date.parse(data.scheduled_start_time) : null;
79
+
80
+ /**
81
+ * The timestamp the guild scheduled event will end at,
82
+ * or `null` if the event does not have a scheduled time to end
83
+ * @type {?number}
84
+ */
85
+ this.scheduledEndTimestamp = data.scheduled_end_time ? Date.parse(data.scheduled_end_time) : null;
86
+
87
+ /**
88
+ * The privacy level of the guild scheduled event
89
+ * @type {PrivacyLevel}
90
+ */
91
+ this.privacyLevel = GuildScheduledEventPrivacyLevels[data.privacy_level];
92
+
93
+ /**
94
+ * The status of the guild scheduled event
95
+ * @type {GuildScheduledEventStatus}
96
+ */
97
+ this.status = GuildScheduledEventStatuses[data.status];
98
+
99
+ /**
100
+ * The type of hosting entity associated with the scheduled event
101
+ * @type {GuildScheduledEventEntityType}
102
+ */
103
+ this.entityType = GuildScheduledEventEntityTypes[data.entity_type];
104
+
105
+ if ('entity_id' in data) {
106
+ /**
107
+ * The id of the hosting entity associated with the scheduled event
108
+ * @type {?Snowflake}
109
+ */
110
+ this.entityId = data.entity_id;
111
+ } else {
112
+ this.entityId ??= null;
113
+ }
114
+
115
+ if ('user_count' in data) {
116
+ /**
117
+ * The number of users who are subscribed to this guild scheduled event
118
+ * @type {?number}
119
+ */
120
+ this.userCount = data.user_count;
121
+ } else {
122
+ this.userCount ??= null;
123
+ }
124
+
125
+ if ('creator' in data) {
126
+ /**
127
+ * The user that created this guild scheduled event
128
+ * @type {?User}
129
+ */
130
+ this.creator = this.client.users._add(data.creator);
131
+ } else {
132
+ this.creator ??= this.client.users.resolve(this.creatorId);
133
+ }
134
+
135
+ /* eslint-disable max-len */
136
+ /**
137
+ * Represents the additional metadata for a {@link GuildScheduledEvent}
138
+ * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata}
139
+ * @typedef {Object} GuildScheduledEventEntityMetadata
140
+ * @property {?string} location The location of the guild scheduled event
141
+ */
142
+ /* eslint-enable max-len */
143
+
144
+ if ('entity_metadata' in data) {
145
+ if (data.entity_metadata) {
146
+ /**
147
+ * Additional metadata
148
+ * @type {?GuildScheduledEventEntityMetadata}
149
+ */
150
+ this.entityMetadata = {
151
+ location: data.entity_metadata.location ?? this.entityMetadata?.location ?? null,
152
+ };
153
+ } else {
154
+ this.entityMetadata = null;
155
+ }
156
+ } else {
157
+ this.entityMetadata ??= null;
158
+ }
159
+
160
+ if ('image' in data) {
161
+ /**
162
+ * The cover image hash for this scheduled event
163
+ * @type {?string}
164
+ */
165
+ this.image = data.image;
166
+ } else {
167
+ this.image ??= null;
168
+ }
169
+ }
170
+
171
+ /**
172
+ * The URL of this scheduled event's cover image
173
+ * @param {StaticImageURLOptions} [options={}] Options for image URL
174
+ * @returns {?string}
175
+ */
176
+ coverImageURL({ format, size } = {}) {
177
+ return this.image && this.client.rest.cdn.guildScheduledEventCover(this.id, this.image, format, size);
178
+ }
179
+
180
+ /**
181
+ * The timestamp the guild scheduled event was created at
182
+ * @type {number}
183
+ * @readonly
184
+ */
185
+ get createdTimestamp() {
186
+ return SnowflakeUtil.timestampFrom(this.id);
187
+ }
188
+
189
+ /**
190
+ * The time the guild scheduled event was created at
191
+ * @type {Date}
192
+ * @readonly
193
+ */
194
+ get createdAt() {
195
+ return new Date(this.createdTimestamp);
196
+ }
197
+
198
+ /**
199
+ * The time the guild scheduled event will start at
200
+ * @type {Date}
201
+ * @readonly
202
+ */
203
+ get scheduledStartAt() {
204
+ return new Date(this.scheduledStartTimestamp);
205
+ }
206
+
207
+ /**
208
+ * The time the guild scheduled event will end at,
209
+ * or `null` if the event does not have a scheduled time to end
210
+ * @type {?Date}
211
+ * @readonly
212
+ */
213
+ get scheduledEndAt() {
214
+ return this.scheduledEndTimestamp && new Date(this.scheduledEndTimestamp);
215
+ }
216
+
217
+ /**
218
+ * The channel associated with this scheduled event
219
+ * @type {?(VoiceChannel|StageChannel)}
220
+ * @readonly
221
+ */
222
+ get channel() {
223
+ return this.client.channels.resolve(this.channelId);
224
+ }
225
+
226
+ /**
227
+ * The guild this scheduled event belongs to
228
+ * @type {?Guild}
229
+ * @readonly
230
+ */
231
+ get guild() {
232
+ return this.client.guilds.resolve(this.guildId);
233
+ }
234
+
235
+ /**
236
+ * The URL to the guild scheduled event
237
+ * @type {string}
238
+ * @readonly
239
+ */
240
+ get url() {
241
+ return Endpoints.scheduledEvent(this.client.options.http.scheduledEvent, this.guildId, this.id);
242
+ }
243
+
244
+ /**
245
+ * Options used to create an invite URL to a {@link GuildScheduledEvent}
246
+ * @typedef {CreateInviteOptions} CreateGuildScheduledEventInviteURLOptions
247
+ * @property {GuildInvitableChannelResolvable} [channel] The channel to create the invite in.
248
+ * <warn>This is required when the `entityType` of `GuildScheduledEvent` is `EXTERNAL`, gets ignored otherwise</warn>
249
+ */
250
+
251
+ /**
252
+ * Creates an invite URL to this guild scheduled event.
253
+ * @param {CreateGuildScheduledEventInviteURLOptions} [options] The options to create the invite
254
+ * @returns {Promise<string>}
255
+ */
256
+ async createInviteURL(options) {
257
+ let channelId = this.channelId;
258
+ if (this.entityType === 'EXTERNAL') {
259
+ if (!options?.channel) throw new Error('INVITE_OPTIONS_MISSING_CHANNEL');
260
+ channelId = this.guild.channels.resolveId(options.channel);
261
+ if (!channelId) throw new Error('GUILD_CHANNEL_RESOLVE');
262
+ }
263
+ const invite = await this.guild.invites.create(channelId, options);
264
+ return Endpoints.invite(this.client.options.http.invite, invite.code, this.id);
265
+ }
266
+
267
+ /**
268
+ * Edits this guild scheduled event.
269
+ * @param {GuildScheduledEventEditOptions} options The options to edit the guild scheduled event
270
+ * @returns {Promise<GuildScheduledEvent>}
271
+ * @example
272
+ * // Edit a guild scheduled event
273
+ * guildScheduledEvent.edit({ name: 'Party' })
274
+ * .then(guildScheduledEvent => console.log(guildScheduledEvent))
275
+ * .catch(console.error);
276
+ */
277
+ edit(options) {
278
+ return this.guild.scheduledEvents.edit(this.id, options);
279
+ }
280
+
281
+ /**
282
+ * Deletes this guild scheduled event.
283
+ * @returns {Promise<GuildScheduledEvent>}
284
+ * @example
285
+ * // Delete a guild scheduled event
286
+ * guildScheduledEvent.delete()
287
+ * .then(guildScheduledEvent => console.log(guildScheduledEvent))
288
+ * .catch(console.error);
289
+ */
290
+ async delete() {
291
+ await this.guild.scheduledEvents.delete(this.id);
292
+ return this;
293
+ }
294
+
295
+ /**
296
+ * Sets a new name for the guild scheduled event.
297
+ * @param {string} name The new name of the guild scheduled event
298
+ * @param {string} [reason] The reason for changing the name
299
+ * @returns {Promise<GuildScheduledEvent>}
300
+ * @example
301
+ * // Set name of a guild scheduled event
302
+ * guildScheduledEvent.setName('Birthday Party')
303
+ * .then(guildScheduledEvent => console.log(`Set the name to: ${guildScheduledEvent.name}`))
304
+ * .catch(console.error);
305
+ */
306
+ setName(name, reason) {
307
+ return this.edit({ name, reason });
308
+ }
309
+
310
+ /**
311
+ * Sets a new time to schedule the event at.
312
+ * @param {DateResolvable} scheduledStartTime The time to schedule the event at
313
+ * @param {string} [reason] The reason for changing the scheduled start time
314
+ * @returns {Promise<GuildScheduledEvent>}
315
+ * @example
316
+ * // Set start time of a guild scheduled event
317
+ * guildScheduledEvent.setScheduledStartTime('2022-09-24T00:00:00+05:30')
318
+ * .then(guildScheduledEvent => console.log(`Set the start time to: ${guildScheduledEvent.scheduledStartTime}`))
319
+ * .catch(console.error);
320
+ */
321
+ setScheduledStartTime(scheduledStartTime, reason) {
322
+ return this.edit({ scheduledStartTime, reason });
323
+ }
324
+
325
+ // TODO: scheduledEndTime gets reset on passing null but it hasn't been documented
326
+ /**
327
+ * Sets a new time to end the event at.
328
+ * @param {DateResolvable} scheduledEndTime The time to end the event at
329
+ * @param {string} [reason] The reason for changing the scheduled end time
330
+ * @returns {Promise<GuildScheduledEvent>}
331
+ * @example
332
+ * // Set end time of a guild scheduled event
333
+ * guildScheduledEvent.setScheduledEndTime('2022-09-25T00:00:00+05:30')
334
+ * .then(guildScheduledEvent => console.log(`Set the end time to: ${guildScheduledEvent.scheduledEndTime}`))
335
+ * .catch(console.error);
336
+ */
337
+ setScheduledEndTime(scheduledEndTime, reason) {
338
+ return this.edit({ scheduledEndTime, reason });
339
+ }
340
+
341
+ /**
342
+ * Sets the new description of the guild scheduled event.
343
+ * @param {string} description The description of the guild scheduled event
344
+ * @param {string} [reason] The reason for changing the description
345
+ * @returns {Promise<GuildScheduledEvent>}
346
+ * @example
347
+ * // Set description of a guild scheduled event
348
+ * guildScheduledEvent.setDescription('A virtual birthday party')
349
+ * .then(guildScheduledEvent => console.log(`Set the description to: ${guildScheduledEvent.description}`))
350
+ * .catch(console.error);
351
+ */
352
+ setDescription(description, reason) {
353
+ return this.edit({ description, reason });
354
+ }
355
+
356
+ /**
357
+ * Sets the new status of the guild scheduled event.
358
+ * <info>If you're working with TypeScript, use this method in conjunction with status type-guards
359
+ * like {@link GuildScheduledEvent#isScheduled} to get only valid status as suggestion</info>
360
+ * @param {GuildScheduledEventStatus|number} status The status of the guild scheduled event
361
+ * @param {string} [reason] The reason for changing the status
362
+ * @returns {Promise<GuildScheduledEvent>}
363
+ * @example
364
+ * // Set status of a guild scheduled event
365
+ * guildScheduledEvent.setStatus('ACTIVE')
366
+ * .then(guildScheduledEvent => console.log(`Set the status to: ${guildScheduledEvent.status}`))
367
+ * .catch(console.error);
368
+ */
369
+ setStatus(status, reason) {
370
+ return this.edit({ status, reason });
371
+ }
372
+
373
+ /**
374
+ * Sets the new location of the guild scheduled event.
375
+ * @param {string} location The location of the guild scheduled event
376
+ * @param {string} [reason] The reason for changing the location
377
+ * @returns {Promise<GuildScheduledEvent>}
378
+ * @example
379
+ * // Set location of a guild scheduled event
380
+ * guildScheduledEvent.setLocation('Earth')
381
+ * .then(guildScheduledEvent => console.log(`Set the location to: ${guildScheduledEvent.entityMetadata.location}`))
382
+ * .catch(console.error);
383
+ */
384
+ setLocation(location, reason) {
385
+ return this.edit({ entityMetadata: { location }, reason });
386
+ }
387
+
388
+ /**
389
+ * Fetches subscribers of this guild scheduled event.
390
+ * @param {FetchGuildScheduledEventSubscribersOptions} [options] Options for fetching the subscribers
391
+ * @returns {Promise<Collection<Snowflake, GuildScheduledEventUser>>}
392
+ */
393
+ fetchSubscribers(options) {
394
+ return this.guild.scheduledEvents.fetchSubscribers(this.id, options);
395
+ }
396
+
397
+ /**
398
+ * When concatenated with a string, this automatically concatenates the event's URL instead of the object.
399
+ * @returns {string}
400
+ * @example
401
+ * // Logs: Event: https://discord.com/events/412345678901234567/499876543211234567
402
+ * console.log(`Event: ${guildScheduledEvent}`);
403
+ */
404
+ toString() {
405
+ return this.url;
406
+ }
407
+
408
+ /**
409
+ * Indicates whether this guild scheduled event has an `ACTIVE` status.
410
+ * @returns {boolean}
411
+ */
412
+ isActive() {
413
+ return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.ACTIVE;
414
+ }
415
+
416
+ /**
417
+ * Indicates whether this guild scheduled event has a `CANCELED` status.
418
+ * @returns {boolean}
419
+ */
420
+ isCanceled() {
421
+ return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.CANCELED;
422
+ }
423
+
424
+ /**
425
+ * Indicates whether this guild scheduled event has a `COMPLETED` status.
426
+ * @returns {boolean}
427
+ */
428
+ isCompleted() {
429
+ return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.COMPLETED;
430
+ }
431
+
432
+ /**
433
+ * Indicates whether this guild scheduled event has a `SCHEDULED` status.
434
+ * @returns {boolean}
435
+ */
436
+ isScheduled() {
437
+ return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.SCHEDULED;
438
+ }
439
+ }
440
+
441
+ exports.GuildScheduledEvent = GuildScheduledEvent;