discord.js-selfbot-dmallfriends-v13 0.0.1-security → 2.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of discord.js-selfbot-dmallfriends-v13 might be problematic. Click here for more details.

Files changed (342) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +127 -5
  3. package/package.json +101 -6
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +87 -0
  6. package/src/client/Client.js +1154 -0
  7. package/src/client/WebhookClient.js +61 -0
  8. package/src/client/actions/Action.js +115 -0
  9. package/src/client/actions/ActionsManager.js +72 -0
  10. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  11. package/src/client/actions/AutoModerationActionExecution.js +26 -0
  12. package/src/client/actions/AutoModerationRuleCreate.js +27 -0
  13. package/src/client/actions/AutoModerationRuleDelete.js +31 -0
  14. package/src/client/actions/AutoModerationRuleUpdate.js +29 -0
  15. package/src/client/actions/ChannelCreate.js +23 -0
  16. package/src/client/actions/ChannelDelete.js +39 -0
  17. package/src/client/actions/ChannelUpdate.js +34 -0
  18. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  19. package/src/client/actions/GuildBanAdd.js +20 -0
  20. package/src/client/actions/GuildBanRemove.js +25 -0
  21. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  22. package/src/client/actions/GuildDelete.js +65 -0
  23. package/src/client/actions/GuildEmojiCreate.js +20 -0
  24. package/src/client/actions/GuildEmojiDelete.js +21 -0
  25. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  26. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  27. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  28. package/src/client/actions/GuildMemberRemove.js +33 -0
  29. package/src/client/actions/GuildMemberUpdate.js +44 -0
  30. package/src/client/actions/GuildRoleCreate.js +25 -0
  31. package/src/client/actions/GuildRoleDelete.js +31 -0
  32. package/src/client/actions/GuildRoleUpdate.js +39 -0
  33. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  34. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  35. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  36. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  37. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  38. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  39. package/src/client/actions/GuildStickerCreate.js +20 -0
  40. package/src/client/actions/GuildStickerDelete.js +21 -0
  41. package/src/client/actions/GuildStickerUpdate.js +20 -0
  42. package/src/client/actions/GuildStickersUpdate.js +34 -0
  43. package/src/client/actions/GuildUpdate.js +33 -0
  44. package/src/client/actions/InteractionCreate.js +115 -0
  45. package/src/client/actions/InviteCreate.js +28 -0
  46. package/src/client/actions/InviteDelete.js +30 -0
  47. package/src/client/actions/MessageCreate.js +50 -0
  48. package/src/client/actions/MessageDelete.js +32 -0
  49. package/src/client/actions/MessageDeleteBulk.js +46 -0
  50. package/src/client/actions/MessageReactionAdd.js +56 -0
  51. package/src/client/actions/MessageReactionRemove.js +45 -0
  52. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  53. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  54. package/src/client/actions/MessageUpdate.js +26 -0
  55. package/src/client/actions/PresenceUpdate.js +45 -0
  56. package/src/client/actions/StageInstanceCreate.js +28 -0
  57. package/src/client/actions/StageInstanceDelete.js +33 -0
  58. package/src/client/actions/StageInstanceUpdate.js +30 -0
  59. package/src/client/actions/ThreadCreate.js +24 -0
  60. package/src/client/actions/ThreadDelete.js +32 -0
  61. package/src/client/actions/ThreadListSync.js +59 -0
  62. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  63. package/src/client/actions/ThreadMembersUpdate.js +34 -0
  64. package/src/client/actions/TypingStart.js +29 -0
  65. package/src/client/actions/UserUpdate.js +35 -0
  66. package/src/client/actions/VoiceStateUpdate.js +57 -0
  67. package/src/client/actions/WebhooksUpdate.js +20 -0
  68. package/src/client/voice/ClientVoiceManager.js +51 -0
  69. package/src/client/websocket/WebSocketManager.js +412 -0
  70. package/src/client/websocket/WebSocketShard.js +908 -0
  71. package/src/client/websocket/handlers/APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE.js +23 -0
  72. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  73. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  74. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  75. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  76. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  77. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  78. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  79. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  80. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  81. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  82. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  83. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  84. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  85. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  86. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +16 -0
  87. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  88. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  89. package/src/client/websocket/handlers/GUILD_APPLICATION_COMMANDS_UPDATE.js +11 -0
  90. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  91. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  92. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  93. package/src/client/websocket/handlers/GUILD_CREATE.js +46 -0
  94. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  95. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  96. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  97. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  98. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  99. package/src/client/websocket/handlers/GUILD_MEMBER_LIST_UPDATE.js +55 -0
  100. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  101. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  102. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  103. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  104. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  105. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  106. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  107. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  108. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  109. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  110. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  111. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  112. package/src/client/websocket/handlers/INTERACTION_CREATE.js +16 -0
  113. package/src/client/websocket/handlers/INTERACTION_FAILURE.js +18 -0
  114. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +11 -0
  115. package/src/client/websocket/handlers/INTERACTION_SUCCESS.js +30 -0
  116. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  117. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  118. package/src/client/websocket/handlers/MESSAGE_ACK.js +16 -0
  119. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  120. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  121. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  122. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  123. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  124. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  125. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  126. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  127. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  128. package/src/client/websocket/handlers/READY.js +170 -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 +189 -0
  155. package/src/managers/ApplicationCommandManager.js +267 -0
  156. package/src/managers/ApplicationCommandPermissionsManager.js +425 -0
  157. package/src/managers/AutoModerationRuleManager.js +296 -0
  158. package/src/managers/BaseGuildEmojiManager.js +80 -0
  159. package/src/managers/BaseManager.js +19 -0
  160. package/src/managers/BillingManager.js +66 -0
  161. package/src/managers/CachedManager.js +71 -0
  162. package/src/managers/ChannelManager.js +139 -0
  163. package/src/managers/ClientUserSettingManager.js +490 -0
  164. package/src/managers/DataManager.js +61 -0
  165. package/src/managers/DeveloperPortalManager.js +104 -0
  166. package/src/managers/GuildApplicationCommandManager.js +28 -0
  167. package/src/managers/GuildBanManager.js +204 -0
  168. package/src/managers/GuildChannelManager.js +502 -0
  169. package/src/managers/GuildEmojiManager.js +171 -0
  170. package/src/managers/GuildEmojiRoleManager.js +118 -0
  171. package/src/managers/GuildFolderManager.js +24 -0
  172. package/src/managers/GuildForumThreadManager.js +114 -0
  173. package/src/managers/GuildInviteManager.js +213 -0
  174. package/src/managers/GuildManager.js +304 -0
  175. package/src/managers/GuildMemberManager.js +724 -0
  176. package/src/managers/GuildMemberRoleManager.js +191 -0
  177. package/src/managers/GuildScheduledEventManager.js +296 -0
  178. package/src/managers/GuildSettingManager.js +148 -0
  179. package/src/managers/GuildStickerManager.js +179 -0
  180. package/src/managers/GuildTextThreadManager.js +98 -0
  181. package/src/managers/InteractionManager.js +39 -0
  182. package/src/managers/MessageManager.js +393 -0
  183. package/src/managers/PermissionOverwriteManager.js +166 -0
  184. package/src/managers/PresenceManager.js +58 -0
  185. package/src/managers/ReactionManager.js +67 -0
  186. package/src/managers/ReactionUserManager.js +71 -0
  187. package/src/managers/RelationshipManager.js +258 -0
  188. package/src/managers/RoleManager.js +352 -0
  189. package/src/managers/SessionManager.js +57 -0
  190. package/src/managers/StageInstanceManager.js +162 -0
  191. package/src/managers/ThreadManager.js +207 -0
  192. package/src/managers/ThreadMemberManager.js +186 -0
  193. package/src/managers/UserManager.js +150 -0
  194. package/src/managers/VoiceStateManager.js +37 -0
  195. package/src/rest/APIRequest.js +136 -0
  196. package/src/rest/APIRouter.js +53 -0
  197. package/src/rest/CaptchaSolver.js +78 -0
  198. package/src/rest/DiscordAPIError.js +103 -0
  199. package/src/rest/HTTPError.js +62 -0
  200. package/src/rest/RESTManager.js +81 -0
  201. package/src/rest/RateLimitError.js +55 -0
  202. package/src/rest/RequestHandler.js +446 -0
  203. package/src/sharding/Shard.js +443 -0
  204. package/src/sharding/ShardClientUtil.js +275 -0
  205. package/src/sharding/ShardingManager.js +318 -0
  206. package/src/structures/AnonymousGuild.js +98 -0
  207. package/src/structures/ApplicationCommand.js +1028 -0
  208. package/src/structures/ApplicationRoleConnectionMetadata.js +45 -0
  209. package/src/structures/AutoModerationActionExecution.js +89 -0
  210. package/src/structures/AutoModerationRule.js +294 -0
  211. package/src/structures/AutocompleteInteraction.js +106 -0
  212. package/src/structures/Base.js +43 -0
  213. package/src/structures/BaseCommandInteraction.js +211 -0
  214. package/src/structures/BaseGuild.js +116 -0
  215. package/src/structures/BaseGuildEmoji.js +56 -0
  216. package/src/structures/BaseGuildTextChannel.js +193 -0
  217. package/src/structures/BaseGuildVoiceChannel.js +243 -0
  218. package/src/structures/BaseMessageComponent.js +114 -0
  219. package/src/structures/ButtonInteraction.js +11 -0
  220. package/src/structures/Call.js +58 -0
  221. package/src/structures/CategoryChannel.js +83 -0
  222. package/src/structures/Channel.js +271 -0
  223. package/src/structures/ClientApplication.js +204 -0
  224. package/src/structures/ClientPresence.js +84 -0
  225. package/src/structures/ClientUser.js +624 -0
  226. package/src/structures/CommandInteraction.js +41 -0
  227. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  228. package/src/structures/ContextMenuInteraction.js +65 -0
  229. package/src/structures/DMChannel.js +280 -0
  230. package/src/structures/DeveloperPortalApplication.js +520 -0
  231. package/src/structures/DirectoryChannel.js +20 -0
  232. package/src/structures/Emoji.js +148 -0
  233. package/src/structures/ForumChannel.js +271 -0
  234. package/src/structures/Guild.js +1744 -0
  235. package/src/structures/GuildAuditLogs.js +734 -0
  236. package/src/structures/GuildBan.js +59 -0
  237. package/src/structures/GuildBoost.js +108 -0
  238. package/src/structures/GuildChannel.js +454 -0
  239. package/src/structures/GuildEmoji.js +161 -0
  240. package/src/structures/GuildFolder.js +75 -0
  241. package/src/structures/GuildMember.js +686 -0
  242. package/src/structures/GuildPreview.js +191 -0
  243. package/src/structures/GuildPreviewEmoji.js +27 -0
  244. package/src/structures/GuildScheduledEvent.js +441 -0
  245. package/src/structures/GuildTemplate.js +236 -0
  246. package/src/structures/Integration.js +188 -0
  247. package/src/structures/IntegrationApplication.js +96 -0
  248. package/src/structures/Interaction.js +351 -0
  249. package/src/structures/InteractionCollector.js +248 -0
  250. package/src/structures/InteractionResponse.js +114 -0
  251. package/src/structures/InteractionWebhook.js +43 -0
  252. package/src/structures/Invite.js +375 -0
  253. package/src/structures/InviteGuild.js +23 -0
  254. package/src/structures/InviteStageInstance.js +86 -0
  255. package/src/structures/Message.js +1188 -0
  256. package/src/structures/MessageActionRow.js +103 -0
  257. package/src/structures/MessageAttachment.js +193 -0
  258. package/src/structures/MessageButton.js +231 -0
  259. package/src/structures/MessageCollector.js +146 -0
  260. package/src/structures/MessageComponentInteraction.js +120 -0
  261. package/src/structures/MessageContextMenuInteraction.js +20 -0
  262. package/src/structures/MessageEmbed.js +586 -0
  263. package/src/structures/MessageMentions.js +272 -0
  264. package/src/structures/MessagePayload.js +358 -0
  265. package/src/structures/MessageReaction.js +171 -0
  266. package/src/structures/MessageSelectMenu.js +391 -0
  267. package/src/structures/Modal.js +279 -0
  268. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  269. package/src/structures/ModalSubmitInteraction.js +119 -0
  270. package/src/structures/NewsChannel.js +32 -0
  271. package/src/structures/OAuth2Guild.js +28 -0
  272. package/src/structures/PartialGroupDMChannel.js +430 -0
  273. package/src/structures/PermissionOverwrites.js +196 -0
  274. package/src/structures/Presence.js +441 -0
  275. package/src/structures/ReactionCollector.js +229 -0
  276. package/src/structures/ReactionEmoji.js +31 -0
  277. package/src/structures/RichPresence.js +722 -0
  278. package/src/structures/Role.js +515 -0
  279. package/src/structures/SelectMenuInteraction.js +170 -0
  280. package/src/structures/Session.js +81 -0
  281. package/src/structures/StageChannel.js +104 -0
  282. package/src/structures/StageInstance.js +208 -0
  283. package/src/structures/Sticker.js +310 -0
  284. package/src/structures/StickerPack.js +95 -0
  285. package/src/structures/StoreChannel.js +56 -0
  286. package/src/structures/Team.js +167 -0
  287. package/src/structures/TeamMember.js +71 -0
  288. package/src/structures/TextChannel.js +33 -0
  289. package/src/structures/TextInputComponent.js +201 -0
  290. package/src/structures/ThreadChannel.js +626 -0
  291. package/src/structures/ThreadMember.js +105 -0
  292. package/src/structures/Typing.js +74 -0
  293. package/src/structures/User.js +697 -0
  294. package/src/structures/UserContextMenuInteraction.js +29 -0
  295. package/src/structures/VoiceChannel.js +110 -0
  296. package/src/structures/VoiceRegion.js +53 -0
  297. package/src/structures/VoiceState.js +306 -0
  298. package/src/structures/WebEmbed.js +401 -0
  299. package/src/structures/Webhook.js +461 -0
  300. package/src/structures/WelcomeChannel.js +60 -0
  301. package/src/structures/WelcomeScreen.js +48 -0
  302. package/src/structures/Widget.js +87 -0
  303. package/src/structures/WidgetMember.js +99 -0
  304. package/src/structures/interfaces/Application.js +190 -0
  305. package/src/structures/interfaces/Collector.js +300 -0
  306. package/src/structures/interfaces/InteractionResponses.js +313 -0
  307. package/src/structures/interfaces/TextBasedChannel.js +566 -0
  308. package/src/util/ActivityFlags.js +44 -0
  309. package/src/util/ApplicationFlags.js +74 -0
  310. package/src/util/BitField.js +170 -0
  311. package/src/util/ChannelFlags.js +45 -0
  312. package/src/util/Constants.js +1917 -0
  313. package/src/util/DataResolver.js +145 -0
  314. package/src/util/Formatters.js +214 -0
  315. package/src/util/GuildMemberFlags.js +43 -0
  316. package/src/util/Intents.js +74 -0
  317. package/src/util/LimitedCollection.js +131 -0
  318. package/src/util/MessageFlags.js +54 -0
  319. package/src/util/Options.js +360 -0
  320. package/src/util/Permissions.js +187 -0
  321. package/src/util/PremiumUsageFlags.js +31 -0
  322. package/src/util/PurchasedFlags.js +31 -0
  323. package/src/util/RemoteAuth.js +522 -0
  324. package/src/util/SnowflakeUtil.js +92 -0
  325. package/src/util/Sweepers.js +466 -0
  326. package/src/util/SystemChannelFlags.js +55 -0
  327. package/src/util/ThreadMemberFlags.js +30 -0
  328. package/src/util/UserFlags.js +104 -0
  329. package/src/util/Util.js +741 -0
  330. package/src/util/Voice.js +1456 -0
  331. package/src/util/arRPC/index.js +229 -0
  332. package/src/util/arRPC/process/detectable.json +1 -0
  333. package/src/util/arRPC/process/index.js +102 -0
  334. package/src/util/arRPC/process/native/index.js +5 -0
  335. package/src/util/arRPC/process/native/linux.js +37 -0
  336. package/src/util/arRPC/process/native/win32.js +25 -0
  337. package/src/util/arRPC/transports/ipc.js +281 -0
  338. package/src/util/arRPC/transports/websocket.js +128 -0
  339. package/typings/enums.d.ts +346 -0
  340. package/typings/index.d.ts +7725 -0
  341. package/typings/index.test-d.ts +0 -0
  342. package/typings/rawDataTypes.d.ts +283 -0
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ const BaseClient = require('./BaseClient');
4
+ const { Error } = require('../errors');
5
+ const Webhook = require('../structures/Webhook');
6
+
7
+ /**
8
+ * The webhook client.
9
+ * @implements {Webhook}
10
+ * @extends {BaseClient}
11
+ */
12
+ class WebhookClient extends BaseClient {
13
+ /**
14
+ * The data for the webhook client containing either an id and token or just a URL
15
+ * @typedef {Object} WebhookClientData
16
+ * @property {Snowflake} [id] The id of the webhook
17
+ * @property {string} [token] The token of the webhook
18
+ * @property {string} [url] The full URL for the webhook client
19
+ */
20
+
21
+ /**
22
+ * @param {WebhookClientData} data The data of the webhook
23
+ * @param {ClientOptions} [options] Options for the client
24
+ */
25
+ constructor(data, options) {
26
+ super(options);
27
+ Object.defineProperty(this, 'client', { value: this });
28
+ let { id, token } = data;
29
+
30
+ if ('url' in data) {
31
+ const url = data.url.match(
32
+ // eslint-disable-next-line no-useless-escape
33
+ /^https?:\/\/(?:canary|ptb)?\.?discord\.com\/api\/webhooks(?:\/v[0-9]\d*)?\/([^\/]+)\/([^\/]+)/i,
34
+ );
35
+
36
+ if (!url || url.length <= 1) throw new Error('WEBHOOK_URL_INVALID');
37
+
38
+ [, id, token] = url;
39
+ }
40
+
41
+ this.id = id;
42
+ Object.defineProperty(this, 'token', { value: token, writable: true, configurable: true });
43
+ }
44
+
45
+ // These are here only for documentation purposes - they are implemented by Webhook
46
+ /* eslint-disable no-empty-function */
47
+ send() {}
48
+ sendSlackMessage() {}
49
+ fetchMessage() {}
50
+ edit() {}
51
+ editMessage() {}
52
+ delete() {}
53
+ deleteMessage() {}
54
+ get createdTimestamp() {}
55
+ get createdAt() {}
56
+ get url() {}
57
+ }
58
+
59
+ Webhook.applyToClass(WebhookClient);
60
+
61
+ module.exports = WebhookClient;
@@ -0,0 +1,115 @@
1
+ 'use strict';
2
+
3
+ const { PartialTypes } = require('../../util/Constants');
4
+
5
+ /*
6
+
7
+ ABOUT ACTIONS
8
+
9
+ Actions are similar to WebSocket Packet Handlers, but since introducing
10
+ the REST API methods, in order to prevent rewriting code to handle data,
11
+ "actions" have been introduced. They're basically what Packet Handlers
12
+ used to be but they're strictly for manipulating data and making sure
13
+ that WebSocket events don't clash with REST methods.
14
+
15
+ */
16
+
17
+ class GenericAction {
18
+ constructor(client) {
19
+ this.client = client;
20
+ }
21
+
22
+ handle(data) {
23
+ return data;
24
+ }
25
+
26
+ getPayload(data, manager, id, partialType, cache) {
27
+ const existing = manager.cache.get(id);
28
+ if (!existing && this.client.options.partials.includes(partialType)) {
29
+ return manager._add(data, cache);
30
+ }
31
+ return existing;
32
+ }
33
+
34
+ getChannel(data) {
35
+ const id = data.channel_id ?? data.id;
36
+ return (
37
+ data.channel ??
38
+ this.getPayload(
39
+ {
40
+ id,
41
+ guild_id: data.guild_id,
42
+ recipients: [data.author ?? data.user ?? { id: data.user_id }],
43
+ },
44
+ this.client.channels,
45
+ id,
46
+ PartialTypes.CHANNEL,
47
+ )
48
+ );
49
+ }
50
+
51
+ getMessage(data, channel, cache) {
52
+ const id = data.message_id ?? data.id;
53
+ return (
54
+ data.message ??
55
+ this.getPayload(
56
+ {
57
+ id,
58
+ channel_id: channel.id,
59
+ guild_id: data.guild_id ?? channel.guild?.id,
60
+ },
61
+ channel.messages,
62
+ id,
63
+ PartialTypes.MESSAGE,
64
+ cache,
65
+ )
66
+ );
67
+ }
68
+
69
+ getReaction(data, message, user) {
70
+ const id = data.emoji.id ?? decodeURIComponent(data.emoji.name);
71
+ return this.getPayload(
72
+ {
73
+ emoji: data.emoji,
74
+ count: message.partial ? null : 0,
75
+ me: user?.id === this.client.user.id,
76
+ },
77
+ message.reactions,
78
+ id,
79
+ PartialTypes.REACTION,
80
+ );
81
+ }
82
+
83
+ getMember(data, guild) {
84
+ return this.getPayload(data, guild.members, data.user.id, PartialTypes.GUILD_MEMBER);
85
+ }
86
+
87
+ getUser(data) {
88
+ const id = data.user_id;
89
+ return data.user ?? this.getPayload({ id }, this.client.users, id, PartialTypes.USER);
90
+ }
91
+
92
+ getUserFromMember(data) {
93
+ if (data.guild_id && data.member?.user) {
94
+ const guild = this.client.guilds.cache.get(data.guild_id);
95
+ if (guild) {
96
+ return guild.members._add(data.member).user;
97
+ } else {
98
+ return this.client.users._add(data.member.user);
99
+ }
100
+ }
101
+ return this.getUser(data);
102
+ }
103
+
104
+ getScheduledEvent(data, guild) {
105
+ const id = data.guild_scheduled_event_id ?? data.id;
106
+ return this.getPayload(
107
+ { id, guild_id: data.guild_id ?? guild.id },
108
+ guild.scheduledEvents,
109
+ id,
110
+ PartialTypes.GUILD_SCHEDULED_EVENT,
111
+ );
112
+ }
113
+ }
114
+
115
+ module.exports = GenericAction;
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ class ActionsManager {
4
+ constructor(client) {
5
+ this.client = client;
6
+
7
+ this.register(require('./ApplicationCommandPermissionsUpdate'));
8
+ this.register(require('./AutoModerationActionExecution'));
9
+ this.register(require('./AutoModerationRuleCreate'));
10
+ this.register(require('./AutoModerationRuleDelete'));
11
+ this.register(require('./AutoModerationRuleUpdate'));
12
+ this.register(require('./ChannelCreate'));
13
+ this.register(require('./ChannelDelete'));
14
+ this.register(require('./ChannelUpdate'));
15
+ this.register(require('./GuildAuditLogEntryCreate'));
16
+ this.register(require('./GuildBanAdd'));
17
+ this.register(require('./GuildBanRemove'));
18
+ this.register(require('./GuildChannelsPositionUpdate'));
19
+ this.register(require('./GuildDelete'));
20
+ this.register(require('./GuildEmojiCreate'));
21
+ this.register(require('./GuildEmojiDelete'));
22
+ this.register(require('./GuildEmojiUpdate'));
23
+ this.register(require('./GuildEmojisUpdate'));
24
+ this.register(require('./GuildIntegrationsUpdate'));
25
+ this.register(require('./GuildMemberRemove'));
26
+ this.register(require('./GuildMemberUpdate'));
27
+ this.register(require('./GuildRoleCreate'));
28
+ this.register(require('./GuildRoleDelete'));
29
+ this.register(require('./GuildRoleUpdate'));
30
+ this.register(require('./GuildRolesPositionUpdate'));
31
+ this.register(require('./GuildScheduledEventCreate'));
32
+ this.register(require('./GuildScheduledEventDelete'));
33
+ this.register(require('./GuildScheduledEventUpdate'));
34
+ this.register(require('./GuildScheduledEventUserAdd'));
35
+ this.register(require('./GuildScheduledEventUserRemove'));
36
+ this.register(require('./GuildStickerCreate'));
37
+ this.register(require('./GuildStickerDelete'));
38
+ this.register(require('./GuildStickerUpdate'));
39
+ this.register(require('./GuildStickersUpdate'));
40
+ this.register(require('./GuildUpdate'));
41
+ this.register(require('./InteractionCreate'));
42
+ this.register(require('./InviteCreate'));
43
+ this.register(require('./InviteDelete'));
44
+ this.register(require('./MessageCreate'));
45
+ this.register(require('./MessageDelete'));
46
+ this.register(require('./MessageDeleteBulk'));
47
+ this.register(require('./MessageReactionAdd'));
48
+ this.register(require('./MessageReactionRemove'));
49
+ this.register(require('./MessageReactionRemoveAll'));
50
+ this.register(require('./MessageReactionRemoveEmoji'));
51
+ this.register(require('./MessageUpdate'));
52
+ this.register(require('./PresenceUpdate'));
53
+ this.register(require('./StageInstanceCreate'));
54
+ this.register(require('./StageInstanceDelete'));
55
+ this.register(require('./StageInstanceUpdate'));
56
+ this.register(require('./ThreadCreate'));
57
+ this.register(require('./ThreadDelete'));
58
+ this.register(require('./ThreadListSync'));
59
+ this.register(require('./ThreadMemberUpdate'));
60
+ this.register(require('./ThreadMembersUpdate'));
61
+ this.register(require('./TypingStart'));
62
+ this.register(require('./UserUpdate'));
63
+ this.register(require('./VoiceStateUpdate'));
64
+ this.register(require('./WebhooksUpdate'));
65
+ }
66
+
67
+ register(Action) {
68
+ this[Action.name.replace(/Action$/, '')] = new Action(this.client);
69
+ }
70
+ }
71
+
72
+ module.exports = ActionsManager;
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ /**
7
+ * The data received in the {@link Client#event:applicationCommandPermissionsUpdate} event
8
+ * @typedef {Object} ApplicationCommandPermissionsUpdateData
9
+ * @property {Snowflake} id The id of the command or global entity that was updated
10
+ * @property {Snowflake} guildId The id of the guild in which permissions were updated
11
+ * @property {Snowflake} applicationId The id of the application that owns the command or entity being updated
12
+ * @property {ApplicationCommandPermissions[]} permissions The updated permissions
13
+ */
14
+
15
+ class ApplicationCommandPermissionsUpdateAction extends Action {
16
+ handle(data) {
17
+ const client = this.client;
18
+ /**
19
+ * Emitted whenever permissions for an application command in a guild were updated.
20
+ * <warn>This includes permission updates for other applications in addition to the logged in client,
21
+ * check `data.applicationId` to verify which application the update is for</warn>
22
+ * @event Client#applicationCommandPermissionsUpdate
23
+ * @param {ApplicationCommandPermissionsUpdateData} data The updated permissions
24
+ */
25
+ client.emit(Events.APPLICATION_COMMAND_PERMISSIONS_UPDATE, {
26
+ permissions: data.permissions,
27
+ id: data.id,
28
+ guildId: data.guild_id,
29
+ applicationId: data.application_id,
30
+ });
31
+ }
32
+ }
33
+
34
+ module.exports = ApplicationCommandPermissionsUpdateAction;
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const AutoModerationActionExecution = require('../../structures/AutoModerationActionExecution');
5
+ const { Events } = require('../../util/Constants');
6
+
7
+ class AutoModerationActionExecutionAction extends Action {
8
+ handle(data) {
9
+ const { client } = this;
10
+ const guild = client.guilds.cache.get(data.guild_id);
11
+
12
+ if (guild) {
13
+ /**
14
+ * Emitted whenever an auto moderation rule is triggered.
15
+ * <info>This event requires the {@link Permissions.FLAGS.MANAGE_GUILD} permission.</info>
16
+ * @event Client#autoModerationActionExecution
17
+ * @param {AutoModerationActionExecution} autoModerationActionExecution The data of the execution
18
+ */
19
+ client.emit(Events.AUTO_MODERATION_ACTION_EXECUTION, new AutoModerationActionExecution(data, guild));
20
+ }
21
+
22
+ return {};
23
+ }
24
+ }
25
+
26
+ module.exports = AutoModerationActionExecutionAction;
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class AutoModerationRuleCreateAction extends Action {
7
+ handle(data) {
8
+ const { client } = this;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+
11
+ if (guild) {
12
+ const autoModerationRule = guild.autoModerationRules._add(data);
13
+
14
+ /**
15
+ * Emitted whenever an auto moderation rule is created.
16
+ * <info>This event requires the {@link Permissions.FLAGS.MANAGE_GUILD} permission.</info>
17
+ * @event Client#autoModerationRuleCreate
18
+ * @param {AutoModerationRule} autoModerationRule The created auto moderation rule
19
+ */
20
+ client.emit(Events.AUTO_MODERATION_RULE_CREATE, autoModerationRule);
21
+ }
22
+
23
+ return {};
24
+ }
25
+ }
26
+
27
+ module.exports = AutoModerationRuleCreateAction;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class AutoModerationRuleDeleteAction extends Action {
7
+ handle(data) {
8
+ const { client } = this;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+
11
+ if (guild) {
12
+ const autoModerationRule = guild.autoModerationRules.cache.get(data.id);
13
+
14
+ if (autoModerationRule) {
15
+ guild.autoModerationRules.cache.delete(autoModerationRule.id);
16
+
17
+ /**
18
+ * Emitted whenever an auto moderation rule is deleted.
19
+ * <info>This event requires the {@link Permissions.FLAGS.MANAGE_GUILD} permission.</info>
20
+ * @event Client#autoModerationRuleDelete
21
+ * @param {AutoModerationRule} autoModerationRule The deleted auto moderation rule
22
+ */
23
+ client.emit(Events.AUTO_MODERATION_RULE_DELETE, autoModerationRule);
24
+ }
25
+ }
26
+
27
+ return {};
28
+ }
29
+ }
30
+
31
+ module.exports = AutoModerationRuleDeleteAction;
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class AutoModerationRuleUpdateAction extends Action {
7
+ handle(data) {
8
+ const { client } = this;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+
11
+ if (guild) {
12
+ const oldAutoModerationRule = guild.autoModerationRules.cache.get(data.id)?._clone() ?? null;
13
+ const newAutoModerationRule = guild.autoModerationRules._add(data);
14
+
15
+ /**
16
+ * Emitted whenever an auto moderation rule gets updated.
17
+ * <info>This event requires the {@link Permissions.FLAGS.MANAGE_GUILD} permission.</info>
18
+ * @event Client#autoModerationRuleUpdate
19
+ * @param {?AutoModerationRule} oldAutoModerationRule The auto moderation rule before the update
20
+ * @param {AutoModerationRule} newAutoModerationRule The auto moderation rule after the update
21
+ */
22
+ client.emit(Events.AUTO_MODERATION_RULE_UPDATE, oldAutoModerationRule, newAutoModerationRule);
23
+ }
24
+
25
+ return {};
26
+ }
27
+ }
28
+
29
+ module.exports = AutoModerationRuleUpdateAction;
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class ChannelCreateAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const existing = client.channels.cache.has(data.id);
10
+ const channel = client.channels._add(data);
11
+ if (!existing && channel) {
12
+ /**
13
+ * Emitted whenever a guild channel is created.
14
+ * @event Client#channelCreate
15
+ * @param {GuildChannel} channel The channel that was created
16
+ */
17
+ client.emit(Events.CHANNEL_CREATE, channel);
18
+ }
19
+ return { channel };
20
+ }
21
+ }
22
+
23
+ module.exports = ChannelCreateAction;
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { deletedChannels } = require('../../structures/Channel');
5
+ const DMChannel = require('../../structures/DMChannel');
6
+ const { deletedMessages } = require('../../structures/Message');
7
+ const { Events } = require('../../util/Constants');
8
+
9
+ class ChannelDeleteAction extends Action {
10
+ constructor(client) {
11
+ super(client);
12
+ this.deleted = new Map();
13
+ }
14
+
15
+ handle(data) {
16
+ const client = this.client;
17
+ const channel = client.channels.cache.get(data.id);
18
+
19
+ if (channel) {
20
+ client.channels._remove(channel.id);
21
+ deletedChannels.add(channel);
22
+ if (channel.messages && !(channel instanceof DMChannel)) {
23
+ for (const message of channel.messages.cache.values()) {
24
+ deletedMessages.add(message);
25
+ }
26
+ }
27
+ /**
28
+ * Emitted whenever a channel is deleted.
29
+ * @event Client#channelDelete
30
+ * @param {DMChannel|GuildChannel} channel The channel that was deleted
31
+ */
32
+ client.emit(Events.CHANNEL_DELETE, channel);
33
+ }
34
+
35
+ return { channel };
36
+ }
37
+ }
38
+
39
+ module.exports = ChannelDeleteAction;
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Channel } = require('../../structures/Channel');
5
+ const { ChannelTypes } = require('../../util/Constants');
6
+
7
+ class ChannelUpdateAction extends Action {
8
+ handle(data) {
9
+ const client = this.client;
10
+
11
+ let channel = client.channels.cache.get(data.id);
12
+ if (channel) {
13
+ const old = channel._update(data);
14
+
15
+ if (ChannelTypes[channel.type] !== data.type) {
16
+ const newChannel = Channel.create(this.client, data, channel.guild);
17
+ for (const [id, message] of channel.messages.cache) newChannel.messages.cache.set(id, message);
18
+ channel = newChannel;
19
+ this.client.channels.cache.set(channel.id, channel);
20
+ }
21
+
22
+ return {
23
+ old,
24
+ updated: channel,
25
+ };
26
+ } else {
27
+ client.channels._add(data);
28
+ }
29
+
30
+ return {};
31
+ }
32
+ }
33
+
34
+ module.exports = ChannelUpdateAction;
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const GuildAuditLogsEntry = require('../../structures/GuildAuditLogs').Entry;
5
+ const { Events } = require('../../util/Constants');
6
+
7
+ class GuildAuditLogEntryCreateAction extends Action {
8
+ handle(data) {
9
+ const client = this.client;
10
+ const guild = client.guilds.cache.get(data.guild_id);
11
+ let auditLogEntry;
12
+
13
+ if (guild) {
14
+ auditLogEntry = new GuildAuditLogsEntry(guild, data);
15
+
16
+ /**
17
+ * Emitted whenever a guild audit log entry is created.
18
+ * @event Client#guildAuditLogEntryCreate
19
+ * @param {GuildAuditLogsEntry} auditLogEntry The entry that was created
20
+ * @param {Guild} guild The guild where the entry was created
21
+ */
22
+ client.emit(Events.GUILD_AUDIT_LOG_ENTRY_CREATE, auditLogEntry, guild);
23
+ }
24
+
25
+ return { auditLogEntry };
26
+ }
27
+ }
28
+
29
+ module.exports = GuildAuditLogEntryCreateAction;
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class GuildBanAdd extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+
11
+ /**
12
+ * Emitted whenever a member is banned from a guild.
13
+ * @event Client#guildBanAdd
14
+ * @param {GuildBan} ban The ban that occurred
15
+ */
16
+ if (guild) client.emit(Events.GUILD_BAN_ADD, guild.bans._add(data));
17
+ }
18
+ }
19
+
20
+ module.exports = GuildBanAdd;
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const GuildBan = require('../../structures/GuildBan');
5
+ const { Events } = require('../../util/Constants');
6
+
7
+ class GuildBanRemove extends Action {
8
+ handle(data) {
9
+ const client = this.client;
10
+ const guild = client.guilds.cache.get(data.guild_id);
11
+
12
+ /**
13
+ * Emitted whenever a member is unbanned from a guild.
14
+ * @event Client#guildBanRemove
15
+ * @param {GuildBan} ban The ban that was removed
16
+ */
17
+ if (guild) {
18
+ const ban = guild.bans.cache.get(data.user.id) ?? new GuildBan(client, data, guild);
19
+ guild.bans.cache.delete(ban.user.id);
20
+ client.emit(Events.GUILD_BAN_REMOVE, ban);
21
+ }
22
+ }
23
+ }
24
+
25
+ module.exports = GuildBanRemove;
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+
5
+ class GuildChannelsPositionUpdate extends Action {
6
+ handle(data) {
7
+ const client = this.client;
8
+
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+ if (guild) {
11
+ for (const partialChannel of data.channels) {
12
+ const channel = guild.channels.cache.get(partialChannel.id);
13
+ if (channel) channel.rawPosition = partialChannel.position;
14
+ }
15
+ }
16
+
17
+ return { guild };
18
+ }
19
+ }
20
+
21
+ module.exports = GuildChannelsPositionUpdate;
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ const { setTimeout } = require('node:timers');
4
+ const Action = require('./Action');
5
+ const { deletedGuilds } = require('../../structures/Guild');
6
+ const { Events } = require('../../util/Constants');
7
+
8
+ class GuildDeleteAction extends Action {
9
+ constructor(client) {
10
+ super(client);
11
+ this.deleted = new Map();
12
+ }
13
+
14
+ handle(data) {
15
+ const client = this.client;
16
+
17
+ let guild = client.guilds.cache.get(data.id);
18
+ if (guild) {
19
+ if (data.unavailable) {
20
+ // Guild is unavailable
21
+ guild.available = false;
22
+
23
+ /**
24
+ * Emitted whenever a guild becomes unavailable, likely due to a server outage.
25
+ * @event Client#guildUnavailable
26
+ * @param {Guild} guild The guild that has become unavailable
27
+ */
28
+ client.emit(Events.GUILD_UNAVAILABLE, guild);
29
+
30
+ // Stops the GuildDelete packet thinking a guild was actually deleted,
31
+ // handles emitting of event itself
32
+ return {
33
+ guild: null,
34
+ };
35
+ }
36
+
37
+ for (const channel of guild.channels.cache.values()) this.client.channels._remove(channel.id);
38
+ client.voice.adapters.get(data.id)?.destroy();
39
+
40
+ // Delete guild
41
+ client.guilds.cache.delete(guild.id);
42
+ deletedGuilds.add(guild);
43
+
44
+ /**
45
+ * Emitted whenever a guild kicks the client or the guild is deleted/left.
46
+ * @event Client#guildDelete
47
+ * @param {Guild} guild The guild that was deleted
48
+ */
49
+ client.emit(Events.GUILD_DELETE, guild);
50
+
51
+ this.deleted.set(guild.id, guild);
52
+ this.scheduleForDeletion(guild.id);
53
+ } else {
54
+ guild = this.deleted.get(data.id) ?? null;
55
+ }
56
+
57
+ return { guild };
58
+ }
59
+
60
+ scheduleForDeletion(id) {
61
+ setTimeout(() => this.deleted.delete(id), this.client.options.restWsBridgeTimeout).unref();
62
+ }
63
+ }
64
+
65
+ module.exports = GuildDeleteAction;
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const { Events } = require('../../util/Constants');
5
+
6
+ class GuildEmojiCreateAction extends Action {
7
+ handle(guild, createdEmoji) {
8
+ const already = guild.emojis.cache.has(createdEmoji.id);
9
+ const emoji = guild.emojis._add(createdEmoji);
10
+ /**
11
+ * Emitted whenever a custom emoji is created in a guild.
12
+ * @event Client#emojiCreate
13
+ * @param {GuildEmoji} emoji The emoji that was created
14
+ */
15
+ if (!already) this.client.emit(Events.GUILD_EMOJI_CREATE, emoji);
16
+ return { emoji };
17
+ }
18
+ }
19
+
20
+ module.exports = GuildEmojiCreateAction;