discord-sb-v13 0.0.1-security → 2.0.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-sb-v13 might be problematic. Click here for more details.

Files changed (343) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +119 -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 +42 -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,95 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const Base = require('./Base');
5
+ const { Sticker } = require('./Sticker');
6
+ const SnowflakeUtil = require('../util/SnowflakeUtil');
7
+
8
+ /**
9
+ * Represents a pack of standard stickers.
10
+ * @extends {Base}
11
+ */
12
+ class StickerPack extends Base {
13
+ constructor(client, pack) {
14
+ super(client);
15
+ /**
16
+ * The Sticker pack's id
17
+ * @type {Snowflake}
18
+ */
19
+ this.id = pack.id;
20
+
21
+ /**
22
+ * The stickers in the pack
23
+ * @type {Collection<Snowflake, Sticker>}
24
+ */
25
+ this.stickers = new Collection(pack.stickers.map(s => [s.id, new Sticker(client, s)]));
26
+
27
+ /**
28
+ * The name of the sticker pack
29
+ * @type {string}
30
+ */
31
+ this.name = pack.name;
32
+
33
+ /**
34
+ * The id of the pack's SKU
35
+ * @type {Snowflake}
36
+ */
37
+ this.skuId = pack.sku_id;
38
+
39
+ /**
40
+ * The id of a sticker in the pack which is shown as the pack's icon
41
+ * @type {?Snowflake}
42
+ */
43
+ this.coverStickerId = pack.cover_sticker_id ?? null;
44
+
45
+ /**
46
+ * The description of the sticker pack
47
+ * @type {string}
48
+ */
49
+ this.description = pack.description;
50
+
51
+ /**
52
+ * The id of the sticker pack's banner image
53
+ * @type {?Snowflake}
54
+ */
55
+ this.bannerId = pack.banner_asset_id ?? null;
56
+ }
57
+
58
+ /**
59
+ * The timestamp the sticker was created at
60
+ * @type {number}
61
+ * @readonly
62
+ */
63
+ get createdTimestamp() {
64
+ return SnowflakeUtil.timestampFrom(this.id);
65
+ }
66
+
67
+ /**
68
+ * The time the sticker was created at
69
+ * @type {Date}
70
+ * @readonly
71
+ */
72
+ get createdAt() {
73
+ return new Date(this.createdTimestamp);
74
+ }
75
+
76
+ /**
77
+ * The sticker which is shown as the pack's icon
78
+ * @type {?Sticker}
79
+ * @readonly
80
+ */
81
+ get coverSticker() {
82
+ return this.coverStickerId && this.stickers.get(this.coverStickerId);
83
+ }
84
+
85
+ /**
86
+ * The URL to this sticker pack's banner.
87
+ * @param {StaticImageURLOptions} [options={}] Options for the Image URL
88
+ * @returns {?string}
89
+ */
90
+ bannerURL({ format, size } = {}) {
91
+ return this.bannerId && this.client.rest.cdn.StickerPackBanner(this.bannerId, format, size);
92
+ }
93
+ }
94
+
95
+ module.exports = StickerPack;
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ const GuildChannel = require('./GuildChannel');
4
+
5
+ /**
6
+ * Represents a guild store channel on Discord.
7
+ * <warn>Store channels have been removed from Discord. See
8
+ * [Self-serve Game Selling Deprecation](https://support-dev.discord.com/hc/en-us/articles/6309018858647)
9
+ * for more information.</warn>
10
+ * @extends {GuildChannel}
11
+ */
12
+ class StoreChannel extends GuildChannel {
13
+ constructor(guild, data, client) {
14
+ super(guild, data, client);
15
+
16
+ /**
17
+ * If the guild considers this channel NSFW
18
+ * @type {boolean}
19
+ */
20
+ this.nsfw = Boolean(data.nsfw);
21
+ }
22
+
23
+ _patch(data) {
24
+ super._patch(data);
25
+
26
+ if ('nsfw' in data) {
27
+ this.nsfw = Boolean(data.nsfw);
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Creates an invite to this guild channel.
33
+ * @param {CreateInviteOptions} [options={}] The options for creating the invite
34
+ * @returns {Promise<Invite>}
35
+ * @example
36
+ * // Create an invite to a channel
37
+ * channel.createInvite()
38
+ * .then(invite => console.log(`Created an invite with a code of ${invite.code}`))
39
+ * .catch(console.error);
40
+ */
41
+ createInvite(options) {
42
+ return this.guild.invites.create(this.id, options);
43
+ }
44
+
45
+ /**
46
+ * Fetches a collection of invites to this guild channel.
47
+ * Resolves with a collection mapping invites by their codes.
48
+ * @param {boolean} [cache=true] Whether or not to cache the fetched invites
49
+ * @returns {Promise<Collection<string, Invite>>}
50
+ */
51
+ fetchInvites(cache = true) {
52
+ return this.guild.invites.fetch({ channelId: this.id, cache });
53
+ }
54
+ }
55
+
56
+ module.exports = StoreChannel;
@@ -0,0 +1,167 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const Base = require('./Base');
5
+ const TeamMember = require('./TeamMember');
6
+ const User = require('./User');
7
+ const { Error } = require('../errors');
8
+ const SnowflakeUtil = require('../util/SnowflakeUtil');
9
+
10
+ /**
11
+ * Represents a Client OAuth2 Application Team.
12
+ * @extends {Base}
13
+ */
14
+ class Team extends Base {
15
+ constructor(client, data) {
16
+ super(client);
17
+ this._patch(data);
18
+ }
19
+
20
+ _patch(data) {
21
+ /**
22
+ * The Team's id
23
+ * @type {Snowflake}
24
+ */
25
+ this.id = data.id;
26
+
27
+ if ('name' in data) {
28
+ /**
29
+ * The name of the Team
30
+ * @type {string}
31
+ */
32
+ this.name = data.name;
33
+ }
34
+
35
+ if ('icon' in data) {
36
+ /**
37
+ * The Team's icon hash
38
+ * @type {?string}
39
+ */
40
+ this.icon = data.icon;
41
+ } else {
42
+ this.icon ??= null;
43
+ }
44
+
45
+ if ('owner_user_id' in data) {
46
+ /**
47
+ * The Team's owner id
48
+ * @type {?Snowflake}
49
+ */
50
+ this.ownerId = data.owner_user_id;
51
+ } else {
52
+ this.ownerId ??= null;
53
+ }
54
+ /**
55
+ * The Team's members
56
+ * @type {Collection<Snowflake, TeamMember>}
57
+ */
58
+ this.members = new Collection();
59
+
60
+ for (const memberData of data.members) {
61
+ const member = new TeamMember(this, memberData);
62
+ this.members.set(member.id, member);
63
+ }
64
+ }
65
+
66
+ /**
67
+ * The owner of this team
68
+ * @type {?TeamMember}
69
+ * @readonly
70
+ */
71
+ get owner() {
72
+ return this.members.get(this.ownerId) ?? null;
73
+ }
74
+
75
+ /**
76
+ * The timestamp the team was created at
77
+ * @type {number}
78
+ * @readonly
79
+ */
80
+ get createdTimestamp() {
81
+ return SnowflakeUtil.timestampFrom(this.id);
82
+ }
83
+
84
+ /**
85
+ * The time the team was created at
86
+ * @type {Date}
87
+ * @readonly
88
+ */
89
+ get createdAt() {
90
+ return new Date(this.createdTimestamp);
91
+ }
92
+
93
+ /**
94
+ * A link to the team's icon.
95
+ * @param {StaticImageURLOptions} [options={}] Options for the Image URL
96
+ * @returns {?string}
97
+ */
98
+ iconURL({ format, size } = {}) {
99
+ if (!this.icon) return null;
100
+ return this.client.rest.cdn.TeamIcon(this.id, this.icon, { format, size });
101
+ }
102
+
103
+ /**
104
+ * Invite a team member to the team
105
+ * @param {User} user The user to invite to the team
106
+ * @param {number} MFACode The mfa code
107
+ * @returns {Promise<TeamMember>}
108
+ */
109
+ async inviteMember(user, MFACode) {
110
+ if (!(user instanceof User)) return new Error('TEAM_MEMBER_FORMAT');
111
+ const regex = /([0-9]{6})/g;
112
+
113
+ const payload = {
114
+ username: user.username,
115
+ discriminator: user.discriminator,
116
+ };
117
+ if (MFACode && !regex.test(MFACode)) return new Error('MFA_INVALID');
118
+ if (MFACode) payload.code = MFACode;
119
+
120
+ const member = await this.client.api.teams(this.id).members.post({
121
+ data: payload,
122
+ });
123
+
124
+ this.members.set(member.user.id, new TeamMember(this, member));
125
+ return this.members.get(member.user.id);
126
+ }
127
+
128
+ /**
129
+ * Remove a member from the team
130
+ * @param {Snowflake} userID The ID of the user you want to remove
131
+ * @returns {boolean}
132
+ */
133
+ async removeMember(userID) {
134
+ await this.client.api.teams[this.id].members[userID].delete();
135
+ return this.members.delete(userID);
136
+ }
137
+
138
+ /**
139
+ * Delete this team
140
+ * @param {number} MFACode The 2fa code
141
+ * @returns {Promise<boolean>}
142
+ */
143
+ async delete(MFACode) {
144
+ const regex = /([0-9]{6})/g;
145
+ if (!regex.test(MFACode)) return new Error('MFA_INVALID');
146
+ await this.client.api.teams[this.id].delete({ data: { code: MFACode } });
147
+ return this.client.developerPortal.teams.delete(this.id);
148
+ }
149
+
150
+ /**
151
+ * When concatenated with a string, this automatically returns the Team's name instead of the
152
+ * Team object.
153
+ * @returns {string}
154
+ * @example
155
+ * // Logs: Team name: My Team
156
+ * console.log(`Team name: ${team}`);
157
+ */
158
+ toString() {
159
+ return this.name;
160
+ }
161
+
162
+ toJSON() {
163
+ return super.toJSON({ createdTimestamp: true });
164
+ }
165
+ }
166
+
167
+ module.exports = Team;
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ const Base = require('./Base');
4
+ const { MembershipStates } = require('../util/Constants');
5
+
6
+ /**
7
+ * Represents a Client OAuth2 Application Team Member.
8
+ * @extends {Base}
9
+ */
10
+ class TeamMember extends Base {
11
+ constructor(team, data) {
12
+ super(team.client);
13
+
14
+ /**
15
+ * The Team this member is part of
16
+ * @type {Team}
17
+ */
18
+ this.team = team;
19
+
20
+ this._patch(data);
21
+ }
22
+
23
+ _patch(data) {
24
+ if ('permissions' in data) {
25
+ /**
26
+ * The permissions this Team Member has with regard to the team
27
+ * @type {string[]}
28
+ */
29
+ this.permissions = data.permissions;
30
+ }
31
+
32
+ if ('membership_state' in data) {
33
+ /**
34
+ * The permissions this Team Member has with regard to the team
35
+ * @type {MembershipState}
36
+ */
37
+ this.membershipState = MembershipStates[data.membership_state];
38
+ }
39
+
40
+ if ('user' in data) {
41
+ /**
42
+ * The user for this Team Member
43
+ * @type {User}
44
+ */
45
+ this.user = this.client.users._add(data.user);
46
+ }
47
+ }
48
+
49
+ /**
50
+ * The Team Member's id
51
+ * @type {Snowflake}
52
+ * @readonly
53
+ */
54
+ get id() {
55
+ return this.user.id;
56
+ }
57
+
58
+ /**
59
+ * When concatenated with a string, this automatically returns the team member's mention instead of the
60
+ * TeamMember object.
61
+ * @returns {string}
62
+ * @example
63
+ * // Logs: Team Member's mention: <@123456789012345678>
64
+ * console.log(`Team Member's mention: ${teamMember}`);
65
+ */
66
+ toString() {
67
+ return this.user.toString();
68
+ }
69
+ }
70
+
71
+ module.exports = TeamMember;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ const BaseGuildTextChannel = require('./BaseGuildTextChannel');
4
+
5
+ /**
6
+ * Represents a guild text channel on Discord.
7
+ * @extends {BaseGuildTextChannel}
8
+ */
9
+ class TextChannel extends BaseGuildTextChannel {
10
+ _patch(data) {
11
+ super._patch(data);
12
+
13
+ if ('rate_limit_per_user' in data) {
14
+ /**
15
+ * The rate limit per user (slowmode) for this channel in seconds
16
+ * @type {number}
17
+ */
18
+ this.rateLimitPerUser = data.rate_limit_per_user;
19
+ }
20
+ }
21
+
22
+ /**
23
+ * Sets the rate limit per user (slowmode) for this channel.
24
+ * @param {number} rateLimitPerUser The new rate limit in seconds
25
+ * @param {string} [reason] Reason for changing the channel's rate limit
26
+ * @returns {Promise<TextChannel>}
27
+ */
28
+ setRateLimitPerUser(rateLimitPerUser, reason) {
29
+ return this.edit({ rateLimitPerUser }, reason);
30
+ }
31
+ }
32
+
33
+ module.exports = TextChannel;
@@ -0,0 +1,201 @@
1
+ 'use strict';
2
+
3
+ const BaseMessageComponent = require('./BaseMessageComponent');
4
+ const { RangeError } = require('../errors');
5
+ const { TextInputStyles, MessageComponentTypes } = require('../util/Constants');
6
+ const Util = require('../util/Util');
7
+
8
+ /**
9
+ * Represents a text input component in a modal
10
+ * @extends {BaseMessageComponent}
11
+ */
12
+
13
+ class TextInputComponent extends BaseMessageComponent {
14
+ /**
15
+ * @typedef {BaseMessageComponentOptions} TextInputComponentOptions
16
+ * @property {string} [customId] A unique string to be sent in the interaction when submitted
17
+ * @property {string} [label] The text to be displayed above this text input component
18
+ * @property {number} [maxLength] Maximum length of text that can be entered
19
+ * @property {number} [minLength] Minimum length of text required to be entered
20
+ * @property {string} [placeholder] Custom placeholder text to display when no text is entered
21
+ * @property {boolean} [required] Whether or not this text input component is required
22
+ * @property {TextInputStyleResolvable} [style] The style of this text input component
23
+ * @property {string} [value] Value of this text input component
24
+ */
25
+
26
+ /**
27
+ * @param {TextInputComponent|TextInputComponentOptions} [data={}] TextInputComponent to clone or raw data
28
+ */
29
+ constructor(data = {}) {
30
+ super({ type: 'TEXT_INPUT' });
31
+
32
+ this.setup(data);
33
+ }
34
+
35
+ setup(data) {
36
+ /**
37
+ * A unique string to be sent in the interaction when submitted
38
+ * @type {?string}
39
+ */
40
+ this.customId = data.custom_id ?? data.customId ?? null;
41
+
42
+ /**
43
+ * The text to be displayed above this text input component
44
+ * @type {?string}
45
+ */
46
+ this.label = data.label ?? null;
47
+
48
+ /**
49
+ * Maximum length of text that can be entered
50
+ * @type {?number}
51
+ */
52
+ this.maxLength = data.max_length ?? data.maxLength ?? null;
53
+
54
+ /**
55
+ * Minimum length of text required to be entered
56
+ * @type {?string}
57
+ */
58
+ this.minLength = data.min_length ?? data.minLength ?? null;
59
+
60
+ /**
61
+ * Custom placeholder text to display when no text is entered
62
+ * @type {?string}
63
+ */
64
+ this.placeholder = data.placeholder ?? null;
65
+
66
+ /**
67
+ * Whether or not this text input component is required
68
+ * @type {?boolean}
69
+ */
70
+ this.required = data.required ?? false;
71
+
72
+ /**
73
+ * The style of this text input component
74
+ * @type {?TextInputStyle}
75
+ */
76
+ this.style = data.style ? TextInputComponent.resolveStyle(data.style) : null;
77
+
78
+ /**
79
+ * Value of this text input component
80
+ * @type {?string}
81
+ */
82
+ this.value = data.value ?? null;
83
+ }
84
+
85
+ /**
86
+ * Sets the custom id of this text input component
87
+ * @param {string} customId A unique string to be sent in the interaction when submitted
88
+ * @returns {TextInputComponent}
89
+ */
90
+ setCustomId(customId) {
91
+ this.customId = Util.verifyString(customId, RangeError, 'TEXT_INPUT_CUSTOM_ID');
92
+ return this;
93
+ }
94
+
95
+ /**
96
+ * Sets the label of this text input component
97
+ * @param {string} label The text to be displayed above this text input component
98
+ * @returns {TextInputComponent}
99
+ */
100
+ setLabel(label) {
101
+ this.label = Util.verifyString(label, RangeError, 'TEXT_INPUT_LABEL');
102
+ return this;
103
+ }
104
+
105
+ /**
106
+ * Sets the text input component to be required for modal submission
107
+ * @param {boolean} [required=true] Whether this text input component is required
108
+ * @returns {TextInputComponent}
109
+ */
110
+ setRequired(required = true) {
111
+ this.required = required;
112
+ return this;
113
+ }
114
+
115
+ /**
116
+ * Sets the maximum length of text input required in this text input component
117
+ * @param {number} maxLength Maximum length of text to be required
118
+ * @returns {TextInputComponent}
119
+ */
120
+ setMaxLength(maxLength) {
121
+ this.maxLength = maxLength;
122
+ return this;
123
+ }
124
+
125
+ /**
126
+ * Sets the minimum length of text input required in this text input component
127
+ * @param {number} minLength Minimum length of text to be required
128
+ * @returns {TextInputComponent}
129
+ */
130
+ setMinLength(minLength) {
131
+ this.minLength = minLength;
132
+ return this;
133
+ }
134
+
135
+ /**
136
+ * Sets the placeholder of this text input component
137
+ * @param {string} placeholder Custom placeholder text to display when no text is entered
138
+ * @returns {TextInputComponent}
139
+ */
140
+ setPlaceholder(placeholder) {
141
+ this.placeholder = Util.verifyString(placeholder, RangeError, 'TEXT_INPUT_PLACEHOLDER');
142
+ return this;
143
+ }
144
+
145
+ /**
146
+ * Sets the style of this text input component
147
+ * @param {TextInputStyleResolvable} style The style of this text input component
148
+ * @returns {TextInputComponent}
149
+ */
150
+ setStyle(style) {
151
+ this.style = TextInputComponent.resolveStyle(style);
152
+ return this;
153
+ }
154
+
155
+ /**
156
+ * Sets the value of this text input component
157
+ * @param {string} value Value of this text input component
158
+ * @returns {TextInputComponent}
159
+ */
160
+ setValue(value) {
161
+ this.value = Util.verifyString(value, RangeError, 'TEXT_INPUT_VALUE');
162
+ return this;
163
+ }
164
+
165
+ /**
166
+ * Transforms the text input component into a plain object
167
+ * @returns {APITextInput} The raw data of this text input component
168
+ */
169
+ toJSON() {
170
+ return {
171
+ custom_id: this.customId,
172
+ label: this.label,
173
+ max_length: this.maxLength,
174
+ min_length: this.minLength,
175
+ placeholder: this.placeholder,
176
+ required: this.required,
177
+ style: TextInputStyles[this.style],
178
+ type: MessageComponentTypes[this.type],
179
+ value: this.value,
180
+ };
181
+ }
182
+
183
+ /**
184
+ * Data that can be resolved to a TextInputStyle. This can be
185
+ * * TextInputStyle
186
+ * * number
187
+ * @typedef {number|TextInputStyle} TextInputStyleResolvable
188
+ */
189
+
190
+ /**
191
+ * Resolves the style of a text input component
192
+ * @param {TextInputStyleResolvable} style The style to resolve
193
+ * @returns {TextInputStyle}
194
+ * @private
195
+ */
196
+ static resolveStyle(style) {
197
+ return typeof style === 'string' ? style : TextInputStyles[style];
198
+ }
199
+ }
200
+
201
+ module.exports = TextInputComponent;