discord-selfbot-v13.js 0.0.1-security → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of discord-selfbot-v13.js 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 +48 -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,171 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const BaseGuildEmojiManager = require('./BaseGuildEmojiManager');
5
+ const { Error, TypeError } = require('../errors');
6
+ const DataResolver = require('../util/DataResolver');
7
+ const Permissions = require('../util/Permissions');
8
+
9
+ /**
10
+ * Manages API methods for GuildEmojis and stores their cache.
11
+ * @extends {BaseGuildEmojiManager}
12
+ */
13
+ class GuildEmojiManager extends BaseGuildEmojiManager {
14
+ constructor(guild, iterable) {
15
+ super(guild.client, iterable);
16
+
17
+ /**
18
+ * The guild this manager belongs to
19
+ * @type {Guild}
20
+ */
21
+ this.guild = guild;
22
+ }
23
+
24
+ _add(data, cache) {
25
+ return super._add(data, cache, { extras: [this.guild] });
26
+ }
27
+
28
+ /**
29
+ * Options used for creating an emoji in a guild.
30
+ * @typedef {Object} GuildEmojiCreateOptions
31
+ * @property {Collection<Snowflake, Role>|RoleResolvable[]} [roles] The roles to limit the emoji to
32
+ * @property {string} [reason] The reason for creating the emoji
33
+ */
34
+
35
+ /**
36
+ * Creates a new custom emoji in the guild.
37
+ * @param {BufferResolvable|Base64Resolvable} attachment The image for the emoji
38
+ * @param {string} name The name for the emoji
39
+ * @param {GuildEmojiCreateOptions} [options] Options for creating the emoji
40
+ * @returns {Promise<Emoji>} The created emoji
41
+ * @example
42
+ * // Create a new emoji from a URL
43
+ * guild.emojis.create('https://i.imgur.com/w3duR07.png', 'rip')
44
+ * .then(emoji => console.log(`Created new emoji with name ${emoji.name}!`))
45
+ * .catch(console.error);
46
+ * @example
47
+ * // Create a new emoji from a file on your computer
48
+ * guild.emojis.create('./memes/banana.png', 'banana')
49
+ * .then(emoji => console.log(`Created new emoji with name ${emoji.name}!`))
50
+ * .catch(console.error);
51
+ */
52
+ async create(attachment, name, { roles, reason } = {}) {
53
+ attachment = await DataResolver.resolveImage(attachment);
54
+ if (!attachment) throw new TypeError('REQ_RESOURCE_TYPE');
55
+
56
+ const data = { image: attachment, name };
57
+ if (roles) {
58
+ if (!Array.isArray(roles) && !(roles instanceof Collection)) {
59
+ throw new TypeError('INVALID_TYPE', 'options.roles', 'Array or Collection of Roles or Snowflakes', true);
60
+ }
61
+ data.roles = [];
62
+ for (const role of roles.values()) {
63
+ const resolvedRole = this.guild.roles.resolveId(role);
64
+ if (!resolvedRole) throw new TypeError('INVALID_ELEMENT', 'Array or Collection', 'options.roles', role);
65
+ data.roles.push(resolvedRole);
66
+ }
67
+ }
68
+
69
+ const emoji = await this.client.api.guilds(this.guild.id).emojis.post({ data, reason });
70
+ return this.client.actions.GuildEmojiCreate.handle(this.guild, emoji).emoji;
71
+ }
72
+
73
+ /**
74
+ * Obtains one or more emojis from Discord, or the emoji cache if they're already available.
75
+ * @param {Snowflake} [id] The emoji's id
76
+ * @param {BaseFetchOptions} [options] Additional options for this fetch
77
+ * @returns {Promise<GuildEmoji|Collection<Snowflake, GuildEmoji>>}
78
+ * @example
79
+ * // Fetch all emojis from the guild
80
+ * message.guild.emojis.fetch()
81
+ * .then(emojis => console.log(`There are ${emojis.size} emojis.`))
82
+ * .catch(console.error);
83
+ * @example
84
+ * // Fetch a single emoji
85
+ * message.guild.emojis.fetch('222078108977594368')
86
+ * .then(emoji => console.log(`The emoji name is: ${emoji.name}`))
87
+ * .catch(console.error);
88
+ */
89
+ async fetch(id, { cache = true, force = false } = {}) {
90
+ if (id) {
91
+ if (!force) {
92
+ const existing = this.cache.get(id);
93
+ if (existing) return existing;
94
+ }
95
+ const emoji = await this.client.api.guilds(this.guild.id).emojis(id).get();
96
+ return this._add(emoji, cache);
97
+ }
98
+
99
+ const data = await this.client.api.guilds(this.guild.id).emojis.get();
100
+ const emojis = new Collection();
101
+ for (const emoji of data) emojis.set(emoji.id, this._add(emoji, cache));
102
+ return emojis;
103
+ }
104
+
105
+ /**
106
+ * Deletes an emoji.
107
+ * @param {EmojiResolvable} emoji The Emoji resolvable to delete
108
+ * @param {string} [reason] Reason for deleting the emoji
109
+ * @returns {Promise<void>}
110
+ */
111
+ async delete(emoji, reason) {
112
+ const id = this.resolveId(emoji);
113
+ if (!id) throw new TypeError('INVALID_TYPE', 'emoji', 'EmojiResolvable', true);
114
+ await this.client.api.guilds(this.guild.id).emojis(id).delete({ reason });
115
+ }
116
+
117
+ /**
118
+ * Edits an emoji.
119
+ * @param {EmojiResolvable} emoji The Emoji resolvable to edit
120
+ * @param {GuildEmojiEditData} data The new data for the emoji
121
+ * @param {string} [reason] Reason for editing this emoji
122
+ * @returns {Promise<GuildEmoji>}
123
+ */
124
+ async edit(emoji, data, reason) {
125
+ const id = this.resolveId(emoji);
126
+ if (!id) throw new TypeError('INVALID_TYPE', 'emoji', 'EmojiResolvable', true);
127
+ const roles = data.roles?.map(r => this.guild.roles.resolveId(r));
128
+ const newData = await this.client.api
129
+ .guilds(this.guild.id)
130
+ .emojis(id)
131
+ .patch({
132
+ data: {
133
+ name: data.name,
134
+ roles,
135
+ },
136
+ reason,
137
+ });
138
+ const existing = this.cache.get(id);
139
+ if (existing) {
140
+ const clone = existing._clone();
141
+ clone._patch(newData);
142
+ return clone;
143
+ }
144
+ return this._add(newData);
145
+ }
146
+
147
+ /**
148
+ * Fetches the author for this emoji
149
+ * @param {EmojiResolvable} emoji The emoji to fetch the author of
150
+ * @returns {Promise<User>}
151
+ */
152
+ async fetchAuthor(emoji) {
153
+ emoji = this.resolve(emoji);
154
+ if (!emoji) throw new TypeError('INVALID_TYPE', 'emoji', 'EmojiResolvable', true);
155
+ if (emoji.managed) {
156
+ throw new Error('EMOJI_MANAGED');
157
+ }
158
+
159
+ const { me } = this.guild.members;
160
+ if (!me) throw new Error('GUILD_UNCACHED_ME');
161
+ if (!me.permissions.has(Permissions.FLAGS.MANAGE_EMOJIS_AND_STICKERS)) {
162
+ throw new Error('MISSING_MANAGE_EMOJIS_AND_STICKERS_PERMISSION', this.guild);
163
+ }
164
+
165
+ const data = await this.client.api.guilds(this.guild.id).emojis(emoji.id).get();
166
+ emoji._patch(data);
167
+ return emoji.author;
168
+ }
169
+ }
170
+
171
+ module.exports = GuildEmojiManager;
@@ -0,0 +1,118 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const DataManager = require('./DataManager');
5
+ const { TypeError } = require('../errors');
6
+ const { Role } = require('../structures/Role');
7
+
8
+ /**
9
+ * Manages API methods for roles belonging to emojis and stores their cache.
10
+ * @extends {DataManager}
11
+ */
12
+ class GuildEmojiRoleManager extends DataManager {
13
+ constructor(emoji) {
14
+ super(emoji.client, Role);
15
+
16
+ /**
17
+ * The emoji belonging to this manager
18
+ * @type {GuildEmoji}
19
+ */
20
+ this.emoji = emoji;
21
+ /**
22
+ * The guild belonging to this manager
23
+ * @type {Guild}
24
+ */
25
+ this.guild = emoji.guild;
26
+ }
27
+
28
+ /**
29
+ * The cache of roles belonging to this emoji
30
+ * @type {Collection<Snowflake, Role>}
31
+ * @readonly
32
+ */
33
+ get cache() {
34
+ return this.guild.roles.cache.filter(role => this.emoji._roles.includes(role.id));
35
+ }
36
+
37
+ /**
38
+ * Adds a role (or multiple roles) to the list of roles that can use this emoji.
39
+ * @param {RoleResolvable|RoleResolvable[]|Collection<Snowflake, Role>} roleOrRoles The role or roles to add
40
+ * @returns {Promise<GuildEmoji>}
41
+ */
42
+ add(roleOrRoles) {
43
+ if (!Array.isArray(roleOrRoles) && !(roleOrRoles instanceof Collection)) roleOrRoles = [roleOrRoles];
44
+
45
+ const resolvedRoles = [];
46
+ for (const role of roleOrRoles.values()) {
47
+ const resolvedRole = this.guild.roles.resolveId(role);
48
+ if (!resolvedRole) {
49
+ return Promise.reject(new TypeError('INVALID_ELEMENT', 'Array or Collection', 'roles', role));
50
+ }
51
+ resolvedRoles.push(resolvedRole);
52
+ }
53
+
54
+ const newRoles = [...new Set(resolvedRoles.concat(...this.cache.keys()))];
55
+ return this.set(newRoles);
56
+ }
57
+
58
+ /**
59
+ * Removes a role (or multiple roles) from the list of roles that can use this emoji.
60
+ * @param {RoleResolvable|RoleResolvable[]|Collection<Snowflake, Role>} roleOrRoles The role or roles to remove
61
+ * @returns {Promise<GuildEmoji>}
62
+ */
63
+ remove(roleOrRoles) {
64
+ if (!Array.isArray(roleOrRoles) && !(roleOrRoles instanceof Collection)) roleOrRoles = [roleOrRoles];
65
+
66
+ const resolvedRoleIds = [];
67
+ for (const role of roleOrRoles.values()) {
68
+ const roleId = this.guild.roles.resolveId(role);
69
+ if (!roleId) {
70
+ return Promise.reject(new TypeError('INVALID_ELEMENT', 'Array or Collection', 'roles', role));
71
+ }
72
+ resolvedRoleIds.push(roleId);
73
+ }
74
+
75
+ const newRoles = [...this.cache.keys()].filter(id => !resolvedRoleIds.includes(id));
76
+ return this.set(newRoles);
77
+ }
78
+
79
+ /**
80
+ * Sets the role(s) that can use this emoji.
81
+ * @param {Collection<Snowflake, Role>|RoleResolvable[]} roles The roles or role ids to apply
82
+ * @returns {Promise<GuildEmoji>}
83
+ * @example
84
+ * // Set the emoji's roles to a single role
85
+ * guildEmoji.roles.set(['391156570408615936'])
86
+ * .then(console.log)
87
+ * .catch(console.error);
88
+ * @example
89
+ * // Remove all roles from an emoji
90
+ * guildEmoji.roles.set([])
91
+ * .then(console.log)
92
+ * .catch(console.error);
93
+ */
94
+ set(roles) {
95
+ return this.emoji.edit({ roles });
96
+ }
97
+
98
+ clone() {
99
+ const clone = new this.constructor(this.emoji);
100
+ clone._patch([...this.cache.keys()]);
101
+ return clone;
102
+ }
103
+
104
+ /**
105
+ * Patches the roles for this manager's cache
106
+ * @param {Snowflake[]} roles The new roles
107
+ * @private
108
+ */
109
+ _patch(roles) {
110
+ this.emoji._roles = roles;
111
+ }
112
+
113
+ valueOf() {
114
+ return this.cache;
115
+ }
116
+ }
117
+
118
+ module.exports = GuildEmojiRoleManager;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const BaseManager = require('./BaseManager');
5
+
6
+ /**
7
+ * Manages API methods for users and stores their cache.
8
+ * @extends {BaseManager}
9
+ */
10
+ class GuildFolderManager extends BaseManager {
11
+ constructor(client) {
12
+ super(client);
13
+ /**
14
+ * The guild folder cache (Index, GuildFolder)
15
+ * @type {Collection<number, GuildFolder>}
16
+ */
17
+ this.cache = new Collection();
18
+ }
19
+ _refresh() {
20
+ this.cache.clear();
21
+ }
22
+ }
23
+
24
+ module.exports = GuildFolderManager;
@@ -0,0 +1,114 @@
1
+ 'use strict';
2
+
3
+ const ThreadManager = require('./ThreadManager');
4
+ const { TypeError } = require('../errors');
5
+ const MessagePayload = require('../structures/MessagePayload');
6
+ const { resolveAutoArchiveMaxLimit, getAttachments, uploadFile } = require('../util/Util');
7
+
8
+ /**
9
+ * Manages API methods for threads in forum channels and stores their cache.
10
+ * @extends {ThreadManager}
11
+ */
12
+ class GuildForumThreadManager extends ThreadManager {
13
+ /**
14
+ * The channel this Manager belongs to
15
+ * @name GuildForumThreadManager#channel
16
+ * @type {ForumChannel}
17
+ */
18
+
19
+ /**
20
+ * @typedef {BaseMessageOptions} GuildForumThreadMessageCreateOptions
21
+ * @property {StickerResolvable} [stickers] The stickers to send with the message
22
+ * @property {BitFieldResolvable} [flags] The flags to send with the message.
23
+ * Only `SUPPRESS_EMBEDS`, `SUPPRESS_NOTIFICATIONS` and `IS_VOICE_MESSAGE` can be set.
24
+ */
25
+
26
+ /**
27
+ * Options for creating a thread.
28
+ * @typedef {StartThreadOptions} GuildForumThreadCreateOptions
29
+ * @property {GuildForumThreadMessageCreateOptions|MessagePayload} message The message associated with the thread post
30
+ * @property {Snowflake[]} [appliedTags] The tags to apply to the thread
31
+ */
32
+
33
+ /**
34
+ * Creates a new thread in the channel.
35
+ * @param {GuildForumThreadCreateOptions} [options] Options to create a new thread
36
+ * @returns {Promise<ThreadChannel>}
37
+ * @example
38
+ * // Create a new forum post
39
+ * forum.threads
40
+ * .create({
41
+ * name: 'Food Talk',
42
+ * autoArchiveDuration: 60,
43
+ * message: {
44
+ * content: 'Discuss your favorite food!',
45
+ * },
46
+ * reason: 'Needed a separate thread for food',
47
+ * })
48
+ * .then(threadChannel => console.log(threadChannel))
49
+ * .catch(console.error);
50
+ */
51
+ async create({
52
+ name,
53
+ autoArchiveDuration = this.channel.defaultAutoArchiveDuration,
54
+ message,
55
+ reason,
56
+ rateLimitPerUser,
57
+ appliedTags,
58
+ } = {}) {
59
+ if (!message) {
60
+ throw new TypeError('GUILD_FORUM_MESSAGE_REQUIRED');
61
+ }
62
+
63
+ let messagePayload;
64
+
65
+ if (message instanceof MessagePayload) {
66
+ messagePayload = await message.resolveData();
67
+ } else {
68
+ messagePayload = await MessagePayload.create(this, message).resolveData();
69
+ }
70
+
71
+ let { data: body, files } = await messagePayload.resolveFiles();
72
+
73
+ if (typeof message == 'object' && typeof message.usingNewAttachmentAPI !== 'boolean') {
74
+ message.usingNewAttachmentAPI = this.client.options.usingNewAttachmentAPI;
75
+ }
76
+
77
+ if (message?.usingNewAttachmentAPI === true) {
78
+ const attachments = await getAttachments(this.client, this.channel.id, ...files);
79
+ const requestPromises = attachments.map(async attachment => {
80
+ await uploadFile(files[attachment.id].file, attachment.upload_url);
81
+ return {
82
+ id: attachment.id,
83
+ filename: files[attachment.id].name,
84
+ uploaded_filename: attachment.upload_filename,
85
+ description: files[attachment.id].description,
86
+ duration_secs: files[attachment.id].duration_secs,
87
+ waveform: files[attachment.id].waveform,
88
+ };
89
+ });
90
+ const attachmentsData = await Promise.all(requestPromises);
91
+ attachmentsData.sort((a, b) => parseInt(a.id) - parseInt(b.id));
92
+ body.attachments = attachmentsData;
93
+ files = [];
94
+ }
95
+
96
+ if (autoArchiveDuration === 'MAX') autoArchiveDuration = resolveAutoArchiveMaxLimit(this.channel.guild);
97
+
98
+ const data = await this.client.api.channels(this.channel.id).threads.post({
99
+ data: {
100
+ name,
101
+ auto_archive_duration: autoArchiveDuration,
102
+ rate_limit_per_user: rateLimitPerUser,
103
+ applied_tags: appliedTags,
104
+ message: body,
105
+ },
106
+ files,
107
+ reason,
108
+ });
109
+
110
+ return this.client.actions.ThreadCreate.handle(data).thread;
111
+ }
112
+ }
113
+
114
+ module.exports = GuildForumThreadManager;
@@ -0,0 +1,213 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const CachedManager = require('./CachedManager');
5
+ const { Error } = require('../errors');
6
+ const Invite = require('../structures/Invite');
7
+ const DataResolver = require('../util/DataResolver');
8
+
9
+ /**
10
+ * Manages API methods for GuildInvites and stores their cache.
11
+ * @extends {CachedManager}
12
+ */
13
+ class GuildInviteManager extends CachedManager {
14
+ constructor(guild, iterable) {
15
+ super(guild.client, Invite, iterable);
16
+
17
+ /**
18
+ * The guild this Manager belongs to
19
+ * @type {Guild}
20
+ */
21
+ this.guild = guild;
22
+ }
23
+
24
+ /**
25
+ * The cache of this Manager
26
+ * @type {Collection<string, Invite>}
27
+ * @name GuildInviteManager#cache
28
+ */
29
+
30
+ _add(data, cache) {
31
+ return super._add(data, cache, { id: data.code, extras: [this.guild] });
32
+ }
33
+
34
+ /**
35
+ * Data that resolves to give an Invite object. This can be:
36
+ * * An invite code
37
+ * * An invite URL
38
+ * @typedef {string} InviteResolvable
39
+ */
40
+
41
+ /**
42
+ * Data that can be resolved to a channel that an invite can be created on. This can be:
43
+ * * TextChannel
44
+ * * VoiceChannel
45
+ * * NewsChannel
46
+ * * StoreChannel
47
+ * * StageChannel
48
+ * * Snowflake
49
+ * @typedef {TextChannel|VoiceChannel|NewsChannel|StoreChannel|StageChannel|Snowflake}
50
+ * GuildInvitableChannelResolvable
51
+ */
52
+
53
+ /**
54
+ * Resolves an InviteResolvable to an Invite object.
55
+ * @method resolve
56
+ * @memberof GuildInviteManager
57
+ * @instance
58
+ * @param {InviteResolvable} invite The invite resolvable to resolve
59
+ * @returns {?Invite}
60
+ */
61
+
62
+ /**
63
+ * Resolves an InviteResolvable to an invite code string.
64
+ * @method resolveId
65
+ * @memberof GuildInviteManager
66
+ * @instance
67
+ * @param {InviteResolvable} invite The invite resolvable to resolve
68
+ * @returns {?string}
69
+ */
70
+
71
+ /**
72
+ * Options used to fetch a single invite from a guild.
73
+ * @typedef {Object} FetchInviteOptions
74
+ * @property {InviteResolvable} code The invite to fetch
75
+ * @property {boolean} [cache=true] Whether or not to cache the fetched invite
76
+ * @property {boolean} [force=false] Whether to skip the cache check and request the API
77
+ */
78
+
79
+ /**
80
+ * Options used to fetch all invites from a guild.
81
+ * @typedef {Object} FetchInvitesOptions
82
+ * @property {GuildInvitableChannelResolvable} [channelId]
83
+ * The channel to fetch all invites from
84
+ * @property {boolean} [cache=true] Whether or not to cache the fetched invites
85
+ */
86
+
87
+ /**
88
+ * Fetches invite(s) from Discord.
89
+ * @param {InviteResolvable|FetchInviteOptions|FetchInvitesOptions} [options] Options for fetching guild invite(s)
90
+ * @returns {Promise<Invite|Collection<string, Invite>>}
91
+ * @example
92
+ * // Fetch all invites from a guild
93
+ * guild.invites.fetch()
94
+ * .then(console.log)
95
+ * .catch(console.error);
96
+ * @example
97
+ * // Fetch all invites from a guild without caching
98
+ * guild.invites.fetch({ cache: false })
99
+ * .then(console.log)
100
+ * .catch(console.error);
101
+ * @example
102
+ * // Fetch all invites from a channel
103
+ * guild.invites.fetch({ channelId: '222197033908436994' })
104
+ * .then(console.log)
105
+ * .catch(console.error);
106
+ * @example
107
+ * // Fetch a single invite
108
+ * guild.invites.fetch('bRCvFy9')
109
+ * .then(console.log)
110
+ * .catch(console.error);
111
+ * @example
112
+ * // Fetch a single invite without checking cache
113
+ * guild.invites.fetch({ code: 'bRCvFy9', force: true })
114
+ * .then(console.log)
115
+ * .catch(console.error)
116
+ * @example
117
+ * // Fetch a single invite without caching
118
+ * guild.invites.fetch({ code: 'bRCvFy9', cache: false })
119
+ * .then(console.log)
120
+ * .catch(console.error);
121
+ */
122
+ fetch(options) {
123
+ if (!options) return this._fetchMany();
124
+ if (typeof options === 'string') {
125
+ const code = DataResolver.resolveInviteCode(options);
126
+ if (!code) return Promise.reject(new Error('INVITE_RESOLVE_CODE'));
127
+ return this._fetchSingle({ code, cache: true });
128
+ }
129
+ if (!options.code) {
130
+ if (options.channelId) {
131
+ const id = this.guild.channels.resolveId(options.channelId);
132
+ if (!id) return Promise.reject(new Error('GUILD_CHANNEL_RESOLVE'));
133
+ return this._fetchChannelMany(id, options.cache);
134
+ }
135
+
136
+ if ('cache' in options) return this._fetchMany(options.cache);
137
+ return Promise.reject(new Error('INVITE_RESOLVE_CODE'));
138
+ }
139
+ return this._fetchSingle({
140
+ ...options,
141
+ code: DataResolver.resolveInviteCode(options.code),
142
+ });
143
+ }
144
+
145
+ async _fetchSingle({ code, cache, force = false }) {
146
+ if (!force) {
147
+ const existing = this.cache.get(code);
148
+ if (existing) return existing;
149
+ }
150
+
151
+ const invites = await this._fetchMany(cache);
152
+ const invite = invites.get(code);
153
+ if (!invite) throw new Error('INVITE_NOT_FOUND');
154
+ return invite;
155
+ }
156
+
157
+ async _fetchMany(cache) {
158
+ const data = await this.client.api.guilds(this.guild.id).invites.get();
159
+ return data.reduce((col, invite) => col.set(invite.code, this._add(invite, cache)), new Collection());
160
+ }
161
+
162
+ async _fetchChannelMany(channelId, cache) {
163
+ const data = await this.client.api.channels(channelId).invites.get();
164
+ return data.reduce((col, invite) => col.set(invite.code, this._add(invite, cache)), new Collection());
165
+ }
166
+
167
+ /**
168
+ * Create an invite to the guild from the provided channel.
169
+ * @param {GuildInvitableChannelResolvable} channel The options for creating the invite from a channel.
170
+ * @param {CreateInviteOptions} [options={}] The options for creating the invite from a channel.
171
+ * @returns {Promise<Invite>}
172
+ * @example
173
+ * // Create an invite to a selected channel
174
+ * guild.invites.create('599942732013764608')
175
+ * .then(console.log)
176
+ * .catch(console.error);
177
+ */
178
+ async create(
179
+ channel,
180
+ { temporary = false, maxAge = 86400, maxUses = 0, unique, targetUser, targetApplication, targetType, reason } = {},
181
+ ) {
182
+ const id = this.guild.channels.resolveId(channel);
183
+ if (!id) throw new Error('GUILD_CHANNEL_RESOLVE');
184
+
185
+ const invite = await this.client.api.channels(id).invites.post({
186
+ data: {
187
+ temporary,
188
+ max_age: maxAge,
189
+ max_uses: maxUses,
190
+ unique,
191
+ target_user_id: this.client.users.resolveId(targetUser),
192
+ target_application_id: targetApplication?.id ?? targetApplication?.applicationId ?? targetApplication,
193
+ target_type: targetType,
194
+ },
195
+ reason,
196
+ });
197
+ return new Invite(this.client, invite);
198
+ }
199
+
200
+ /**
201
+ * Deletes an invite.
202
+ * @param {InviteResolvable} invite The invite to delete
203
+ * @param {string} [reason] Reason for deleting the invite
204
+ * @returns {Promise<void>}
205
+ */
206
+ async delete(invite, reason) {
207
+ const code = DataResolver.resolveInviteCode(invite);
208
+
209
+ await this.client.api.invites(code).delete({ reason });
210
+ }
211
+ }
212
+
213
+ module.exports = GuildInviteManager;