safeness-sb-new 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/README.md +115 -0
  2. package/package.json +96 -0
  3. package/src/WebSocket.js +39 -0
  4. package/src/client/BaseClient.js +86 -0
  5. package/src/client/Client.js +836 -0
  6. package/src/client/WebhookClient.js +61 -0
  7. package/src/client/actions/Action.js +120 -0
  8. package/src/client/actions/ActionsManager.js +78 -0
  9. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  10. package/src/client/actions/AutoModerationActionExecution.js +27 -0
  11. package/src/client/actions/AutoModerationRuleCreate.js +28 -0
  12. package/src/client/actions/AutoModerationRuleDelete.js +32 -0
  13. package/src/client/actions/AutoModerationRuleUpdate.js +30 -0
  14. package/src/client/actions/ChannelCreate.js +23 -0
  15. package/src/client/actions/ChannelDelete.js +39 -0
  16. package/src/client/actions/ChannelUpdate.js +43 -0
  17. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  18. package/src/client/actions/GuildBanAdd.js +20 -0
  19. package/src/client/actions/GuildBanRemove.js +25 -0
  20. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  21. package/src/client/actions/GuildDelete.js +65 -0
  22. package/src/client/actions/GuildEmojiCreate.js +20 -0
  23. package/src/client/actions/GuildEmojiDelete.js +21 -0
  24. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  25. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  26. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  27. package/src/client/actions/GuildMemberRemove.js +33 -0
  28. package/src/client/actions/GuildMemberUpdate.js +44 -0
  29. package/src/client/actions/GuildRoleCreate.js +25 -0
  30. package/src/client/actions/GuildRoleDelete.js +31 -0
  31. package/src/client/actions/GuildRoleUpdate.js +39 -0
  32. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  33. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  34. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  35. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  36. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  37. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  38. package/src/client/actions/GuildStickerCreate.js +20 -0
  39. package/src/client/actions/GuildStickerDelete.js +21 -0
  40. package/src/client/actions/GuildStickerUpdate.js +20 -0
  41. package/src/client/actions/GuildStickersUpdate.js +34 -0
  42. package/src/client/actions/GuildUpdate.js +33 -0
  43. package/src/client/actions/InviteCreate.js +28 -0
  44. package/src/client/actions/InviteDelete.js +30 -0
  45. package/src/client/actions/MessageCreate.js +46 -0
  46. package/src/client/actions/MessageDelete.js +32 -0
  47. package/src/client/actions/MessageDeleteBulk.js +46 -0
  48. package/src/client/actions/MessageReactionAdd.js +56 -0
  49. package/src/client/actions/MessageReactionRemove.js +45 -0
  50. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  51. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  52. package/src/client/actions/MessageUpdate.js +26 -0
  53. package/src/client/actions/PresenceUpdate.js +46 -0
  54. package/src/client/actions/StageInstanceCreate.js +28 -0
  55. package/src/client/actions/StageInstanceDelete.js +33 -0
  56. package/src/client/actions/StageInstanceUpdate.js +30 -0
  57. package/src/client/actions/ThreadCreate.js +24 -0
  58. package/src/client/actions/ThreadDelete.js +32 -0
  59. package/src/client/actions/ThreadListSync.js +59 -0
  60. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  61. package/src/client/actions/ThreadMembersUpdate.js +34 -0
  62. package/src/client/actions/TypingStart.js +29 -0
  63. package/src/client/actions/UserUpdate.js +35 -0
  64. package/src/client/actions/VoiceStateUpdate.js +57 -0
  65. package/src/client/actions/WebhooksUpdate.js +20 -0
  66. package/src/client/voice/ClientVoiceManager.js +150 -0
  67. package/src/client/voice/VoiceConnection.js +849 -0
  68. package/src/client/voice/dispatcher/AnnexBDispatcher.js +120 -0
  69. package/src/client/voice/dispatcher/AudioDispatcher.js +115 -0
  70. package/src/client/voice/dispatcher/BaseDispatcher.js +405 -0
  71. package/src/client/voice/dispatcher/VPxDispatcher.js +52 -0
  72. package/src/client/voice/dispatcher/VideoDispatcher.js +31 -0
  73. package/src/client/voice/networking/VoiceUDPClient.js +188 -0
  74. package/src/client/voice/networking/VoiceWebSocket.js +280 -0
  75. package/src/client/voice/player/MediaPlayer.js +294 -0
  76. package/src/client/voice/player/processing/AnnexBNalSplitter.js +244 -0
  77. package/src/client/voice/player/processing/IvfSplitter.js +106 -0
  78. package/src/client/voice/receiver/PacketHandler.js +170 -0
  79. package/src/client/voice/receiver/Receiver.js +82 -0
  80. package/src/client/voice/receiver/video/IvfJoinner.js +106 -0
  81. package/src/client/voice/util/Function.js +14 -0
  82. package/src/client/voice/util/PlayInterface.js +122 -0
  83. package/src/client/voice/util/Secretbox.js +42 -0
  84. package/src/client/voice/util/Silence.js +16 -0
  85. package/src/client/voice/util/Socket.js +62 -0
  86. package/src/client/voice/util/VolumeInterface.js +104 -0
  87. package/src/client/websocket/WebSocketManager.js +392 -0
  88. package/src/client/websocket/WebSocketShard.js +906 -0
  89. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  90. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  91. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  92. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  93. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  94. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  95. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  96. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  97. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  98. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  99. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  100. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  101. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  102. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  103. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -0
  104. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  105. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  106. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  107. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  108. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  109. package/src/client/websocket/handlers/GUILD_CREATE.js +52 -0
  110. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  111. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  112. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  113. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  114. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  115. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  116. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  117. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  118. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  119. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  120. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  121. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  122. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  123. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  124. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  125. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  126. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  127. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -0
  128. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  129. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  130. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  131. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  132. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  133. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +22 -0
  134. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +12 -0
  135. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  136. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  137. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  138. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  139. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  140. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  141. package/src/client/websocket/handlers/READY.js +120 -0
  142. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -0
  143. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -0
  144. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -0
  145. package/src/client/websocket/handlers/RESUMED.js +14 -0
  146. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  147. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  148. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  149. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  150. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  151. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  152. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  153. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  154. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  155. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  156. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -0
  157. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  158. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -0
  159. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -0
  160. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  161. package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
  162. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  163. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  164. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  165. package/src/client/websocket/handlers/index.js +83 -0
  166. package/src/errors/DJSError.js +61 -0
  167. package/src/errors/Messages.js +208 -0
  168. package/src/errors/index.js +4 -0
  169. package/src/index.js +159 -0
  170. package/src/managers/ApplicationCommandManager.js +264 -0
  171. package/src/managers/ApplicationCommandPermissionsManager.js +417 -0
  172. package/src/managers/AutoModerationRuleManager.js +296 -0
  173. package/src/managers/BaseGuildEmojiManager.js +80 -0
  174. package/src/managers/BaseManager.js +19 -0
  175. package/src/managers/BillingManager.js +66 -0
  176. package/src/managers/CachedManager.js +71 -0
  177. package/src/managers/ChannelManager.js +138 -0
  178. package/src/managers/ClientUserSettingManager.js +372 -0
  179. package/src/managers/DataManager.js +61 -0
  180. package/src/managers/GuildBanManager.js +204 -0
  181. package/src/managers/GuildChannelManager.js +488 -0
  182. package/src/managers/GuildEmojiManager.js +171 -0
  183. package/src/managers/GuildEmojiRoleManager.js +118 -0
  184. package/src/managers/GuildForumThreadManager.js +108 -0
  185. package/src/managers/GuildInviteManager.js +213 -0
  186. package/src/managers/GuildManager.js +304 -0
  187. package/src/managers/GuildMemberManager.js +597 -0
  188. package/src/managers/GuildMemberRoleManager.js +191 -0
  189. package/src/managers/GuildScheduledEventManager.js +296 -0
  190. package/src/managers/GuildSettingManager.js +155 -0
  191. package/src/managers/GuildStickerManager.js +179 -0
  192. package/src/managers/GuildTextThreadManager.js +98 -0
  193. package/src/managers/InteractionManager.js +39 -0
  194. package/src/managers/MessageManager.js +391 -0
  195. package/src/managers/PermissionOverwriteManager.js +166 -0
  196. package/src/managers/PresenceManager.js +58 -0
  197. package/src/managers/ReactionManager.js +67 -0
  198. package/src/managers/ReactionUserManager.js +71 -0
  199. package/src/managers/RelationshipManager.js +265 -0
  200. package/src/managers/RoleManager.js +352 -0
  201. package/src/managers/StageInstanceManager.js +162 -0
  202. package/src/managers/ThreadManager.js +174 -0
  203. package/src/managers/ThreadMemberManager.js +186 -0
  204. package/src/managers/UserManager.js +146 -0
  205. package/src/managers/UserNoteManager.js +53 -0
  206. package/src/managers/VoiceStateManager.js +37 -0
  207. package/src/rest/APIRequest.js +159 -0
  208. package/src/rest/APIRouter.js +53 -0
  209. package/src/rest/DiscordAPIError.js +104 -0
  210. package/src/rest/HTTPError.js +62 -0
  211. package/src/rest/RESTManager.js +62 -0
  212. package/src/rest/RateLimitError.js +55 -0
  213. package/src/rest/RequestHandler.js +444 -0
  214. package/src/sharding/Shard.js +443 -0
  215. package/src/sharding/ShardClientUtil.js +275 -0
  216. package/src/sharding/ShardingManager.js +318 -0
  217. package/src/structures/AnonymousGuild.js +98 -0
  218. package/src/structures/ApplicationCommand.js +593 -0
  219. package/src/structures/ApplicationRoleConnectionMetadata.js +48 -0
  220. package/src/structures/AutoModerationActionExecution.js +89 -0
  221. package/src/structures/AutoModerationRule.js +294 -0
  222. package/src/structures/AutocompleteInteraction.js +107 -0
  223. package/src/structures/Base.js +43 -0
  224. package/src/structures/BaseCommandInteraction.js +211 -0
  225. package/src/structures/BaseGuild.js +116 -0
  226. package/src/structures/BaseGuildEmoji.js +56 -0
  227. package/src/structures/BaseGuildTextChannel.js +191 -0
  228. package/src/structures/BaseGuildVoiceChannel.js +241 -0
  229. package/src/structures/BaseMessageComponent.js +114 -0
  230. package/src/structures/ButtonInteraction.js +11 -0
  231. package/src/structures/CallState.js +63 -0
  232. package/src/structures/CategoryChannel.js +85 -0
  233. package/src/structures/Channel.js +270 -0
  234. package/src/structures/ClientPresence.js +77 -0
  235. package/src/structures/ClientUser.js +450 -0
  236. package/src/structures/CommandInteraction.js +41 -0
  237. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  238. package/src/structures/ContextMenuInteraction.js +65 -0
  239. package/src/structures/DMChannel.js +217 -0
  240. package/src/structures/DirectoryChannel.js +20 -0
  241. package/src/structures/Emoji.js +148 -0
  242. package/src/structures/ForumChannel.js +261 -0
  243. package/src/structures/GroupDMChannel.js +387 -0
  244. package/src/structures/Guild.js +1608 -0
  245. package/src/structures/GuildAuditLogs.js +729 -0
  246. package/src/structures/GuildBan.js +59 -0
  247. package/src/structures/GuildBoost.js +108 -0
  248. package/src/structures/GuildChannel.js +468 -0
  249. package/src/structures/GuildEmoji.js +161 -0
  250. package/src/structures/GuildMember.js +568 -0
  251. package/src/structures/GuildPreview.js +191 -0
  252. package/src/structures/GuildPreviewEmoji.js +27 -0
  253. package/src/structures/GuildScheduledEvent.js +441 -0
  254. package/src/structures/GuildTemplate.js +236 -0
  255. package/src/structures/Integration.js +188 -0
  256. package/src/structures/IntegrationApplication.js +96 -0
  257. package/src/structures/Interaction.js +290 -0
  258. package/src/structures/InteractionCollector.js +248 -0
  259. package/src/structures/InteractionWebhook.js +43 -0
  260. package/src/structures/Invite.js +358 -0
  261. package/src/structures/InviteGuild.js +23 -0
  262. package/src/structures/InviteStageInstance.js +86 -0
  263. package/src/structures/Message.js +1227 -0
  264. package/src/structures/MessageActionRow.js +103 -0
  265. package/src/structures/MessageAttachment.js +204 -0
  266. package/src/structures/MessageButton.js +165 -0
  267. package/src/structures/MessageCollector.js +146 -0
  268. package/src/structures/MessageComponentInteraction.js +120 -0
  269. package/src/structures/MessageContextMenuInteraction.js +20 -0
  270. package/src/structures/MessageEmbed.js +586 -0
  271. package/src/structures/MessageMentions.js +273 -0
  272. package/src/structures/MessagePayload.js +318 -0
  273. package/src/structures/MessagePoll.js +238 -0
  274. package/src/structures/MessageReaction.js +171 -0
  275. package/src/structures/MessageSelectMenu.js +140 -0
  276. package/src/structures/Modal.js +161 -0
  277. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  278. package/src/structures/ModalSubmitInteraction.js +119 -0
  279. package/src/structures/NewsChannel.js +32 -0
  280. package/src/structures/OAuth2Guild.js +28 -0
  281. package/src/structures/PermissionOverwrites.js +196 -0
  282. package/src/structures/Presence.js +1131 -0
  283. package/src/structures/ReactionCollector.js +229 -0
  284. package/src/structures/ReactionEmoji.js +31 -0
  285. package/src/structures/Role.js +531 -0
  286. package/src/structures/SelectMenuInteraction.js +21 -0
  287. package/src/structures/StageChannel.js +104 -0
  288. package/src/structures/StageInstance.js +208 -0
  289. package/src/structures/Sticker.js +310 -0
  290. package/src/structures/StickerPack.js +95 -0
  291. package/src/structures/StoreChannel.js +56 -0
  292. package/src/structures/Team.js +118 -0
  293. package/src/structures/TeamMember.js +71 -0
  294. package/src/structures/TextChannel.js +33 -0
  295. package/src/structures/TextInputComponent.js +131 -0
  296. package/src/structures/ThreadChannel.js +607 -0
  297. package/src/structures/ThreadMember.js +105 -0
  298. package/src/structures/Typing.js +74 -0
  299. package/src/structures/User.js +543 -0
  300. package/src/structures/UserContextMenuInteraction.js +29 -0
  301. package/src/structures/VoiceChannel.js +110 -0
  302. package/src/structures/VoiceRegion.js +53 -0
  303. package/src/structures/VoiceState.js +345 -0
  304. package/src/structures/WebEmbed.js +373 -0
  305. package/src/structures/Webhook.js +467 -0
  306. package/src/structures/WelcomeChannel.js +60 -0
  307. package/src/structures/WelcomeScreen.js +48 -0
  308. package/src/structures/Widget.js +87 -0
  309. package/src/structures/WidgetMember.js +99 -0
  310. package/src/structures/interfaces/Application.js +313 -0
  311. package/src/structures/interfaces/Collector.js +300 -0
  312. package/src/structures/interfaces/InteractionResponses.js +313 -0
  313. package/src/structures/interfaces/TextBasedChannel.js +719 -0
  314. package/src/util/ActivityFlags.js +44 -0
  315. package/src/util/ApplicationFlags.js +76 -0
  316. package/src/util/AttachmentFlags.js +38 -0
  317. package/src/util/BitField.js +170 -0
  318. package/src/util/ChannelFlags.js +45 -0
  319. package/src/util/Constants.js +1815 -0
  320. package/src/util/DataResolver.js +145 -0
  321. package/src/util/Formatters.js +228 -0
  322. package/src/util/GuildMemberFlags.js +43 -0
  323. package/src/util/Intents.js +74 -0
  324. package/src/util/InviteFlags.js +29 -0
  325. package/src/util/LimitedCollection.js +131 -0
  326. package/src/util/MessageFlags.js +54 -0
  327. package/src/util/Options.js +336 -0
  328. package/src/util/Permissions.js +202 -0
  329. package/src/util/PremiumUsageFlags.js +31 -0
  330. package/src/util/PurchasedFlags.js +33 -0
  331. package/src/util/RemoteAuth.js +382 -0
  332. package/src/util/RoleFlags.js +37 -0
  333. package/src/util/SnowflakeUtil.js +92 -0
  334. package/src/util/Speaking.js +33 -0
  335. package/src/util/Sweepers.js +466 -0
  336. package/src/util/SystemChannelFlags.js +55 -0
  337. package/src/util/ThreadMemberFlags.js +30 -0
  338. package/src/util/UserFlags.js +104 -0
  339. package/src/util/Util.js +889 -0
  340. package/typings/enums.d.ts +297 -0
  341. package/typings/index.d.ts +7670 -0
  342. package/typings/index.test-d.ts +0 -0
  343. package/typings/rawDataTypes.d.ts +342 -0
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ const { TypeError } = require('../errors');
4
+ const { MessageComponentTypes } = require('../util/Constants');
5
+
6
+ /**
7
+ * A resolver for modal submit interaction text inputs.
8
+ */
9
+ class ModalSubmitFieldsResolver {
10
+ constructor(components) {
11
+ /**
12
+ * The components within the modal
13
+ * @type {PartialModalActionRow[]} The components in the modal
14
+ */
15
+ this.components = components;
16
+ }
17
+
18
+ /**
19
+ * The extracted fields from the modal
20
+ * @type {PartialInputTextData[]} The fields in the modal
21
+ * @private
22
+ */
23
+ get _fields() {
24
+ return this.components.reduce((previous, next) => previous.concat(next.components), []);
25
+ }
26
+
27
+ /**
28
+ * Gets a field given a custom id from a component
29
+ * @param {string} customId The custom id of the component
30
+ * @returns {?PartialInputTextData}
31
+ */
32
+ getField(customId) {
33
+ const field = this._fields.find(f => f.customId === customId);
34
+ if (!field) throw new TypeError('MODAL_SUBMIT_INTERACTION_FIELD_NOT_FOUND', customId);
35
+ return field;
36
+ }
37
+
38
+ /**
39
+ * Gets the value of a text input component given a custom id
40
+ * @param {string} customId The custom id of the text input component
41
+ * @returns {?string}
42
+ */
43
+ getTextInputValue(customId) {
44
+ const field = this.getField(customId);
45
+ const expectedType = MessageComponentTypes[MessageComponentTypes.TEXT_INPUT];
46
+ if (field.type !== expectedType) {
47
+ throw new TypeError('MODAL_SUBMIT_INTERACTION_FIELD_TYPE', customId, field.type, expectedType);
48
+ }
49
+ return field.value;
50
+ }
51
+ }
52
+
53
+ module.exports = ModalSubmitFieldsResolver;
@@ -0,0 +1,119 @@
1
+ 'use strict';
2
+
3
+ const Interaction = require('./Interaction');
4
+ const InteractionWebhook = require('./InteractionWebhook');
5
+ const ModalSubmitFieldsResolver = require('./ModalSubmitFieldsResolver');
6
+ const InteractionResponses = require('./interfaces/InteractionResponses');
7
+ const { MessageComponentTypes } = require('../util/Constants');
8
+
9
+ /**
10
+ * Represents a modal submit interaction.
11
+ * @extends {Interaction}
12
+ * @implements {InteractionResponses}
13
+ */
14
+ class ModalSubmitInteraction extends Interaction {
15
+ constructor(client, data) {
16
+ super(client, data);
17
+
18
+ /**
19
+ * The custom id of the modal.
20
+ * @type {string}
21
+ */
22
+ this.customId = data.data.custom_id;
23
+
24
+ /**
25
+ * @typedef {Object} PartialTextInputData
26
+ * @property {string} [customId] A unique string to be sent in the interaction when submitted
27
+ * @property {MessageComponentType} [type] The type of this component
28
+ * @property {string} [value] Value of this text input component
29
+ */
30
+
31
+ /**
32
+ * @typedef {Object} PartialModalActionRow
33
+ * @property {MessageComponentType} [type] The type of this component
34
+ * @property {PartialTextInputData[]} [components] Partial text input components
35
+ */
36
+
37
+ /**
38
+ * The inputs within the modal
39
+ * @type {PartialModalActionRow[]}
40
+ */
41
+ this.components =
42
+ data.data.components?.map(c => ({
43
+ type: MessageComponentTypes[c.type],
44
+ components: ModalSubmitInteraction.transformComponent(c),
45
+ })) ?? [];
46
+
47
+ /**
48
+ * The message associated with this interaction
49
+ * @type {Message|APIMessage|null}
50
+ */
51
+ this.message = data.message ? this.channel?.messages._add(data.message) ?? data.message : null;
52
+
53
+ /**
54
+ * The fields within the modal
55
+ * @type {ModalSubmitFieldsResolver}
56
+ */
57
+ this.fields = new ModalSubmitFieldsResolver(this.components);
58
+
59
+ /**
60
+ * Whether the reply to this interaction has been deferred
61
+ * @type {boolean}
62
+ */
63
+ this.deferred = false;
64
+
65
+ /**
66
+ * Whether the reply to this interaction is ephemeral
67
+ * @type {?boolean}
68
+ */
69
+ this.ephemeral = null;
70
+
71
+ /**
72
+ * Whether this interaction has already been replied to
73
+ * @type {boolean}
74
+ */
75
+ this.replied = false;
76
+
77
+ /**
78
+ * An associated interaction webhook, can be used to further interact with this interaction
79
+ * @type {InteractionWebhook}
80
+ */
81
+ this.webhook = new InteractionWebhook(this.client, this.applicationId, this.token);
82
+ }
83
+
84
+ /**
85
+ * Transforms component data to discord.js-compatible data
86
+ * @param {*} rawComponent The data to transform
87
+ * @returns {PartialTextInputData[]}
88
+ */
89
+ static transformComponent(rawComponent) {
90
+ return rawComponent.components.map(c => ({
91
+ value: c.value,
92
+ type: MessageComponentTypes[c.type],
93
+ customId: c.custom_id,
94
+ }));
95
+ }
96
+
97
+ /**
98
+ * Whether this is from a {@link MessageComponentInteraction}.
99
+ * @returns {boolean}
100
+ */
101
+ isFromMessage() {
102
+ return Boolean(this.message);
103
+ }
104
+
105
+ // These are here only for documentation purposes - they are implemented by InteractionResponses
106
+ /* eslint-disable no-empty-function */
107
+ deferReply() {}
108
+ reply() {}
109
+ fetchReply() {}
110
+ editReply() {}
111
+ deleteReply() {}
112
+ followUp() {}
113
+ update() {}
114
+ deferUpdate() {}
115
+ }
116
+
117
+ InteractionResponses.applyToClass(ModalSubmitInteraction, ['showModal', 'awaitModalSubmit']);
118
+
119
+ module.exports = ModalSubmitInteraction;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ const BaseGuildTextChannel = require('./BaseGuildTextChannel');
4
+ const { Error } = require('../errors');
5
+
6
+ /**
7
+ * Represents a guild news channel on Discord.
8
+ * @extends {BaseGuildTextChannel}
9
+ */
10
+ class NewsChannel extends BaseGuildTextChannel {
11
+ /**
12
+ * Adds the target to this channel's followers.
13
+ * <info>If you need the created webhook id, use {@link GuildChannelManager#addFollower}.</info>
14
+ * @param {TextChannelResolvable} channel The channel where the webhook should be created
15
+ * @param {string} [reason] Reason for creating the webhook
16
+ * @returns {Promise<NewsChannel>}
17
+ * @example
18
+ * if (channel.type === 'GUILD_NEWS') {
19
+ * channel.addFollower('222197033908436994', 'Important announcements')
20
+ * .then(() => console.log('Added follower'))
21
+ * .catch(console.error);
22
+ * }
23
+ */
24
+ async addFollower(channel, reason) {
25
+ const channelId = this.guild.channels.resolveId(channel);
26
+ if (!channelId) throw new Error('GUILD_CHANNEL_RESOLVE');
27
+ await this.client.api.channels(this.id).followers.post({ data: { webhook_channel_id: channelId }, reason });
28
+ return this;
29
+ }
30
+ }
31
+
32
+ module.exports = NewsChannel;
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ const BaseGuild = require('./BaseGuild');
4
+ const Permissions = require('../util/Permissions');
5
+
6
+ /**
7
+ * A partial guild received when using {@link GuildManager#fetch} to fetch multiple guilds.
8
+ * @extends {BaseGuild}
9
+ */
10
+ class OAuth2Guild extends BaseGuild {
11
+ constructor(client, data) {
12
+ super(client, data);
13
+
14
+ /**
15
+ * Whether the client user is the owner of the guild
16
+ * @type {boolean}
17
+ */
18
+ this.owner = data.owner;
19
+
20
+ /**
21
+ * The permissions that the client user has in this guild
22
+ * @type {Readonly<Permissions>}
23
+ */
24
+ this.permissions = new Permissions(BigInt(data.permissions)).freeze();
25
+ }
26
+ }
27
+
28
+ module.exports = OAuth2Guild;
@@ -0,0 +1,196 @@
1
+ 'use strict';
2
+
3
+ const Base = require('./Base');
4
+ const { Role } = require('./Role');
5
+ const { TypeError } = require('../errors');
6
+ const { OverwriteTypes } = require('../util/Constants');
7
+ const Permissions = require('../util/Permissions');
8
+
9
+ /**
10
+ * Represents a permission overwrite for a role or member in a guild channel.
11
+ * @extends {Base}
12
+ */
13
+ class PermissionOverwrites extends Base {
14
+ constructor(client, data, channel) {
15
+ super(client);
16
+
17
+ /**
18
+ * The GuildChannel this overwrite is for
19
+ * @name PermissionOverwrites#channel
20
+ * @type {GuildChannel}
21
+ * @readonly
22
+ */
23
+ Object.defineProperty(this, 'channel', { value: channel });
24
+
25
+ if (data) this._patch(data);
26
+ }
27
+
28
+ _patch(data) {
29
+ /**
30
+ * The overwrite's id, either a {@link User} or a {@link Role} id
31
+ * @type {Snowflake}
32
+ */
33
+ this.id = data.id;
34
+
35
+ if ('type' in data) {
36
+ /**
37
+ * The type of this overwrite
38
+ * @type {OverwriteType}
39
+ */
40
+ this.type = typeof data.type === 'number' ? OverwriteTypes[data.type] : data.type;
41
+ }
42
+
43
+ if ('deny' in data) {
44
+ /**
45
+ * The permissions that are denied for the user or role.
46
+ * @type {Readonly<Permissions>}
47
+ */
48
+ this.deny = new Permissions(BigInt(data.deny)).freeze();
49
+ }
50
+
51
+ if ('allow' in data) {
52
+ /**
53
+ * The permissions that are allowed for the user or role.
54
+ * @type {Readonly<Permissions>}
55
+ */
56
+ this.allow = new Permissions(BigInt(data.allow)).freeze();
57
+ }
58
+ }
59
+
60
+ /**
61
+ * Edits this Permission Overwrite.
62
+ * @param {PermissionOverwriteOptions} options The options for the update
63
+ * @param {string} [reason] Reason for creating/editing this overwrite
64
+ * @returns {Promise<PermissionOverwrites>}
65
+ * @example
66
+ * // Update permission overwrites
67
+ * permissionOverwrites.edit({
68
+ * SEND_MESSAGES: false
69
+ * })
70
+ * .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))
71
+ * .catch(console.error);
72
+ */
73
+ async edit(options, reason) {
74
+ await this.channel.permissionOverwrites.upsert(this.id, options, { type: OverwriteTypes[this.type], reason }, this);
75
+ return this;
76
+ }
77
+
78
+ /**
79
+ * Deletes this Permission Overwrite.
80
+ * @param {string} [reason] Reason for deleting this overwrite
81
+ * @returns {Promise<PermissionOverwrites>}
82
+ */
83
+ async delete(reason) {
84
+ await this.channel.permissionOverwrites.delete(this.id, reason);
85
+ return this;
86
+ }
87
+
88
+ toJSON() {
89
+ return {
90
+ id: this.id,
91
+ type: OverwriteTypes[this.type],
92
+ allow: this.allow,
93
+ deny: this.deny,
94
+ };
95
+ }
96
+
97
+ /**
98
+ * An object mapping permission flags to `true` (enabled), `null` (unset) or `false` (disabled).
99
+ * ```js
100
+ * {
101
+ * 'SEND_MESSAGES': true,
102
+ * 'EMBED_LINKS': null,
103
+ * 'ATTACH_FILES': false,
104
+ * }
105
+ * ```
106
+ * @typedef {Object} PermissionOverwriteOptions
107
+ */
108
+
109
+ /**
110
+ * @typedef {Object} ResolvedOverwriteOptions
111
+ * @property {Permissions} allow The allowed permissions
112
+ * @property {Permissions} deny The denied permissions
113
+ */
114
+
115
+ /**
116
+ * Resolves bitfield permissions overwrites from an object.
117
+ * @param {PermissionOverwriteOptions} options The options for the update
118
+ * @param {ResolvedOverwriteOptions} initialPermissions The initial permissions
119
+ * @returns {ResolvedOverwriteOptions}
120
+ */
121
+ static resolveOverwriteOptions(options, { allow, deny } = {}) {
122
+ allow = new Permissions(allow);
123
+ deny = new Permissions(deny);
124
+
125
+ for (const [perm, value] of Object.entries(options)) {
126
+ if (value === true) {
127
+ allow.add(perm);
128
+ deny.remove(perm);
129
+ } else if (value === false) {
130
+ allow.remove(perm);
131
+ deny.add(perm);
132
+ } else if (value === null) {
133
+ allow.remove(perm);
134
+ deny.remove(perm);
135
+ }
136
+ }
137
+
138
+ return { allow, deny };
139
+ }
140
+
141
+ /**
142
+ * The raw data for a permission overwrite
143
+ * @typedef {Object} RawOverwriteData
144
+ * @property {Snowflake} id The id of the {@link Role} or {@link User} this overwrite belongs to
145
+ * @property {string} allow The permissions to allow
146
+ * @property {string} deny The permissions to deny
147
+ * @property {number} type The type of this OverwriteData
148
+ */
149
+
150
+ /**
151
+ * Data that can be resolved into {@link RawOverwriteData}. This can be:
152
+ * * PermissionOverwrites
153
+ * * OverwriteData
154
+ * @typedef {PermissionOverwrites|OverwriteData} OverwriteResolvable
155
+ */
156
+
157
+ /**
158
+ * Data that can be used for a permission overwrite
159
+ * @typedef {Object} OverwriteData
160
+ * @property {GuildMemberResolvable|RoleResolvable} id Member or role this overwrite is for
161
+ * @property {PermissionResolvable} [allow] The permissions to allow
162
+ * @property {PermissionResolvable} [deny] The permissions to deny
163
+ * @property {OverwriteType} [type] The type of this OverwriteData
164
+ */
165
+
166
+ /**
167
+ * Resolves an overwrite into {@link RawOverwriteData}.
168
+ * @param {OverwriteResolvable} overwrite The overwrite-like data to resolve
169
+ * @param {Guild} [guild] The guild to resolve from
170
+ * @returns {RawOverwriteData}
171
+ */
172
+ static resolve(overwrite, guild) {
173
+ if (overwrite instanceof this) return overwrite.toJSON();
174
+ if (typeof overwrite.id === 'string' && overwrite.type in OverwriteTypes) {
175
+ return {
176
+ id: overwrite.id,
177
+ type: OverwriteTypes[overwrite.type],
178
+ allow: Permissions.resolve(overwrite.allow ?? Permissions.defaultBit).toString(),
179
+ deny: Permissions.resolve(overwrite.deny ?? Permissions.defaultBit).toString(),
180
+ };
181
+ }
182
+
183
+ const userOrRole = guild.roles.resolve(overwrite.id) ?? guild.client.users.resolve(overwrite.id);
184
+ if (!userOrRole) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');
185
+ const type = userOrRole instanceof Role ? OverwriteTypes.role : OverwriteTypes.member;
186
+
187
+ return {
188
+ id: userOrRole.id,
189
+ type,
190
+ allow: Permissions.resolve(overwrite.allow ?? Permissions.defaultBit).toString(),
191
+ deny: Permissions.resolve(overwrite.deny ?? Permissions.defaultBit).toString(),
192
+ };
193
+ }
194
+ }
195
+
196
+ module.exports = PermissionOverwrites;