@velliajs/discord 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +133 -0
  3. package/package.json +82 -0
  4. package/src/client/BaseClient.js +83 -0
  5. package/src/client/Client.js +591 -0
  6. package/src/client/WebhookClient.js +103 -0
  7. package/src/client/actions/Action.js +119 -0
  8. package/src/client/actions/ActionsManager.js +79 -0
  9. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  10. package/src/client/actions/AutoModerationActionExecution.js +26 -0
  11. package/src/client/actions/AutoModerationRuleCreate.js +27 -0
  12. package/src/client/actions/AutoModerationRuleDelete.js +31 -0
  13. package/src/client/actions/AutoModerationRuleUpdate.js +29 -0
  14. package/src/client/actions/ChannelCreate.js +23 -0
  15. package/src/client/actions/ChannelDelete.js +23 -0
  16. package/src/client/actions/ChannelUpdate.js +33 -0
  17. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  18. package/src/client/actions/GuildBanAdd.js +20 -0
  19. package/src/client/actions/GuildBanRemove.js +25 -0
  20. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  21. package/src/client/actions/GuildDelete.js +44 -0
  22. package/src/client/actions/GuildEmojiCreate.js +20 -0
  23. package/src/client/actions/GuildEmojiDelete.js +19 -0
  24. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  25. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  26. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  27. package/src/client/actions/GuildMemberRemove.js +31 -0
  28. package/src/client/actions/GuildMemberUpdate.js +44 -0
  29. package/src/client/actions/GuildRoleCreate.js +25 -0
  30. package/src/client/actions/GuildRoleDelete.js +29 -0
  31. package/src/client/actions/GuildRoleUpdate.js +39 -0
  32. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  33. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  34. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  35. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  36. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  37. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  38. package/src/client/actions/GuildStickerCreate.js +20 -0
  39. package/src/client/actions/GuildStickerDelete.js +19 -0
  40. package/src/client/actions/GuildStickerUpdate.js +20 -0
  41. package/src/client/actions/GuildStickersUpdate.js +34 -0
  42. package/src/client/actions/GuildUpdate.js +33 -0
  43. package/src/client/actions/InteractionCreate.js +101 -0
  44. package/src/client/actions/InviteCreate.js +28 -0
  45. package/src/client/actions/InviteDelete.js +30 -0
  46. package/src/client/actions/MessageCreate.js +37 -0
  47. package/src/client/actions/MessageDelete.js +32 -0
  48. package/src/client/actions/MessageDeleteBulk.js +47 -0
  49. package/src/client/actions/MessageReactionAdd.js +55 -0
  50. package/src/client/actions/MessageReactionRemove.js +45 -0
  51. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  52. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  53. package/src/client/actions/MessageUpdate.js +26 -0
  54. package/src/client/actions/PresenceUpdate.js +42 -0
  55. package/src/client/actions/StageInstanceCreate.js +28 -0
  56. package/src/client/actions/StageInstanceDelete.js +31 -0
  57. package/src/client/actions/StageInstanceUpdate.js +30 -0
  58. package/src/client/actions/ThreadCreate.js +24 -0
  59. package/src/client/actions/ThreadDelete.js +26 -0
  60. package/src/client/actions/ThreadListSync.js +60 -0
  61. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  62. package/src/client/actions/ThreadMembersUpdate.js +47 -0
  63. package/src/client/actions/TypingStart.js +29 -0
  64. package/src/client/actions/UserUpdate.js +36 -0
  65. package/src/client/actions/VoiceStateUpdate.js +43 -0
  66. package/src/client/actions/WebhooksUpdate.js +20 -0
  67. package/src/client/voice/ClientVoiceManager.js +44 -0
  68. package/src/client/websocket/WebSocketManager.js +393 -0
  69. package/src/client/websocket/WebSocketShard.js +231 -0
  70. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  71. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  72. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  73. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  74. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  75. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  76. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  77. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  78. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  79. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  80. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  81. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  82. package/src/client/websocket/handlers/GUILD_CREATE.js +26 -0
  83. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  84. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  85. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  86. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  87. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  88. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  89. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  90. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  91. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  92. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  93. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  94. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  95. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  96. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  97. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  98. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  99. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  100. package/src/client/websocket/handlers/INTERACTION_CREATE.js +5 -0
  101. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  102. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  103. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  104. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  105. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  106. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  107. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  108. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  109. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  110. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  111. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  112. package/src/client/websocket/handlers/READY.js +27 -0
  113. package/src/client/websocket/handlers/RESUMED.js +14 -0
  114. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  115. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  116. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  117. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  118. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  119. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  120. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  121. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  122. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  123. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  124. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  125. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  126. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  127. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  128. package/src/client/websocket/handlers/index.js +64 -0
  129. package/src/errors/DJSError.js +48 -0
  130. package/src/errors/ErrorCodes.js +319 -0
  131. package/src/errors/Messages.js +170 -0
  132. package/src/errors/index.js +5 -0
  133. package/src/index.js +213 -0
  134. package/src/managers/ApplicationCommandManager.js +263 -0
  135. package/src/managers/ApplicationCommandPermissionsManager.js +434 -0
  136. package/src/managers/AutoModerationRuleManager.js +288 -0
  137. package/src/managers/BaseGuildEmojiManager.js +80 -0
  138. package/src/managers/BaseManager.js +19 -0
  139. package/src/managers/CachedManager.js +57 -0
  140. package/src/managers/CategoryChannelChildManager.js +77 -0
  141. package/src/managers/ChannelManager.js +128 -0
  142. package/src/managers/DataManager.js +61 -0
  143. package/src/managers/GuildApplicationCommandManager.js +28 -0
  144. package/src/managers/GuildBanManager.js +204 -0
  145. package/src/managers/GuildChannelManager.js +494 -0
  146. package/src/managers/GuildEmojiManager.js +174 -0
  147. package/src/managers/GuildEmojiRoleManager.js +118 -0
  148. package/src/managers/GuildForumThreadManager.js +83 -0
  149. package/src/managers/GuildInviteManager.js +213 -0
  150. package/src/managers/GuildManager.js +283 -0
  151. package/src/managers/GuildMemberManager.js +540 -0
  152. package/src/managers/GuildMemberRoleManager.js +204 -0
  153. package/src/managers/GuildScheduledEventManager.js +297 -0
  154. package/src/managers/GuildStickerManager.js +182 -0
  155. package/src/managers/GuildTextThreadManager.js +91 -0
  156. package/src/managers/MessageManager.js +259 -0
  157. package/src/managers/PermissionOverwriteManager.js +168 -0
  158. package/src/managers/PresenceManager.js +58 -0
  159. package/src/managers/ReactionManager.js +68 -0
  160. package/src/managers/ReactionUserManager.js +77 -0
  161. package/src/managers/RoleManager.js +360 -0
  162. package/src/managers/StageInstanceManager.js +154 -0
  163. package/src/managers/ThreadManager.js +204 -0
  164. package/src/managers/ThreadMemberManager.js +182 -0
  165. package/src/managers/UserManager.js +139 -0
  166. package/src/managers/VoiceStateManager.js +37 -0
  167. package/src/sharding/Shard.js +457 -0
  168. package/src/sharding/ShardClientUtil.js +285 -0
  169. package/src/sharding/ShardingManager.js +326 -0
  170. package/src/structures/ActionRow.js +46 -0
  171. package/src/structures/ActionRowBuilder.js +35 -0
  172. package/src/structures/AnonymousGuild.js +97 -0
  173. package/src/structures/ApplicationCommand.js +606 -0
  174. package/src/structures/ApplicationRoleConnectionMetadata.js +46 -0
  175. package/src/structures/Attachment.js +140 -0
  176. package/src/structures/AttachmentBuilder.js +116 -0
  177. package/src/structures/AutoModerationActionExecution.js +116 -0
  178. package/src/structures/AutoModerationRule.js +284 -0
  179. package/src/structures/AutocompleteInteraction.js +97 -0
  180. package/src/structures/Base.js +43 -0
  181. package/src/structures/BaseChannel.js +160 -0
  182. package/src/structures/BaseGuild.js +119 -0
  183. package/src/structures/BaseGuildEmoji.js +56 -0
  184. package/src/structures/BaseGuildTextChannel.js +186 -0
  185. package/src/structures/BaseGuildVoiceChannel.js +234 -0
  186. package/src/structures/BaseInteraction.js +344 -0
  187. package/src/structures/BaseSelectMenuComponent.js +56 -0
  188. package/src/structures/ButtonBuilder.js +44 -0
  189. package/src/structures/ButtonComponent.js +65 -0
  190. package/src/structures/ButtonInteraction.js +11 -0
  191. package/src/structures/CategoryChannel.js +45 -0
  192. package/src/structures/ChannelSelectMenuBuilder.js +31 -0
  193. package/src/structures/ChannelSelectMenuComponent.js +20 -0
  194. package/src/structures/ChannelSelectMenuInteraction.js +33 -0
  195. package/src/structures/ChatInputCommandInteraction.js +41 -0
  196. package/src/structures/ClientApplication.js +193 -0
  197. package/src/structures/ClientPresence.js +82 -0
  198. package/src/structures/ClientUser.js +185 -0
  199. package/src/structures/CommandInteraction.js +224 -0
  200. package/src/structures/CommandInteractionOptionResolver.js +308 -0
  201. package/src/structures/Component.js +47 -0
  202. package/src/structures/ContextMenuCommandInteraction.js +64 -0
  203. package/src/structures/DMChannel.js +129 -0
  204. package/src/structures/DirectoryChannel.js +36 -0
  205. package/src/structures/Embed.js +220 -0
  206. package/src/structures/EmbedBuilder.js +41 -0
  207. package/src/structures/Emoji.js +108 -0
  208. package/src/structures/ForumChannel.js +264 -0
  209. package/src/structures/Guild.js +1361 -0
  210. package/src/structures/GuildAuditLogs.js +91 -0
  211. package/src/structures/GuildAuditLogsEntry.js +527 -0
  212. package/src/structures/GuildBan.js +59 -0
  213. package/src/structures/GuildChannel.js +457 -0
  214. package/src/structures/GuildEmoji.js +148 -0
  215. package/src/structures/GuildMember.js +518 -0
  216. package/src/structures/GuildPreview.js +193 -0
  217. package/src/structures/GuildPreviewEmoji.js +27 -0
  218. package/src/structures/GuildScheduledEvent.js +439 -0
  219. package/src/structures/GuildTemplate.js +241 -0
  220. package/src/structures/Integration.js +220 -0
  221. package/src/structures/IntegrationApplication.js +85 -0
  222. package/src/structures/InteractionCollector.js +263 -0
  223. package/src/structures/InteractionResponse.js +102 -0
  224. package/src/structures/InteractionWebhook.js +59 -0
  225. package/src/structures/Invite.js +322 -0
  226. package/src/structures/InviteGuild.js +22 -0
  227. package/src/structures/InviteStageInstance.js +87 -0
  228. package/src/structures/MentionableSelectMenuBuilder.js +32 -0
  229. package/src/structures/MentionableSelectMenuComponent.js +11 -0
  230. package/src/structures/MentionableSelectMenuInteraction.js +71 -0
  231. package/src/structures/Message.js +997 -0
  232. package/src/structures/MessageCollector.js +146 -0
  233. package/src/structures/MessageComponentInteraction.js +107 -0
  234. package/src/structures/MessageContextMenuCommandInteraction.js +20 -0
  235. package/src/structures/MessageMentions.js +297 -0
  236. package/src/structures/MessagePayload.js +299 -0
  237. package/src/structures/MessageReaction.js +142 -0
  238. package/src/structures/ModalBuilder.js +34 -0
  239. package/src/structures/ModalSubmitFields.js +55 -0
  240. package/src/structures/ModalSubmitInteraction.js +121 -0
  241. package/src/structures/NewsChannel.js +32 -0
  242. package/src/structures/OAuth2Guild.js +28 -0
  243. package/src/structures/PartialGroupDMChannel.js +60 -0
  244. package/src/structures/PermissionOverwrites.js +196 -0
  245. package/src/structures/Presence.js +372 -0
  246. package/src/structures/ReactionCollector.js +229 -0
  247. package/src/structures/ReactionEmoji.js +31 -0
  248. package/src/structures/Role.js +458 -0
  249. package/src/structures/RoleSelectMenuBuilder.js +31 -0
  250. package/src/structures/RoleSelectMenuComponent.js +11 -0
  251. package/src/structures/RoleSelectMenuInteraction.js +33 -0
  252. package/src/structures/SelectMenuBuilder.js +26 -0
  253. package/src/structures/SelectMenuComponent.js +26 -0
  254. package/src/structures/SelectMenuInteraction.js +26 -0
  255. package/src/structures/SelectMenuOptionBuilder.js +26 -0
  256. package/src/structures/StageChannel.js +112 -0
  257. package/src/structures/StageInstance.js +167 -0
  258. package/src/structures/Sticker.js +272 -0
  259. package/src/structures/StickerPack.js +95 -0
  260. package/src/structures/StringSelectMenuBuilder.js +79 -0
  261. package/src/structures/StringSelectMenuComponent.js +20 -0
  262. package/src/structures/StringSelectMenuInteraction.js +21 -0
  263. package/src/structures/StringSelectMenuOptionBuilder.js +49 -0
  264. package/src/structures/Team.js +117 -0
  265. package/src/structures/TeamMember.js +70 -0
  266. package/src/structures/TextChannel.js +33 -0
  267. package/src/structures/TextInputBuilder.js +31 -0
  268. package/src/structures/TextInputComponent.js +29 -0
  269. package/src/structures/ThreadChannel.js +606 -0
  270. package/src/structures/ThreadMember.js +113 -0
  271. package/src/structures/Typing.js +74 -0
  272. package/src/structures/User.js +331 -0
  273. package/src/structures/UserContextMenuCommandInteraction.js +29 -0
  274. package/src/structures/UserSelectMenuBuilder.js +31 -0
  275. package/src/structures/UserSelectMenuComponent.js +11 -0
  276. package/src/structures/UserSelectMenuInteraction.js +51 -0
  277. package/src/structures/VoiceChannel.js +96 -0
  278. package/src/structures/VoiceRegion.js +46 -0
  279. package/src/structures/VoiceState.js +303 -0
  280. package/src/structures/Webhook.js +481 -0
  281. package/src/structures/WelcomeChannel.js +60 -0
  282. package/src/structures/WelcomeScreen.js +49 -0
  283. package/src/structures/Widget.js +88 -0
  284. package/src/structures/WidgetMember.js +99 -0
  285. package/src/structures/interfaces/Application.js +108 -0
  286. package/src/structures/interfaces/Collector.js +335 -0
  287. package/src/structures/interfaces/InteractionResponses.js +320 -0
  288. package/src/structures/interfaces/TextBasedChannel.js +413 -0
  289. package/src/util/APITypes.js +456 -0
  290. package/src/util/ActivityFlagsBitField.js +26 -0
  291. package/src/util/ApplicationFlagsBitField.js +26 -0
  292. package/src/util/BitField.js +176 -0
  293. package/src/util/ChannelFlagsBitField.js +41 -0
  294. package/src/util/Channels.js +150 -0
  295. package/src/util/Colors.js +73 -0
  296. package/src/util/Components.js +152 -0
  297. package/src/util/Constants.js +230 -0
  298. package/src/util/DataResolver.js +140 -0
  299. package/src/util/Enums.js +13 -0
  300. package/src/util/Events.js +160 -0
  301. package/src/util/Formatters.js +413 -0
  302. package/src/util/GuildMemberFlagsBitField.js +41 -0
  303. package/src/util/IntentsBitField.js +34 -0
  304. package/src/util/LimitedCollection.js +68 -0
  305. package/src/util/MessageFlagsBitField.js +32 -0
  306. package/src/util/Options.js +216 -0
  307. package/src/util/Partials.js +44 -0
  308. package/src/util/PermissionsBitField.js +104 -0
  309. package/src/util/ShardEvents.js +27 -0
  310. package/src/util/Status.js +33 -0
  311. package/src/util/Sweepers.js +467 -0
  312. package/src/util/SystemChannelFlagsBitField.js +43 -0
  313. package/src/util/ThreadMemberFlagsBitField.js +31 -0
  314. package/src/util/Transformers.js +36 -0
  315. package/src/util/UserFlagsBitField.js +32 -0
  316. package/src/util/Util.js +394 -0
  317. package/src/util/WebSocketShardEvents.js +25 -0
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildIntegrationsUpdate extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+ /**
11
+ * Emitted whenever a guild integration is updated
12
+ * @event Client#guildIntegrationsUpdate
13
+ * @param {Guild} guild The guild whose integrations were updated
14
+ */
15
+ if (guild) client.emit(Events.GuildIntegrationsUpdate, guild);
16
+ }
17
+ }
18
+
19
+ module.exports = GuildIntegrationsUpdate;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+ const Status = require('../../util/Status');
6
+
7
+ class GuildMemberRemoveAction extends Action {
8
+ handle(data, shard) {
9
+ const client = this.client;
10
+ const guild = client.guilds.cache.get(data.guild_id);
11
+ let member = null;
12
+ if (guild) {
13
+ member = this.getMember({ user: data.user }, guild);
14
+ guild.memberCount--;
15
+ if (member) {
16
+ guild.members.cache.delete(member.id);
17
+ /**
18
+ * Emitted whenever a member leaves a guild, or is kicked.
19
+ * @event Client#guildMemberRemove
20
+ * @param {GuildMember} member The member that has left/been kicked from the guild
21
+ */
22
+ if (shard.status === Status.Ready) client.emit(Events.GuildMemberRemove, member);
23
+ }
24
+ guild.presences.cache.delete(data.user.id);
25
+ guild.voiceStates.cache.delete(data.user.id);
26
+ }
27
+ return { guild, member };
28
+ }
29
+ }
30
+
31
+ module.exports = GuildMemberRemoveAction;
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+ const Status = require('../../util/Status');
6
+
7
+ class GuildMemberUpdateAction extends Action {
8
+ handle(data, shard) {
9
+ const { client } = this;
10
+ if (data.user.username) {
11
+ const user = client.users.cache.get(data.user.id);
12
+ if (!user) {
13
+ client.users._add(data.user);
14
+ } else if (!user._equals(data.user)) {
15
+ client.actions.UserUpdate.handle(data.user);
16
+ }
17
+ }
18
+
19
+ const guild = client.guilds.cache.get(data.guild_id);
20
+ if (guild) {
21
+ const member = this.getMember({ user: data.user }, guild);
22
+ if (member) {
23
+ const old = member._update(data);
24
+ /**
25
+ * Emitted whenever a guild member changes - i.e. new role, removed role, nickname.
26
+ * @event Client#guildMemberUpdate
27
+ * @param {GuildMember} oldMember The member before the update
28
+ * @param {GuildMember} newMember The member after the update
29
+ */
30
+ if (shard.status === Status.Ready && !member.equals(old)) client.emit(Events.GuildMemberUpdate, old, member);
31
+ } else {
32
+ const newMember = guild.members._add(data);
33
+ /**
34
+ * Emitted whenever a member becomes available.
35
+ * @event Client#guildMemberAvailable
36
+ * @param {GuildMember} member The member that became available
37
+ */
38
+ this.client.emit(Events.GuildMemberAvailable, newMember);
39
+ }
40
+ }
41
+ }
42
+ }
43
+
44
+ module.exports = GuildMemberUpdateAction;
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildRoleCreate extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+ let role;
11
+ if (guild) {
12
+ const already = guild.roles.cache.has(data.role.id);
13
+ role = guild.roles._add(data.role);
14
+ /**
15
+ * Emitted whenever a role is created.
16
+ * @event Client#roleCreate
17
+ * @param {Role} role The role that was created
18
+ */
19
+ if (!already) client.emit(Events.GuildRoleCreate, role);
20
+ }
21
+ return { role };
22
+ }
23
+ }
24
+
25
+ module.exports = GuildRoleCreate;
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildRoleDeleteAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+ let role;
11
+
12
+ if (guild) {
13
+ role = guild.roles.cache.get(data.role_id);
14
+ if (role) {
15
+ guild.roles.cache.delete(data.role_id);
16
+ /**
17
+ * Emitted whenever a guild role is deleted.
18
+ * @event Client#roleDelete
19
+ * @param {Role} role The role that was deleted
20
+ */
21
+ client.emit(Events.GuildRoleDelete, role);
22
+ }
23
+ }
24
+
25
+ return { role };
26
+ }
27
+ }
28
+
29
+ module.exports = GuildRoleDeleteAction;
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildRoleUpdateAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+
11
+ if (guild) {
12
+ let old = null;
13
+
14
+ const role = guild.roles.cache.get(data.role.id);
15
+ if (role) {
16
+ old = role._update(data.role);
17
+ /**
18
+ * Emitted whenever a guild role is updated.
19
+ * @event Client#roleUpdate
20
+ * @param {Role} oldRole The role before the update
21
+ * @param {Role} newRole The role after the update
22
+ */
23
+ client.emit(Events.GuildRoleUpdate, old, role);
24
+ }
25
+
26
+ return {
27
+ old,
28
+ updated: role,
29
+ };
30
+ }
31
+
32
+ return {
33
+ old: null,
34
+ updated: null,
35
+ };
36
+ }
37
+ }
38
+
39
+ module.exports = GuildRoleUpdateAction;
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+
5
+ class GuildRolesPositionUpdate 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 partialRole of data.roles) {
12
+ const role = guild.roles.cache.get(partialRole.id);
13
+ if (role) role.rawPosition = partialRole.position;
14
+ }
15
+ }
16
+
17
+ return { guild };
18
+ }
19
+ }
20
+
21
+ module.exports = GuildRolesPositionUpdate;
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildScheduledEventCreateAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+ if (guild) {
11
+ const guildScheduledEvent = guild.scheduledEvents._add(data);
12
+
13
+ /**
14
+ * Emitted whenever a guild scheduled event is created.
15
+ * @event Client#guildScheduledEventCreate
16
+ * @param {GuildScheduledEvent} guildScheduledEvent The created guild scheduled event
17
+ */
18
+ client.emit(Events.GuildScheduledEventCreate, guildScheduledEvent);
19
+
20
+ return { guildScheduledEvent };
21
+ }
22
+
23
+ return {};
24
+ }
25
+ }
26
+
27
+ module.exports = GuildScheduledEventCreateAction;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildScheduledEventDeleteAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+
11
+ if (guild) {
12
+ const guildScheduledEvent = this.getScheduledEvent(data, guild);
13
+ if (guildScheduledEvent) {
14
+ guild.scheduledEvents.cache.delete(guildScheduledEvent.id);
15
+
16
+ /**
17
+ * Emitted whenever a guild scheduled event is deleted.
18
+ * @event Client#guildScheduledEventDelete
19
+ * @param {GuildScheduledEvent} guildScheduledEvent The deleted guild scheduled event
20
+ */
21
+ client.emit(Events.GuildScheduledEventDelete, guildScheduledEvent);
22
+
23
+ return { guildScheduledEvent };
24
+ }
25
+ }
26
+
27
+ return {};
28
+ }
29
+ }
30
+
31
+ module.exports = GuildScheduledEventDeleteAction;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildScheduledEventUpdateAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+
11
+ if (guild) {
12
+ const oldGuildScheduledEvent = guild.scheduledEvents.cache.get(data.id)?._clone() ?? null;
13
+ const newGuildScheduledEvent = guild.scheduledEvents._add(data);
14
+
15
+ /**
16
+ * Emitted whenever a guild scheduled event gets updated.
17
+ * @event Client#guildScheduledEventUpdate
18
+ * @param {?GuildScheduledEvent} oldGuildScheduledEvent The guild scheduled event object before the update
19
+ * @param {GuildScheduledEvent} newGuildScheduledEvent The guild scheduled event object after the update
20
+ */
21
+ client.emit(Events.GuildScheduledEventUpdate, oldGuildScheduledEvent, newGuildScheduledEvent);
22
+
23
+ return { oldGuildScheduledEvent, newGuildScheduledEvent };
24
+ }
25
+
26
+ return {};
27
+ }
28
+ }
29
+
30
+ module.exports = GuildScheduledEventUpdateAction;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildScheduledEventUserAddAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+
11
+ if (guild) {
12
+ const guildScheduledEvent = this.getScheduledEvent(data, guild);
13
+ const user = this.getUser(data);
14
+
15
+ if (guildScheduledEvent && user) {
16
+ /**
17
+ * Emitted whenever a user subscribes to a guild scheduled event
18
+ * @event Client#guildScheduledEventUserAdd
19
+ * @param {GuildScheduledEvent} guildScheduledEvent The guild scheduled event
20
+ * @param {User} user The user who subscribed
21
+ */
22
+ client.emit(Events.GuildScheduledEventUserAdd, guildScheduledEvent, user);
23
+
24
+ return { guildScheduledEvent, user };
25
+ }
26
+ }
27
+
28
+ return {};
29
+ }
30
+ }
31
+
32
+ module.exports = GuildScheduledEventUserAddAction;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildScheduledEventUserRemoveAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const guild = client.guilds.cache.get(data.guild_id);
10
+
11
+ if (guild) {
12
+ const guildScheduledEvent = this.getScheduledEvent(data, guild);
13
+ const user = this.getUser(data);
14
+
15
+ if (guildScheduledEvent && user) {
16
+ /**
17
+ * Emitted whenever a user unsubscribes from a guild scheduled event
18
+ * @event Client#guildScheduledEventUserRemove
19
+ * @param {GuildScheduledEvent} guildScheduledEvent The guild scheduled event
20
+ * @param {User} user The user who unsubscribed
21
+ */
22
+ client.emit(Events.GuildScheduledEventUserRemove, guildScheduledEvent, user);
23
+
24
+ return { guildScheduledEvent, user };
25
+ }
26
+ }
27
+
28
+ return {};
29
+ }
30
+ }
31
+
32
+ module.exports = GuildScheduledEventUserRemoveAction;
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildStickerCreateAction extends Action {
7
+ handle(guild, createdSticker) {
8
+ const already = guild.stickers.cache.has(createdSticker.id);
9
+ const sticker = guild.stickers._add(createdSticker);
10
+ /**
11
+ * Emitted whenever a custom sticker is created in a guild.
12
+ * @event Client#stickerCreate
13
+ * @param {Sticker} sticker The sticker that was created
14
+ */
15
+ if (!already) this.client.emit(Events.GuildStickerCreate, sticker);
16
+ return { sticker };
17
+ }
18
+ }
19
+
20
+ module.exports = GuildStickerCreateAction;
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildStickerDeleteAction extends Action {
7
+ handle(sticker) {
8
+ sticker.guild.stickers.cache.delete(sticker.id);
9
+ /**
10
+ * Emitted whenever a custom sticker is deleted in a guild.
11
+ * @event Client#stickerDelete
12
+ * @param {Sticker} sticker The sticker that was deleted
13
+ */
14
+ this.client.emit(Events.GuildStickerDelete, sticker);
15
+ return { sticker };
16
+ }
17
+ }
18
+
19
+ module.exports = GuildStickerDeleteAction;
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildStickerUpdateAction extends Action {
7
+ handle(current, data) {
8
+ const old = current._update(data);
9
+ /**
10
+ * Emitted whenever a custom sticker is updated in a guild.
11
+ * @event Client#stickerUpdate
12
+ * @param {Sticker} oldSticker The old sticker
13
+ * @param {Sticker} newSticker The new sticker
14
+ */
15
+ this.client.emit(Events.GuildStickerUpdate, old, current);
16
+ return { sticker: current };
17
+ }
18
+ }
19
+
20
+ module.exports = GuildStickerUpdateAction;
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+
5
+ class GuildStickersUpdateAction extends Action {
6
+ handle(data) {
7
+ const guild = this.client.guilds.cache.get(data.guild_id);
8
+ if (!guild?.stickers) return;
9
+
10
+ const deletions = new Map(guild.stickers.cache);
11
+
12
+ for (const sticker of data.stickers) {
13
+ // Determine type of sticker event
14
+ const cachedSticker = guild.stickers.cache.get(sticker.id);
15
+ if (cachedSticker) {
16
+ deletions.delete(sticker.id);
17
+ if (!cachedSticker.equals(sticker)) {
18
+ // Sticker updated
19
+ this.client.actions.GuildStickerUpdate.handle(cachedSticker, sticker);
20
+ }
21
+ } else {
22
+ // Sticker added
23
+ this.client.actions.GuildStickerCreate.handle(guild, sticker);
24
+ }
25
+ }
26
+
27
+ for (const sticker of deletions.values()) {
28
+ // Sticker deleted
29
+ this.client.actions.GuildStickerDelete.handle(sticker);
30
+ }
31
+ }
32
+ }
33
+
34
+ module.exports = GuildStickersUpdateAction;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class GuildUpdateAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+
10
+ const guild = client.guilds.cache.get(data.id);
11
+ if (guild) {
12
+ const old = guild._update(data);
13
+ /**
14
+ * Emitted whenever a guild is updated - e.g. name change.
15
+ * @event Client#guildUpdate
16
+ * @param {Guild} oldGuild The guild before the update
17
+ * @param {Guild} newGuild The guild after the update
18
+ */
19
+ client.emit(Events.GuildUpdate, old, guild);
20
+ return {
21
+ old,
22
+ updated: guild,
23
+ };
24
+ }
25
+
26
+ return {
27
+ old: null,
28
+ updated: null,
29
+ };
30
+ }
31
+ }
32
+
33
+ module.exports = GuildUpdateAction;
@@ -0,0 +1,101 @@
1
+ 'use strict';
2
+
3
+ const { InteractionType, ComponentType, ApplicationCommandType } = require('discord-api-types/v10');
4
+ const Action = require('./Action');
5
+ const AutocompleteInteraction = require('../../structures/AutocompleteInteraction');
6
+ const ButtonInteraction = require('../../structures/ButtonInteraction');
7
+ const ChannelSelectMenuInteraction = require('../../structures/ChannelSelectMenuInteraction');
8
+ const ChatInputCommandInteraction = require('../../structures/ChatInputCommandInteraction');
9
+ const MentionableSelectMenuInteraction = require('../../structures/MentionableSelectMenuInteraction');
10
+ const MessageContextMenuCommandInteraction = require('../../structures/MessageContextMenuCommandInteraction');
11
+ const ModalSubmitInteraction = require('../../structures/ModalSubmitInteraction');
12
+ const RoleSelectMenuInteraction = require('../../structures/RoleSelectMenuInteraction');
13
+ const StringSelectMenuInteraction = require('../../structures/StringSelectMenuInteraction');
14
+ const UserContextMenuCommandInteraction = require('../../structures/UserContextMenuCommandInteraction');
15
+ const UserSelectMenuInteraction = require('../../structures/UserSelectMenuInteraction');
16
+ const Events = require('../../util/Events');
17
+
18
+ class InteractionCreateAction extends Action {
19
+ handle(data) {
20
+ const client = this.client;
21
+
22
+ // Resolve and cache partial channels for Interaction#channel getter
23
+ const channel = data.channel && this.getChannel(data.channel);
24
+
25
+ // Do not emit this for interactions that cache messages that are non-text-based.
26
+ let InteractionClass;
27
+
28
+ switch (data.type) {
29
+ case InteractionType.ApplicationCommand:
30
+ switch (data.data.type) {
31
+ case ApplicationCommandType.ChatInput:
32
+ InteractionClass = ChatInputCommandInteraction;
33
+ break;
34
+ case ApplicationCommandType.User:
35
+ InteractionClass = UserContextMenuCommandInteraction;
36
+ break;
37
+ case ApplicationCommandType.Message:
38
+ if (channel && !channel.isTextBased()) return;
39
+ InteractionClass = MessageContextMenuCommandInteraction;
40
+ break;
41
+ default:
42
+ client.emit(
43
+ Events.Debug,
44
+ `[INTERACTION] Received application command interaction with unknown type: ${data.data.type}`,
45
+ );
46
+ return;
47
+ }
48
+ break;
49
+ case InteractionType.MessageComponent:
50
+ if (channel && !channel.isTextBased()) return;
51
+
52
+ switch (data.data.component_type) {
53
+ case ComponentType.Button:
54
+ InteractionClass = ButtonInteraction;
55
+ break;
56
+ case ComponentType.StringSelect:
57
+ InteractionClass = StringSelectMenuInteraction;
58
+ break;
59
+ case ComponentType.UserSelect:
60
+ InteractionClass = UserSelectMenuInteraction;
61
+ break;
62
+ case ComponentType.RoleSelect:
63
+ InteractionClass = RoleSelectMenuInteraction;
64
+ break;
65
+ case ComponentType.MentionableSelect:
66
+ InteractionClass = MentionableSelectMenuInteraction;
67
+ break;
68
+ case ComponentType.ChannelSelect:
69
+ InteractionClass = ChannelSelectMenuInteraction;
70
+ break;
71
+ default:
72
+ client.emit(
73
+ Events.Debug,
74
+ `[INTERACTION] Received component interaction with unknown type: ${data.data.component_type}`,
75
+ );
76
+ return;
77
+ }
78
+ break;
79
+ case InteractionType.ApplicationCommandAutocomplete:
80
+ InteractionClass = AutocompleteInteraction;
81
+ break;
82
+ case InteractionType.ModalSubmit:
83
+ InteractionClass = ModalSubmitInteraction;
84
+ break;
85
+ default:
86
+ client.emit(Events.Debug, `[INTERACTION] Received interaction with unknown type: ${data.type}`);
87
+ return;
88
+ }
89
+
90
+ const interaction = new InteractionClass(client, data);
91
+
92
+ /**
93
+ * Emitted when an interaction is created.
94
+ * @event Client#interactionCreate
95
+ * @param {BaseInteraction} interaction The interaction which was created
96
+ */
97
+ client.emit(Events.InteractionCreate, interaction);
98
+ }
99
+ }
100
+
101
+ module.exports = InteractionCreateAction;
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Events = require('../../util/Events');
5
+
6
+ class InviteCreateAction extends Action {
7
+ handle(data) {
8
+ const client = this.client;
9
+ const channel = client.channels.cache.get(data.channel_id);
10
+ const guild = client.guilds.cache.get(data.guild_id);
11
+ if (!channel) return false;
12
+
13
+ const inviteData = Object.assign(data, { channel, guild });
14
+ const invite = guild.invites._add(inviteData);
15
+
16
+ /**
17
+ * Emitted when an invite is created.
18
+ * <info>This event requires either the {@link PermissionFlagsBits.ManageGuild} permission or the
19
+ * {@link PermissionFlagsBits.ManageChannels} permission for the channel.</info>
20
+ * @event Client#inviteCreate
21
+ * @param {Invite} invite The invite that was created
22
+ */
23
+ client.emit(Events.InviteCreate, invite);
24
+ return { invite };
25
+ }
26
+ }
27
+
28
+ module.exports = InviteCreateAction;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ const Action = require('./Action');
4
+ const Invite = require('../../structures/Invite');
5
+ const Events = require('../../util/Events');
6
+
7
+ class InviteDeleteAction extends Action {
8
+ handle(data) {
9
+ const client = this.client;
10
+ const channel = client.channels.cache.get(data.channel_id);
11
+ const guild = client.guilds.cache.get(data.guild_id);
12
+ if (!channel) return false;
13
+
14
+ const inviteData = Object.assign(data, { channel, guild });
15
+ const invite = new Invite(client, inviteData);
16
+ guild.invites.cache.delete(invite.code);
17
+
18
+ /**
19
+ * Emitted when an invite is deleted.
20
+ * <info>This event requires either the {@link PermissionFlagsBits.ManageGuild} permission or the
21
+ * {@link PermissionFlagsBits.ManageChannels} permission for the channel.</info>
22
+ * @event Client#inviteDelete
23
+ * @param {Invite} invite The invite that was deleted
24
+ */
25
+ client.emit(Events.InviteDelete, invite);
26
+ return { invite };
27
+ }
28
+ }
29
+
30
+ module.exports = InviteDeleteAction;