@ovencord/discord.js 14.16.3

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 (332) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +148 -0
  3. package/package.json +73 -0
  4. package/src/client/Client.ts +967 -0
  5. package/src/client/actions/Action.ts +141 -0
  6. package/src/client/actions/ActionsManager.ts +138 -0
  7. package/src/client/actions/ChannelCreate.ts +21 -0
  8. package/src/client/actions/ChannelDelete.ts +20 -0
  9. package/src/client/actions/ChannelUpdate.ts +38 -0
  10. package/src/client/actions/GuildChannelsPositionUpdate.ts +17 -0
  11. package/src/client/actions/GuildEmojiCreate.ts +17 -0
  12. package/src/client/actions/GuildEmojiDelete.ts +16 -0
  13. package/src/client/actions/GuildEmojiUpdate.ts +17 -0
  14. package/src/client/actions/GuildEmojisUpdate.ts +30 -0
  15. package/src/client/actions/GuildMemberRemove.ts +29 -0
  16. package/src/client/actions/GuildMemberUpdate.ts +41 -0
  17. package/src/client/actions/GuildRoleCreate.ts +23 -0
  18. package/src/client/actions/GuildRoleDelete.ts +26 -0
  19. package/src/client/actions/GuildRolesPositionUpdate.ts +17 -0
  20. package/src/client/actions/GuildScheduledEventDelete.ts +28 -0
  21. package/src/client/actions/GuildScheduledEventUserAdd.ts +29 -0
  22. package/src/client/actions/GuildScheduledEventUserRemove.ts +29 -0
  23. package/src/client/actions/GuildSoundboardSoundDelete.ts +26 -0
  24. package/src/client/actions/GuildStickerCreate.ts +17 -0
  25. package/src/client/actions/GuildStickerDelete.ts +16 -0
  26. package/src/client/actions/GuildStickerUpdate.ts +17 -0
  27. package/src/client/actions/GuildStickersUpdate.ts +30 -0
  28. package/src/client/actions/GuildUpdate.ts +30 -0
  29. package/src/client/actions/InteractionCreate.ts +104 -0
  30. package/src/client/actions/MessageCreate.ts +38 -0
  31. package/src/client/actions/MessageDelete.ts +29 -0
  32. package/src/client/actions/MessageDeleteBulk.ts +45 -0
  33. package/src/client/actions/MessagePollVoteAdd.ts +37 -0
  34. package/src/client/actions/MessagePollVoteRemove.ts +35 -0
  35. package/src/client/actions/MessageReactionAdd.ts +68 -0
  36. package/src/client/actions/MessageReactionRemove.ts +47 -0
  37. package/src/client/actions/MessageReactionRemoveAll.ts +30 -0
  38. package/src/client/actions/MessageReactionRemoveEmoji.ts +25 -0
  39. package/src/client/actions/MessageUpdate.ts +22 -0
  40. package/src/client/actions/StageInstanceCreate.ts +25 -0
  41. package/src/client/actions/StageInstanceDelete.ts +28 -0
  42. package/src/client/actions/StageInstanceUpdate.ts +27 -0
  43. package/src/client/actions/ThreadCreate.ts +22 -0
  44. package/src/client/actions/ThreadMembersUpdate.ts +45 -0
  45. package/src/client/actions/TypingStart.ts +26 -0
  46. package/src/client/actions/UserUpdate.ts +33 -0
  47. package/src/client/voice/ClientVoiceManager.ts +46 -0
  48. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.ts +19 -0
  49. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.ts +17 -0
  50. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.ts +18 -0
  51. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.ts +21 -0
  52. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.ts +20 -0
  53. package/src/client/websocket/handlers/CHANNEL_CREATE.ts +4 -0
  54. package/src/client/websocket/handlers/CHANNEL_DELETE.ts +4 -0
  55. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.ts +22 -0
  56. package/src/client/websocket/handlers/CHANNEL_UPDATE.ts +16 -0
  57. package/src/client/websocket/handlers/ENTITLEMENT_CREATE.ts +14 -0
  58. package/src/client/websocket/handlers/ENTITLEMENT_DELETE.ts +18 -0
  59. package/src/client/websocket/handlers/ENTITLEMENT_UPDATE.ts +16 -0
  60. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.ts +19 -0
  61. package/src/client/websocket/handlers/GUILD_BAN_ADD.ts +15 -0
  62. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.ts +20 -0
  63. package/src/client/websocket/handlers/GUILD_CREATE.ts +34 -0
  64. package/src/client/websocket/handlers/GUILD_DELETE.ts +36 -0
  65. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.ts +4 -0
  66. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.ts +15 -0
  67. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.ts +40 -0
  68. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.ts +17 -0
  69. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.ts +4 -0
  70. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.ts +4 -0
  71. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.ts +4 -0
  72. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.ts +4 -0
  73. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.ts +21 -0
  74. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.ts +17 -0
  75. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.ts +4 -0
  76. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.ts +19 -0
  77. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.ts +4 -0
  78. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.ts +4 -0
  79. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUNDS_UPDATE.ts +24 -0
  80. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_CREATE.ts +18 -0
  81. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_DELETE.ts +4 -0
  82. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_UPDATE.ts +20 -0
  83. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.ts +4 -0
  84. package/src/client/websocket/handlers/GUILD_UPDATE.ts +4 -0
  85. package/src/client/websocket/handlers/INTERACTION_CREATE.ts +4 -0
  86. package/src/client/websocket/handlers/INVITE_CREATE.ts +20 -0
  87. package/src/client/websocket/handlers/INVITE_DELETE.ts +23 -0
  88. package/src/client/websocket/handlers/MESSAGE_CREATE.ts +4 -0
  89. package/src/client/websocket/handlers/MESSAGE_DELETE.ts +4 -0
  90. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.ts +4 -0
  91. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.ts +4 -0
  92. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.ts +4 -0
  93. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.ts +4 -0
  94. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.ts +4 -0
  95. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.ts +4 -0
  96. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.ts +4 -0
  97. package/src/client/websocket/handlers/MESSAGE_UPDATE.ts +16 -0
  98. package/src/client/websocket/handlers/PRESENCE_UPDATE.ts +42 -0
  99. package/src/client/websocket/handlers/RATE_LIMITED.ts +23 -0
  100. package/src/client/websocket/handlers/READY.ts +29 -0
  101. package/src/client/websocket/handlers/SOUNDBOARD_SOUNDS.ts +24 -0
  102. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.ts +4 -0
  103. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.ts +4 -0
  104. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.ts +4 -0
  105. package/src/client/websocket/handlers/SUBSCRIPTION_CREATE.ts +14 -0
  106. package/src/client/websocket/handlers/SUBSCRIPTION_DELETE.ts +16 -0
  107. package/src/client/websocket/handlers/SUBSCRIPTION_UPDATE.ts +16 -0
  108. package/src/client/websocket/handlers/THREAD_CREATE.ts +4 -0
  109. package/src/client/websocket/handlers/THREAD_DELETE.ts +17 -0
  110. package/src/client/websocket/handlers/THREAD_LIST_SYNC.ts +50 -0
  111. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.ts +4 -0
  112. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.ts +25 -0
  113. package/src/client/websocket/handlers/THREAD_UPDATE.ts +16 -0
  114. package/src/client/websocket/handlers/TYPING_START.ts +4 -0
  115. package/src/client/websocket/handlers/USER_UPDATE.ts +4 -0
  116. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.ts +16 -0
  117. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.ts +5 -0
  118. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.ts +37 -0
  119. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.ts +16 -0
  120. package/src/client/websocket/handlers/index.ts +74 -0
  121. package/src/errors/DJSError.ts +50 -0
  122. package/src/errors/ErrorCodes.ts +277 -0
  123. package/src/errors/Messages.ts +155 -0
  124. package/src/errors/index.ts +6 -0
  125. package/src/index.ts +241 -0
  126. package/src/managers/ApplicationCommandManager.ts +303 -0
  127. package/src/managers/ApplicationCommandPermissionsManager.ts +453 -0
  128. package/src/managers/ApplicationEmojiManager.ts +149 -0
  129. package/src/managers/AutoModerationRuleManager.ts +307 -0
  130. package/src/managers/BaseManager.ts +13 -0
  131. package/src/managers/CachedManager.ts +56 -0
  132. package/src/managers/CategoryChannelChildManager.ts +81 -0
  133. package/src/managers/ChannelManager.ts +194 -0
  134. package/src/managers/DMMessageManager.ts +15 -0
  135. package/src/managers/DataManager.ts +38 -0
  136. package/src/managers/EntitlementManager.ts +182 -0
  137. package/src/managers/GuildApplicationCommandManager.ts +29 -0
  138. package/src/managers/GuildBanManager.ts +221 -0
  139. package/src/managers/GuildChannelManager.ts +552 -0
  140. package/src/managers/GuildEmojiManager.ts +262 -0
  141. package/src/managers/GuildEmojiRoleManager.ts +134 -0
  142. package/src/managers/GuildForumThreadManager.ts +84 -0
  143. package/src/managers/GuildInviteManager.ts +236 -0
  144. package/src/managers/GuildManager.ts +265 -0
  145. package/src/managers/GuildMemberManager.ts +619 -0
  146. package/src/managers/GuildMemberRoleManager.ts +230 -0
  147. package/src/managers/GuildMessageManager.ts +31 -0
  148. package/src/managers/GuildScheduledEventManager.ts +330 -0
  149. package/src/managers/GuildSoundboardSoundManager.ts +157 -0
  150. package/src/managers/GuildStickerManager.ts +192 -0
  151. package/src/managers/GuildTextThreadManager.ts +91 -0
  152. package/src/managers/MessageManager.ts +352 -0
  153. package/src/managers/PartialGroupDMMessageManager.ts +15 -0
  154. package/src/managers/PermissionOverwriteManager.ts +174 -0
  155. package/src/managers/PollAnswerVoterManager.ts +59 -0
  156. package/src/managers/PresenceManager.ts +60 -0
  157. package/src/managers/ReactionManager.ts +72 -0
  158. package/src/managers/ReactionUserManager.ts +82 -0
  159. package/src/managers/RoleManager.ts +432 -0
  160. package/src/managers/StageInstanceManager.ts +166 -0
  161. package/src/managers/SubscriptionManager.ts +83 -0
  162. package/src/managers/ThreadManager.ts +210 -0
  163. package/src/managers/ThreadMemberManager.ts +194 -0
  164. package/src/managers/UserManager.ts +139 -0
  165. package/src/managers/VoiceStateManager.ts +61 -0
  166. package/src/sharding/Shard.ts +513 -0
  167. package/src/sharding/ShardClientUtil.ts +293 -0
  168. package/src/sharding/ShardingManager.ts +374 -0
  169. package/src/structures/ActionRow.ts +31 -0
  170. package/src/structures/AnnouncementChannel.ts +25 -0
  171. package/src/structures/AnonymousGuild.ts +110 -0
  172. package/src/structures/ApplicationCommand.ts +675 -0
  173. package/src/structures/ApplicationEmoji.ts +189 -0
  174. package/src/structures/ApplicationRoleConnectionMetadata.ts +54 -0
  175. package/src/structures/Attachment.ts +189 -0
  176. package/src/structures/AuthorizingIntegrationOwners.ts +63 -0
  177. package/src/structures/AutoModerationActionExecution.ts +138 -0
  178. package/src/structures/AutoModerationRule.ts +325 -0
  179. package/src/structures/AutocompleteInteraction.ts +115 -0
  180. package/src/structures/Base.ts +37 -0
  181. package/src/structures/BaseChannel.ts +188 -0
  182. package/src/structures/BaseGuild.ts +134 -0
  183. package/src/structures/BaseGuildEmoji.ts +113 -0
  184. package/src/structures/BaseGuildTextChannel.ts +230 -0
  185. package/src/structures/BaseGuildVoiceChannel.ts +270 -0
  186. package/src/structures/BaseInteraction.ts +393 -0
  187. package/src/structures/BaseInvite.ts +192 -0
  188. package/src/structures/BaseSelectMenuComponent.ts +58 -0
  189. package/src/structures/ButtonComponent.ts +68 -0
  190. package/src/structures/ButtonInteraction.ts +8 -0
  191. package/src/structures/CategoryChannel.ts +46 -0
  192. package/src/structures/ChannelSelectMenuComponent.ts +18 -0
  193. package/src/structures/ChannelSelectMenuInteraction.ts +34 -0
  194. package/src/structures/ChatInputCommandInteraction.ts +43 -0
  195. package/src/structures/ClientApplication.ts +470 -0
  196. package/src/structures/ClientPresence.ts +87 -0
  197. package/src/structures/ClientUser.ts +219 -0
  198. package/src/structures/CommandInteraction.ts +193 -0
  199. package/src/structures/CommandInteractionOptionResolver.ts +336 -0
  200. package/src/structures/Component.ts +59 -0
  201. package/src/structures/ContainerComponent.ts +63 -0
  202. package/src/structures/ContextMenuCommandInteraction.ts +68 -0
  203. package/src/structures/DMChannel.ts +148 -0
  204. package/src/structures/DirectoryChannel.ts +40 -0
  205. package/src/structures/Embed.ts +251 -0
  206. package/src/structures/Emoji.ts +61 -0
  207. package/src/structures/Entitlement.ts +206 -0
  208. package/src/structures/FileComponent.ts +41 -0
  209. package/src/structures/ForumChannel.ts +31 -0
  210. package/src/structures/GroupDMInvite.ts +34 -0
  211. package/src/structures/Guild.ts +1605 -0
  212. package/src/structures/GuildAuditLogs.ts +99 -0
  213. package/src/structures/GuildAuditLogsEntry.ts +557 -0
  214. package/src/structures/GuildBan.ts +65 -0
  215. package/src/structures/GuildChannel.ts +515 -0
  216. package/src/structures/GuildEmoji.ts +159 -0
  217. package/src/structures/GuildInvite.ts +233 -0
  218. package/src/structures/GuildMember.ts +643 -0
  219. package/src/structures/GuildOnboarding.ts +73 -0
  220. package/src/structures/GuildOnboardingPrompt.ts +93 -0
  221. package/src/structures/GuildOnboardingPromptOption.ts +100 -0
  222. package/src/structures/GuildPreview.ts +218 -0
  223. package/src/structures/GuildPreviewEmoji.ts +28 -0
  224. package/src/structures/GuildScheduledEvent.ts +593 -0
  225. package/src/structures/GuildTemplate.ts +229 -0
  226. package/src/structures/Integration.ts +257 -0
  227. package/src/structures/IntegrationApplication.ts +84 -0
  228. package/src/structures/InteractionCallback.ts +86 -0
  229. package/src/structures/InteractionCallbackResource.ts +57 -0
  230. package/src/structures/InteractionCallbackResponse.ts +35 -0
  231. package/src/structures/InteractionCollector.ts +260 -0
  232. package/src/structures/InteractionWebhook.ts +65 -0
  233. package/src/structures/InviteGuild.ts +22 -0
  234. package/src/structures/LabelComponent.ts +51 -0
  235. package/src/structures/MediaChannel.ts +8 -0
  236. package/src/structures/MediaGalleryComponent.ts +31 -0
  237. package/src/structures/MediaGalleryItem.ts +54 -0
  238. package/src/structures/MentionableSelectMenuComponent.ts +8 -0
  239. package/src/structures/MentionableSelectMenuInteraction.ts +76 -0
  240. package/src/structures/Message.ts +1202 -0
  241. package/src/structures/MessageCollector.ts +155 -0
  242. package/src/structures/MessageComponentInteraction.ts +132 -0
  243. package/src/structures/MessageContextMenuCommandInteraction.ts +18 -0
  244. package/src/structures/MessageMentions.ts +327 -0
  245. package/src/structures/MessagePayload.ts +325 -0
  246. package/src/structures/MessageReaction.ts +219 -0
  247. package/src/structures/ModalComponentResolver.ts +237 -0
  248. package/src/structures/ModalSubmitInteraction.ts +260 -0
  249. package/src/structures/OAuth2Guild.ts +30 -0
  250. package/src/structures/PartialGroupDMChannel.ts +151 -0
  251. package/src/structures/PermissionOverwrites.ts +222 -0
  252. package/src/structures/Poll.ts +195 -0
  253. package/src/structures/PollAnswer.ts +100 -0
  254. package/src/structures/Presence.ts +448 -0
  255. package/src/structures/PrimaryEntryPointCommandInteraction.ts +8 -0
  256. package/src/structures/ReactionCollector.ts +245 -0
  257. package/src/structures/ReactionEmoji.ts +30 -0
  258. package/src/structures/Role.ts +543 -0
  259. package/src/structures/RoleSelectMenuComponent.ts +8 -0
  260. package/src/structures/RoleSelectMenuInteraction.ts +34 -0
  261. package/src/structures/SKU.ts +62 -0
  262. package/src/structures/SectionComponent.ts +44 -0
  263. package/src/structures/SeparatorComponent.ts +29 -0
  264. package/src/structures/SoundboardSound.ts +176 -0
  265. package/src/structures/StageChannel.ts +118 -0
  266. package/src/structures/StageInstance.ts +173 -0
  267. package/src/structures/Sticker.ts +300 -0
  268. package/src/structures/StickerPack.ts +111 -0
  269. package/src/structures/StringSelectMenuComponent.ts +18 -0
  270. package/src/structures/StringSelectMenuInteraction.ts +21 -0
  271. package/src/structures/Subscription.ts +138 -0
  272. package/src/structures/Team.ts +131 -0
  273. package/src/structures/TeamMember.ts +77 -0
  274. package/src/structures/TextChannel.ts +33 -0
  275. package/src/structures/TextDisplayComponent.ts +18 -0
  276. package/src/structures/TextInputComponent.ts +28 -0
  277. package/src/structures/ThreadChannel.ts +680 -0
  278. package/src/structures/ThreadMember.ts +125 -0
  279. package/src/structures/ThreadOnlyChannel.ts +276 -0
  280. package/src/structures/ThumbnailComponent.ts +51 -0
  281. package/src/structures/Typing.ts +81 -0
  282. package/src/structures/UnfurledMediaItem.ts +33 -0
  283. package/src/structures/User.ts +511 -0
  284. package/src/structures/UserContextMenuCommandInteraction.ts +28 -0
  285. package/src/structures/UserSelectMenuComponent.ts +8 -0
  286. package/src/structures/UserSelectMenuInteraction.ts +54 -0
  287. package/src/structures/VoiceChannel.ts +119 -0
  288. package/src/structures/VoiceChannelEffect.ts +92 -0
  289. package/src/structures/VoiceRegion.ts +52 -0
  290. package/src/structures/VoiceState.ts +346 -0
  291. package/src/structures/Webhook.ts +526 -0
  292. package/src/structures/WelcomeChannel.ts +67 -0
  293. package/src/structures/WelcomeScreen.ts +53 -0
  294. package/src/structures/Widget.ts +110 -0
  295. package/src/structures/WidgetMember.ts +124 -0
  296. package/src/structures/interfaces/Application.ts +179 -0
  297. package/src/structures/interfaces/Collector.ts +372 -0
  298. package/src/structures/interfaces/InteractionResponses.ts +384 -0
  299. package/src/structures/interfaces/TextBasedChannel.ts +430 -0
  300. package/src/util/APITypes.ts +690 -0
  301. package/src/util/ActivityFlagsBitField.ts +26 -0
  302. package/src/util/ApplicationFlagsBitField.ts +43 -0
  303. package/src/util/AttachmentFlagsBitField.ts +26 -0
  304. package/src/util/BitField.ts +178 -0
  305. package/src/util/ChannelFlagsBitField.ts +43 -0
  306. package/src/util/Channels.ts +165 -0
  307. package/src/util/Colors.ts +72 -0
  308. package/src/util/Components.ts +285 -0
  309. package/src/util/Constants.ts +251 -0
  310. package/src/util/DataResolver.ts +146 -0
  311. package/src/util/Enums.ts +10 -0
  312. package/src/util/Events.ts +178 -0
  313. package/src/util/GuildMemberFlagsBitField.ts +43 -0
  314. package/src/util/IntentsBitField.ts +35 -0
  315. package/src/util/InviteFlagsBitField.ts +26 -0
  316. package/src/util/Invites.ts +27 -0
  317. package/src/util/LimitedCollection.ts +73 -0
  318. package/src/util/MessageFlagsBitField.ts +43 -0
  319. package/src/util/Options.ts +215 -0
  320. package/src/util/Partials.ts +50 -0
  321. package/src/util/PermissionsBitField.ts +113 -0
  322. package/src/util/RoleFlagsBitField.ts +26 -0
  323. package/src/util/SKUFlagsBitField.ts +26 -0
  324. package/src/util/ShardEvents.ts +26 -0
  325. package/src/util/Status.ts +16 -0
  326. package/src/util/Sweepers.ts +532 -0
  327. package/src/util/Symbols.ts +1 -0
  328. package/src/util/SystemChannelFlagsBitField.ts +45 -0
  329. package/src/util/ThreadMemberFlagsBitField.ts +33 -0
  330. package/src/util/Transformers.ts +123 -0
  331. package/src/util/UserFlagsBitField.ts +33 -0
  332. package/src/util/Util.ts +519 -0
@@ -0,0 +1,141 @@
1
+ import { Poll } from '../../structures/Poll.js';
2
+ import { PollAnswer } from '../../structures/PollAnswer.js';
3
+ import { Partials } from '../../util/Partials.js';
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
+ export class Action {
18
+ public client: any;
19
+ constructor(client) {
20
+ this.client = client;
21
+ }
22
+
23
+ handle(data) {
24
+ return data;
25
+ }
26
+
27
+ getPayload(data, manager, id, partialType, cache) {
28
+ return this.client.options.partials.includes(partialType) ? manager._add(data, cache) : manager.cache.get(id);
29
+ }
30
+
31
+ getChannel(data) {
32
+ const payloadData = {};
33
+ const id = data.channel_id ?? data.id;
34
+
35
+ if (!('recipients' in data)) {
36
+ // Try to resolve the recipient, but do not add the client user.
37
+ const recipient = data.author ?? data.user ?? { id: data.user_id };
38
+ if (recipient.id !== this.client.user.id) payloadData.recipients = [recipient];
39
+ }
40
+
41
+ if (id !== undefined) payloadData.id = id;
42
+
43
+ return (
44
+ data[this.client.actions.injectedChannel] ??
45
+ this.getPayload({ ...data, ...payloadData }, this.client.channels, id, Partials.Channel)
46
+ );
47
+ }
48
+
49
+ getMessage(data, channel, cache) {
50
+ const id = data.message_id ?? data.id;
51
+ return (
52
+ data[this.client.actions.injectedMessage] ??
53
+ this.getPayload(
54
+ {
55
+ id,
56
+ channel_id: channel.id,
57
+ guild_id: data.guild_id ?? channel.guild?.id,
58
+ },
59
+ channel.messages,
60
+ id,
61
+ Partials.Message,
62
+ cache,
63
+ )
64
+ );
65
+ }
66
+
67
+ getPoll(data, message, channel) {
68
+ const includePollPartial = this.client.options.partials.includes(Partials.Poll);
69
+ const includePollAnswerPartial = this.client.options.partials.includes(Partials.PollAnswer);
70
+ if (message.partial && (!includePollPartial || !includePollAnswerPartial)) return null;
71
+
72
+ if (!message.poll && includePollPartial) {
73
+ message.poll = new Poll(this.client, data, message, channel);
74
+ }
75
+
76
+ if (message.poll && !message.poll.answers.has(data.answer_id) && includePollAnswerPartial) {
77
+ const pollAnswer = new PollAnswer(this.client, data, message.poll);
78
+ message.poll.answers.set(data.answer_id, pollAnswer);
79
+ }
80
+
81
+ return message.poll;
82
+ }
83
+
84
+ getReaction(data, message, user) {
85
+ const id = data.emoji.id ?? decodeURIComponent(data.emoji.name);
86
+ return this.getPayload(
87
+ {
88
+ emoji: data.emoji,
89
+ count: message.partial ? null : 0,
90
+ me: user?.id === this.client.user.id,
91
+ },
92
+ message.reactions,
93
+ id,
94
+ Partials.Reaction,
95
+ );
96
+ }
97
+
98
+ getMember(data, guild) {
99
+ return this.getPayload(data, guild.members, data.user.id, Partials.GuildMember);
100
+ }
101
+
102
+ getUser(data) {
103
+ const id = data.user_id;
104
+ return data[this.client.actions.injectedUser] ?? this.getPayload({ id }, this.client.users, id, Partials.User);
105
+ }
106
+
107
+ getUserFromMember(data) {
108
+ if (data.guild_id && data.member?.user) {
109
+ const guild = this.client.guilds.cache.get(data.guild_id);
110
+ if (guild) {
111
+ return guild.members._add(data.member).user;
112
+ } else {
113
+ return this.client.users._add(data.member.user);
114
+ }
115
+ }
116
+
117
+ return this.getUser(data);
118
+ }
119
+
120
+ getScheduledEvent(data, guild) {
121
+ const id = data.guild_scheduled_event_id ?? data.id;
122
+ return this.getPayload(
123
+ { id, guild_id: data.guild_id ?? guild.id },
124
+ guild.scheduledEvents,
125
+ id,
126
+ Partials.GuildScheduledEvent,
127
+ );
128
+ }
129
+
130
+ getThreadMember(id, manager) {
131
+ return this.getPayload({ user_id: id }, manager, id, Partials.ThreadMember, false);
132
+ }
133
+
134
+ getSoundboardSound(data, guild) {
135
+ return this.getPayload(data, guild.soundboardSounds, data.sound_id, Partials.SoundboardSound);
136
+ }
137
+
138
+ spreadInjectedData(data) {
139
+ return Object.fromEntries(Object.getOwnPropertySymbols(data).map(symbol => [symbol, data[symbol]]));
140
+ }
141
+ }
@@ -0,0 +1,138 @@
1
+ import { Action } from './Action.js';
2
+ import { ChannelCreateAction } from './ChannelCreate.js';
3
+ import { ChannelDeleteAction } from './ChannelDelete.js';
4
+ import { ChannelUpdateAction } from './ChannelUpdate.js';
5
+ import { GuildChannelsPositionUpdateAction } from './GuildChannelsPositionUpdate.js';
6
+ import { GuildEmojiCreateAction } from './GuildEmojiCreate.js';
7
+ import { GuildEmojiDeleteAction } from './GuildEmojiDelete.js';
8
+ import { GuildEmojiUpdateAction } from './GuildEmojiUpdate.js';
9
+ import { GuildEmojisUpdateAction } from './GuildEmojisUpdate.js';
10
+ import { GuildMemberRemoveAction } from './GuildMemberRemove.js';
11
+ import { GuildMemberUpdateAction } from './GuildMemberUpdate.js';
12
+ import { GuildRoleCreateAction } from './GuildRoleCreate.js';
13
+ import { GuildRoleDeleteAction } from './GuildRoleDelete.js';
14
+ import { GuildRolesPositionUpdateAction } from './GuildRolesPositionUpdate.js';
15
+ import { GuildScheduledEventDeleteAction } from './GuildScheduledEventDelete.js';
16
+ import { GuildScheduledEventUserAddAction } from './GuildScheduledEventUserAdd.js';
17
+ import { GuildScheduledEventUserRemoveAction } from './GuildScheduledEventUserRemove.js';
18
+ import { GuildSoundboardSoundDeleteAction } from './GuildSoundboardSoundDelete.js';
19
+ import { GuildStickerCreateAction } from './GuildStickerCreate.js';
20
+ import { GuildStickerDeleteAction } from './GuildStickerDelete.js';
21
+ import { GuildStickerUpdateAction } from './GuildStickerUpdate.js';
22
+ import { GuildStickersUpdateAction } from './GuildStickersUpdate.js';
23
+ import { GuildUpdateAction } from './GuildUpdate.js';
24
+ import { InteractionCreateAction } from './InteractionCreate.js';
25
+ import { MessageCreateAction } from './MessageCreate.js';
26
+ import { MessageDeleteAction } from './MessageDelete.js';
27
+ import { MessageDeleteBulkAction } from './MessageDeleteBulk.js';
28
+ import { MessagePollVoteAddAction } from './MessagePollVoteAdd.js';
29
+ import { MessagePollVoteRemoveAction } from './MessagePollVoteRemove.js';
30
+ import { MessageReactionAddAction } from './MessageReactionAdd.js';
31
+ import { MessageReactionRemoveAction } from './MessageReactionRemove.js';
32
+ import { MessageReactionRemoveAllAction } from './MessageReactionRemoveAll.js';
33
+ import { MessageReactionRemoveEmojiAction } from './MessageReactionRemoveEmoji.js';
34
+ import { MessageUpdateAction } from './MessageUpdate.js';
35
+ import { StageInstanceCreateAction } from './StageInstanceCreate.js';
36
+ import { StageInstanceDeleteAction } from './StageInstanceDelete.js';
37
+ import { StageInstanceUpdateAction } from './StageInstanceUpdate.js';
38
+ import { ThreadCreateAction } from './ThreadCreate.js';
39
+ import { ThreadMembersUpdateAction } from './ThreadMembersUpdate.js';
40
+ import { TypingStartAction } from './TypingStart.js';
41
+ import { UserUpdateAction } from './UserUpdate.js';
42
+
43
+ export class ActionsManager {
44
+ public ChannelCreate: ChannelCreateAction;
45
+ public ChannelDelete: ChannelDeleteAction;
46
+ public ChannelUpdate: ChannelUpdateAction;
47
+ public GuildChannelsPositionUpdate: GuildChannelsPositionUpdateAction;
48
+ public GuildEmojiCreate: GuildEmojiCreateAction;
49
+ public GuildEmojiDelete: GuildEmojiDeleteAction;
50
+ public GuildEmojiUpdate: GuildEmojiUpdateAction;
51
+ public GuildEmojisUpdate: GuildEmojisUpdateAction;
52
+ public GuildMemberRemove: GuildMemberRemoveAction;
53
+ public GuildMemberUpdate: GuildMemberUpdateAction;
54
+ public GuildRoleCreate: GuildRoleCreateAction;
55
+ public GuildRoleDelete: GuildRoleDeleteAction;
56
+ public GuildRolesPositionUpdate: GuildRolesPositionUpdateAction;
57
+ public GuildScheduledEventDelete: GuildScheduledEventDeleteAction;
58
+ public GuildScheduledEventUserAdd: GuildScheduledEventUserAddAction;
59
+ public GuildScheduledEventUserRemove: GuildScheduledEventUserRemoveAction;
60
+ public GuildSoundboardSoundDelete: GuildSoundboardSoundDeleteAction;
61
+ public GuildStickerCreate: GuildStickerCreateAction;
62
+ public GuildStickerDelete: GuildStickerDeleteAction;
63
+ public GuildStickerUpdate: GuildStickerUpdateAction;
64
+ public GuildStickersUpdate: GuildStickersUpdateAction;
65
+ public GuildUpdate: GuildUpdateAction;
66
+ public InteractionCreate: InteractionCreateAction;
67
+ public MessageCreate: MessageCreateAction;
68
+ public MessageDelete: MessageDeleteAction;
69
+ public MessageDeleteBulk: MessageDeleteBulkAction;
70
+ public MessagePollVoteAdd: MessagePollVoteAddAction;
71
+ public MessagePollVoteRemove: MessagePollVoteRemoveAction;
72
+ public MessageReactionAdd: MessageReactionAddAction;
73
+ public MessageReactionRemove: MessageReactionRemoveAction;
74
+ public MessageReactionRemoveAll: MessageReactionRemoveAllAction;
75
+ public MessageReactionRemoveEmoji: MessageReactionRemoveEmojiAction;
76
+ public MessageUpdate: MessageUpdateAction;
77
+ public StageInstanceCreate: StageInstanceCreateAction;
78
+ public StageInstanceDelete: StageInstanceDeleteAction;
79
+ public StageInstanceUpdate: StageInstanceUpdateAction;
80
+ public ThreadCreate: ThreadCreateAction;
81
+ public ThreadMembersUpdate: ThreadMembersUpdateAction;
82
+ public TypingStart: TypingStartAction;
83
+ public UserUpdate: UserUpdateAction;
84
+ public client: any;
85
+ // These symbols represent fully built data that we inject at times when calling actions manually.
86
+ // Action#getUser, for example, will return the injected data (which is assumed to be a built structure)
87
+ // instead of trying to make it from provided data
88
+ injectedUser = Symbol('djs.actions.injectedUser');
89
+
90
+ injectedChannel = Symbol('djs.actions.injectedChannel');
91
+
92
+ injectedMessage = Symbol('djs.actions.injectedMessage');
93
+
94
+ constructor(client: any) {
95
+ this.client = client;
96
+
97
+ this.ChannelCreate = new ChannelCreateAction(this.client);
98
+ this.ChannelDelete = new ChannelDeleteAction(this.client);
99
+ this.ChannelUpdate = new ChannelUpdateAction(this.client);
100
+ this.GuildChannelsPositionUpdate = new GuildChannelsPositionUpdateAction(this.client);
101
+ this.GuildEmojiCreate = new GuildEmojiCreateAction(this.client);
102
+ this.GuildEmojiDelete = new GuildEmojiDeleteAction(this.client);
103
+ this.GuildEmojiUpdate = new GuildEmojiUpdateAction(this.client);
104
+ this.GuildEmojisUpdate = new GuildEmojisUpdateAction(this.client);
105
+ this.GuildMemberRemove = new GuildMemberRemoveAction(this.client);
106
+ this.GuildMemberUpdate = new GuildMemberUpdateAction(this.client);
107
+ this.GuildRoleCreate = new GuildRoleCreateAction(this.client);
108
+ this.GuildRoleDelete = new GuildRoleDeleteAction(this.client);
109
+ this.GuildRolesPositionUpdate = new GuildRolesPositionUpdateAction(this.client);
110
+ this.GuildScheduledEventDelete = new GuildScheduledEventDeleteAction(this.client);
111
+ this.GuildScheduledEventUserAdd = new GuildScheduledEventUserAddAction(this.client);
112
+ this.GuildScheduledEventUserRemove = new GuildScheduledEventUserRemoveAction(this.client);
113
+ this.GuildSoundboardSoundDelete = new GuildSoundboardSoundDeleteAction(this.client);
114
+ this.GuildStickerCreate = new GuildStickerCreateAction(this.client);
115
+ this.GuildStickerDelete = new GuildStickerDeleteAction(this.client);
116
+ this.GuildStickerUpdate = new GuildStickerUpdateAction(this.client);
117
+ this.GuildStickersUpdate = new GuildStickersUpdateAction(this.client);
118
+ this.GuildUpdate = new GuildUpdateAction(this.client);
119
+ this.InteractionCreate = new InteractionCreateAction(this.client);
120
+ this.MessageCreate = new MessageCreateAction(this.client);
121
+ this.MessageDelete = new MessageDeleteAction(this.client);
122
+ this.MessageDeleteBulk = new MessageDeleteBulkAction(this.client);
123
+ this.MessagePollVoteAdd = new MessagePollVoteAddAction(this.client);
124
+ this.MessagePollVoteRemove = new MessagePollVoteRemoveAction(this.client);
125
+ this.MessageReactionAdd = new MessageReactionAddAction(this.client);
126
+ this.MessageReactionRemove = new MessageReactionRemoveAction(this.client);
127
+ this.MessageReactionRemoveAll = new MessageReactionRemoveAllAction(this.client);
128
+ this.MessageReactionRemoveEmoji = new MessageReactionRemoveEmojiAction(this.client);
129
+ this.MessageUpdate = new MessageUpdateAction(this.client);
130
+ this.StageInstanceCreate = new StageInstanceCreateAction(this.client);
131
+ this.StageInstanceDelete = new StageInstanceDeleteAction(this.client);
132
+ this.StageInstanceUpdate = new StageInstanceUpdateAction(this.client);
133
+ this.ThreadCreate = new ThreadCreateAction(this.client);
134
+ this.ThreadMembersUpdate = new ThreadMembersUpdateAction(this.client);
135
+ this.TypingStart = new TypingStartAction(this.client);
136
+ this.UserUpdate = new UserUpdateAction(this.client);
137
+ }
138
+ }
@@ -0,0 +1,21 @@
1
+ import { Events } from '../../util/Events.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class ChannelCreateAction extends Action {
5
+ handle(data) {
6
+ const client = this.client;
7
+ const existing = client.channels.cache.has(data.id);
8
+ const channel = client.channels._add(data);
9
+ if (!existing && channel) {
10
+ /**
11
+ * Emitted whenever a guild channel is created.
12
+ *
13
+ * @event Client#channelCreate
14
+ * @param {GuildChannel} channel The channel that was created
15
+ */
16
+ client.emit(Events.ChannelCreate, channel);
17
+ }
18
+
19
+ return { channel };
20
+ }
21
+ }
@@ -0,0 +1,20 @@
1
+ import { Events } from '../../util/Events.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class ChannelDeleteAction extends Action {
5
+ handle(data) {
6
+ const client = this.client;
7
+ const channel = client.channels.cache.get(data.id);
8
+
9
+ if (channel) {
10
+ client.channels._remove(channel.id);
11
+ /**
12
+ * Emitted whenever a channel is deleted.
13
+ *
14
+ * @event Client#channelDelete
15
+ * @param {DMChannel|GuildChannel} channel The channel that was deleted
16
+ */
17
+ client.emit(Events.ChannelDelete, channel);
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,38 @@
1
+ import { createChannel } from '../../util/Channels.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class ChannelUpdateAction extends Action {
5
+ handle(data) {
6
+ const client = this.client;
7
+ let channel = client.channels.cache.get(data.id);
8
+
9
+ if (channel) {
10
+ const old = channel._update(data);
11
+
12
+ if (channel.type !== data.type) {
13
+ const newChannel = createChannel(this.client, data, channel.guild);
14
+
15
+ if (!newChannel) {
16
+ this.client.channels.cache.delete(channel.id);
17
+ return {};
18
+ }
19
+
20
+ if (channel.isTextBased() && newChannel.isTextBased()) {
21
+ for (const [id, message] of channel.messages.cache) newChannel.messages.cache.set(id, message);
22
+ }
23
+
24
+ channel = newChannel;
25
+ this.client.channels.cache.set(channel.id, channel);
26
+ }
27
+
28
+ return {
29
+ old,
30
+ updated: channel,
31
+ };
32
+ } else {
33
+ client.channels._add(data);
34
+ }
35
+
36
+ return {};
37
+ }
38
+ }
@@ -0,0 +1,17 @@
1
+ import { Action } from './Action.js';
2
+
3
+ export class GuildChannelsPositionUpdateAction extends Action {
4
+ handle(data) {
5
+ const client = this.client;
6
+
7
+ const guild = client.guilds.cache.get(data.guild_id);
8
+ if (guild) {
9
+ for (const partialChannel of data.channels) {
10
+ const channel = guild.channels.cache.get(partialChannel.id);
11
+ if (channel) channel.rawPosition = partialChannel.position;
12
+ }
13
+ }
14
+
15
+ return { guild };
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ import { Events } from '../../util/Events.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class GuildEmojiCreateAction extends Action {
5
+ handle(guild, createdEmoji) {
6
+ const already = guild.emojis.cache.has(createdEmoji.id);
7
+ const emoji = guild.emojis._add(createdEmoji);
8
+ /**
9
+ * Emitted whenever a custom emoji is created in a guild.
10
+ *
11
+ * @event Client#emojiCreate
12
+ * @param {GuildEmoji} emoji The emoji that was created
13
+ */
14
+ if (!already) this.client.emit(Events.GuildEmojiCreate, emoji);
15
+ return { emoji };
16
+ }
17
+ }
@@ -0,0 +1,16 @@
1
+ import { Events } from '../../util/Events.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class GuildEmojiDeleteAction extends Action {
5
+ handle(emoji) {
6
+ emoji.guild.emojis.cache.delete(emoji.id);
7
+ /**
8
+ * Emitted whenever a custom emoji is deleted in a guild.
9
+ *
10
+ * @event Client#emojiDelete
11
+ * @param {GuildEmoji} emoji The emoji that was deleted
12
+ */
13
+ this.client.emit(Events.GuildEmojiDelete, emoji);
14
+ return { emoji };
15
+ }
16
+ }
@@ -0,0 +1,17 @@
1
+ import { Events } from '../../util/Events.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class GuildEmojiUpdateAction extends Action {
5
+ handle(current, data) {
6
+ const old = current._update(data);
7
+ /**
8
+ * Emitted whenever a custom emoji is updated in a guild.
9
+ *
10
+ * @event Client#emojiUpdate
11
+ * @param {GuildEmoji} oldEmoji The old emoji
12
+ * @param {GuildEmoji} newEmoji The new emoji
13
+ */
14
+ this.client.emit(Events.GuildEmojiUpdate, old, current);
15
+ return { emoji: current };
16
+ }
17
+ }
@@ -0,0 +1,30 @@
1
+ import { Action } from './Action.js';
2
+
3
+ export class GuildEmojisUpdateAction extends Action {
4
+ handle(data) {
5
+ const guild = this.client.guilds.cache.get(data.guild_id);
6
+ if (!guild?.emojis) return;
7
+
8
+ const deletions = new Map(guild.emojis.cache);
9
+
10
+ for (const emoji of data.emojis) {
11
+ // Determine type of emoji event
12
+ const cachedEmoji = guild.emojis.cache.get(emoji.id);
13
+ if (cachedEmoji) {
14
+ deletions.delete(emoji.id);
15
+ if (!cachedEmoji.equals(emoji)) {
16
+ // Emoji updated
17
+ this.client.actions.GuildEmojiUpdate.handle(cachedEmoji, emoji);
18
+ }
19
+ } else {
20
+ // Emoji added
21
+ this.client.actions.GuildEmojiCreate.handle(guild, emoji);
22
+ }
23
+ }
24
+
25
+ for (const emoji of deletions.values()) {
26
+ // Emoji deleted
27
+ this.client.actions.GuildEmojiDelete.handle(emoji);
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,29 @@
1
+ import { Events } from '../../util/Events.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class GuildMemberRemoveAction extends Action {
5
+ handle(data) {
6
+ const client = this.client;
7
+ const guild = client.guilds.cache.get(data.guild_id);
8
+ let member = null;
9
+ if (guild) {
10
+ member = this.getMember({ user: data.user }, guild);
11
+ guild.memberCount--;
12
+ if (member) {
13
+ guild.members.cache.delete(member.id);
14
+ /**
15
+ * Emitted whenever a member leaves a guild, or is kicked.
16
+ *
17
+ * @event Client#guildMemberRemove
18
+ * @param {GuildMember} member The member that has left/been kicked from the guild
19
+ */
20
+ client.emit(Events.GuildMemberRemove, member);
21
+ }
22
+
23
+ guild.presences.cache.delete(data.user.id);
24
+ guild.voiceStates.cache.delete(data.user.id);
25
+ }
26
+
27
+ return { guild, member };
28
+ }
29
+ }
@@ -0,0 +1,41 @@
1
+ import { Events } from '../../util/Events.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class GuildMemberUpdateAction extends Action {
5
+ handle(data) {
6
+ const { client } = this;
7
+ if (data.user.username) {
8
+ const user = client.users.cache.get(data.user.id);
9
+ if (!user) {
10
+ client.users._add(data.user);
11
+ } else if (!user._equals(data.user)) {
12
+ client.actions.UserUpdate.handle(data.user);
13
+ }
14
+ }
15
+
16
+ const guild = client.guilds.cache.get(data.guild_id);
17
+ if (guild) {
18
+ const member = this.getMember({ user: data.user }, guild);
19
+ if (member) {
20
+ const old = member._update(data);
21
+ /**
22
+ * Emitted whenever a guild member changes - i.e. new role, removed role, nickname.
23
+ *
24
+ * @event Client#guildMemberUpdate
25
+ * @param {GuildMember} oldMember The member before the update
26
+ * @param {GuildMember} newMember The member after the update
27
+ */
28
+ if (!member.equals(old)) client.emit(Events.GuildMemberUpdate, old, member);
29
+ } else {
30
+ const newMember = guild.members._add(data);
31
+ /**
32
+ * Emitted whenever a member becomes available.
33
+ *
34
+ * @event Client#guildMemberAvailable
35
+ * @param {GuildMember} member The member that became available
36
+ */
37
+ this.client.emit(Events.GuildMemberAvailable, newMember);
38
+ }
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,23 @@
1
+ import { Events } from '../../util/Events.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class GuildRoleCreateAction extends Action {
5
+ handle(data) {
6
+ const client = this.client;
7
+ const guild = client.guilds.cache.get(data.guild_id);
8
+ let role;
9
+ if (guild) {
10
+ const already = guild.roles.cache.has(data.role.id);
11
+ role = guild.roles._add(data.role);
12
+ /**
13
+ * Emitted whenever a role is created.
14
+ *
15
+ * @event Client#roleCreate
16
+ * @param {Role} role The role that was created
17
+ */
18
+ if (!already) client.emit(Events.GuildRoleCreate, role);
19
+ }
20
+
21
+ return { role };
22
+ }
23
+ }
@@ -0,0 +1,26 @@
1
+ import { Events } from '../../util/Events.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class GuildRoleDeleteAction extends Action {
5
+ handle(data) {
6
+ const client = this.client;
7
+ const guild = client.guilds.cache.get(data.guild_id);
8
+ let role;
9
+
10
+ if (guild) {
11
+ role = guild.roles.cache.get(data.role_id);
12
+ if (role) {
13
+ guild.roles.cache.delete(data.role_id);
14
+ /**
15
+ * Emitted whenever a guild role is deleted.
16
+ *
17
+ * @event Client#roleDelete
18
+ * @param {Role} role The role that was deleted
19
+ */
20
+ client.emit(Events.GuildRoleDelete, role);
21
+ }
22
+ }
23
+
24
+ return { role };
25
+ }
26
+ }
@@ -0,0 +1,17 @@
1
+ import { Action } from './Action.js';
2
+
3
+ export class GuildRolesPositionUpdateAction extends Action {
4
+ handle(data) {
5
+ const client = this.client;
6
+
7
+ const guild = client.guilds.cache.get(data.guild_id);
8
+ if (guild) {
9
+ for (const partialRole of data.roles) {
10
+ const role = guild.roles.cache.get(partialRole.id);
11
+ if (role) role.rawPosition = partialRole.position;
12
+ }
13
+ }
14
+
15
+ return { guild };
16
+ }
17
+ }
@@ -0,0 +1,28 @@
1
+ import { Events } from '../../util/Events.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class GuildScheduledEventDeleteAction extends Action {
5
+ handle(data) {
6
+ const client = this.client;
7
+ const guild = client.guilds.cache.get(data.guild_id);
8
+
9
+ if (guild) {
10
+ const guildScheduledEvent = this.getScheduledEvent(data, guild);
11
+ if (guildScheduledEvent) {
12
+ guild.scheduledEvents.cache.delete(guildScheduledEvent.id);
13
+
14
+ /**
15
+ * Emitted whenever a guild scheduled event is deleted.
16
+ *
17
+ * @event Client#guildScheduledEventDelete
18
+ * @param {GuildScheduledEvent} guildScheduledEvent The deleted guild scheduled event
19
+ */
20
+ client.emit(Events.GuildScheduledEventDelete, guildScheduledEvent);
21
+
22
+ return { guildScheduledEvent };
23
+ }
24
+ }
25
+
26
+ return {};
27
+ }
28
+ }
@@ -0,0 +1,29 @@
1
+ import { Events } from '../../util/Events.js';
2
+ import { Action } from './Action.js';
3
+
4
+ export class GuildScheduledEventUserAddAction extends Action {
5
+ handle(data) {
6
+ const client = this.client;
7
+ const guild = client.guilds.cache.get(data.guild_id);
8
+
9
+ if (guild) {
10
+ const guildScheduledEvent = this.getScheduledEvent(data, guild);
11
+ const user = this.getUser(data);
12
+
13
+ if (guildScheduledEvent && user) {
14
+ /**
15
+ * Emitted whenever a user subscribes to a guild scheduled event
16
+ *
17
+ * @event Client#guildScheduledEventUserAdd
18
+ * @param {GuildScheduledEvent} guildScheduledEvent The guild scheduled event
19
+ * @param {User} user The user who subscribed
20
+ */
21
+ client.emit(Events.GuildScheduledEventUserAdd, guildScheduledEvent, user);
22
+
23
+ return { guildScheduledEvent, user };
24
+ }
25
+ }
26
+
27
+ return {};
28
+ }
29
+ }