@ovencord/discord.js 14.16.7 → 14.16.9

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 (76) hide show
  1. package/package.json +1 -1
  2. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.ts +19 -0
  3. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.ts +17 -0
  4. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.ts +18 -0
  5. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.ts +21 -0
  6. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.ts +20 -0
  7. package/src/client/websocket/handlers/CHANNEL_CREATE.ts +4 -0
  8. package/src/client/websocket/handlers/CHANNEL_DELETE.ts +4 -0
  9. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.ts +22 -0
  10. package/src/client/websocket/handlers/CHANNEL_UPDATE.ts +16 -0
  11. package/src/client/websocket/handlers/ENTITLEMENT_CREATE.ts +14 -0
  12. package/src/client/websocket/handlers/ENTITLEMENT_DELETE.ts +18 -0
  13. package/src/client/websocket/handlers/ENTITLEMENT_UPDATE.ts +16 -0
  14. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.ts +19 -0
  15. package/src/client/websocket/handlers/GUILD_BAN_ADD.ts +15 -0
  16. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.ts +20 -0
  17. package/src/client/websocket/handlers/GUILD_CREATE.ts +34 -0
  18. package/src/client/websocket/handlers/GUILD_DELETE.ts +36 -0
  19. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.ts +4 -0
  20. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.ts +15 -0
  21. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.ts +40 -0
  22. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.ts +17 -0
  23. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.ts +4 -0
  24. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.ts +4 -0
  25. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.ts +4 -0
  26. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.ts +4 -0
  27. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.ts +21 -0
  28. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.ts +17 -0
  29. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.ts +4 -0
  30. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.ts +19 -0
  31. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.ts +4 -0
  32. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.ts +4 -0
  33. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUNDS_UPDATE.ts +24 -0
  34. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_CREATE.ts +18 -0
  35. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_DELETE.ts +4 -0
  36. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_UPDATE.ts +20 -0
  37. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.ts +4 -0
  38. package/src/client/websocket/handlers/GUILD_UPDATE.ts +4 -0
  39. package/src/client/websocket/handlers/INTERACTION_CREATE.ts +4 -0
  40. package/src/client/websocket/handlers/INVITE_CREATE.ts +20 -0
  41. package/src/client/websocket/handlers/INVITE_DELETE.ts +23 -0
  42. package/src/client/websocket/handlers/MESSAGE_CREATE.ts +4 -0
  43. package/src/client/websocket/handlers/MESSAGE_DELETE.ts +4 -0
  44. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.ts +4 -0
  45. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.ts +4 -0
  46. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.ts +4 -0
  47. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.ts +4 -0
  48. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.ts +4 -0
  49. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.ts +4 -0
  50. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.ts +4 -0
  51. package/src/client/websocket/handlers/MESSAGE_UPDATE.ts +16 -0
  52. package/src/client/websocket/handlers/PRESENCE_UPDATE.ts +42 -0
  53. package/src/client/websocket/handlers/RATE_LIMITED.ts +23 -0
  54. package/src/client/websocket/handlers/READY.ts +30 -0
  55. package/src/client/websocket/handlers/SOUNDBOARD_SOUNDS.ts +24 -0
  56. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.ts +4 -0
  57. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.ts +4 -0
  58. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.ts +4 -0
  59. package/src/client/websocket/handlers/SUBSCRIPTION_CREATE.ts +14 -0
  60. package/src/client/websocket/handlers/SUBSCRIPTION_DELETE.ts +16 -0
  61. package/src/client/websocket/handlers/SUBSCRIPTION_UPDATE.ts +16 -0
  62. package/src/client/websocket/handlers/THREAD_CREATE.ts +4 -0
  63. package/src/client/websocket/handlers/THREAD_DELETE.ts +17 -0
  64. package/src/client/websocket/handlers/THREAD_LIST_SYNC.ts +51 -0
  65. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.ts +4 -0
  66. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.ts +25 -0
  67. package/src/client/websocket/handlers/THREAD_UPDATE.ts +16 -0
  68. package/src/client/websocket/handlers/TYPING_START.ts +4 -0
  69. package/src/client/websocket/handlers/USER_UPDATE.ts +4 -0
  70. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.ts +16 -0
  71. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.ts +5 -0
  72. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.ts +37 -0
  73. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.ts +16 -0
  74. package/src/client/websocket/handlers/index.ts +75 -76
  75. package/src/index.ts +1 -1
  76. package/src/util/Constants.ts +2 -1
@@ -0,0 +1,23 @@
1
+
2
+ import { GuildInvite } from '../../../structures/GuildInvite.js';
3
+ import { Events } from '../../../util/Events.js';
4
+
5
+ export default (client, { d: data }) => {
6
+ const channel = client.channels.cache.get(data.channel_id);
7
+ const guild = client.guilds.cache.get(data.guild_id);
8
+ if (!channel) return;
9
+
10
+ const inviteData = Object.assign(data, { channel, guild });
11
+ const invite = new GuildInvite(client, inviteData);
12
+
13
+ guild.invites.cache.delete(invite.code);
14
+
15
+ /**
16
+ * Emitted when an invite is deleted.
17
+ * <info>This event requires the {@link PermissionFlagsBits.ManageChannels} permission for the channel.</info>
18
+ *
19
+ * @event Client#inviteDelete
20
+ * @param {GuildInvite} invite The invite that was deleted
21
+ */
22
+ client.emit(Events.InviteDelete, invite);
23
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.MessageCreate.handle(packet.d);
4
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.MessageDelete.handle(packet.d);
4
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.MessageDeleteBulk.handle(packet.d);
4
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.MessagePollVoteAdd.handle(packet.d);
4
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.MessagePollVoteRemove.handle(packet.d);
4
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.MessageReactionAdd.handle(packet.d);
4
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.MessageReactionRemove.handle(packet.d);
4
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.MessageReactionRemoveAll.handle(packet.d);
4
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.MessageReactionRemoveEmoji.handle(packet.d);
4
+ };
@@ -0,0 +1,16 @@
1
+
2
+ import { Events } from '../../../util/Events.js';
3
+
4
+ export default (client, packet) => {
5
+ const { old, updated } = client.actions.MessageUpdate.handle(packet.d);
6
+ if (old && updated) {
7
+ /**
8
+ * Emitted whenever a message is updated - e.g. embed or content change.
9
+ *
10
+ * @event Client#messageUpdate
11
+ * @param {Message} oldMessage The message before the update
12
+ * @param {Message} newMessage The message after the update
13
+ */
14
+ client.emit(Events.MessageUpdate, old, updated);
15
+ }
16
+ };
@@ -0,0 +1,42 @@
1
+
2
+ import { Events } from '../../../util/Events.js';
3
+ import { Partials } from '../../../util/Partials.js';
4
+
5
+ export default (client, { d: data }) => {
6
+ let user = client.users.cache.get(data.user.id);
7
+ if (!user && ('username' in data.user || client.options.partials.includes(Partials.User))) {
8
+ user = client.users._add(data.user);
9
+ }
10
+
11
+ if (!user) return;
12
+
13
+ if (data.user.username && !user._equals(data.user)) client.actions.UserUpdate.handle(data.user);
14
+
15
+ const guild = client.guilds.cache.get(data.guild_id);
16
+ if (!guild) return;
17
+
18
+ const oldPresence = guild.presences.cache.get(user.id)?._clone() ?? null;
19
+
20
+ let member = guild.members.cache.get(user.id);
21
+ if (!member && data.status !== 'offline') {
22
+ member = guild.members._add({
23
+ user,
24
+ deaf: false,
25
+ mute: false,
26
+ });
27
+
28
+ client.emit(Events.GuildMemberAvailable, member);
29
+ }
30
+
31
+ const newPresence = guild.presences._add(Object.assign(data, { guild }));
32
+ if (client.listenerCount(Events.PresenceUpdate) > 0 && !newPresence.equals(oldPresence)) {
33
+ /**
34
+ * Emitted whenever a guild member's presence (e.g. status, activity) is changed.
35
+ *
36
+ * @event Client#presenceUpdate
37
+ * @param {?Presence} oldPresence The presence before the update, if one at all
38
+ * @param {Presence} newPresence The presence after the update
39
+ */
40
+ client.emit(Events.PresenceUpdate, oldPresence, newPresence);
41
+ }
42
+ };
@@ -0,0 +1,23 @@
1
+
2
+ import process from 'node:process';
3
+ import { GatewayOpcodes } from 'discord-api-types/v10';
4
+
5
+ const emittedFor = new Set();
6
+
7
+ export default (client, { d: data }) => {
8
+ switch (data.opcode) {
9
+ case GatewayOpcodes.RequestGuildMembers: {
10
+ break;
11
+ }
12
+
13
+ default: {
14
+ if (!emittedFor.has(data.opcode)) {
15
+ process.emitWarning(
16
+ `Hit a gateway rate limit on opcode ${data.opcode} (${GatewayOpcodes[data.opcode]}). If the discord.js version you're using is up-to-date, please open an issue on GitHub.`,
17
+ );
18
+
19
+ emittedFor.add(data.opcode);
20
+ }
21
+ }
22
+ }
23
+ };
@@ -0,0 +1,30 @@
1
+ import { ClientUser } from '../../../structures/ClientUser.js';
2
+
3
+ import { ClientApplication } from '../../../structures/ClientApplication.js';
4
+ import { Status } from '../../../util/Status.js';
5
+
6
+
7
+
8
+ export default (client, { d: data }, shardId) => {
9
+ if (client.user) {
10
+ client.user._patch(data.user);
11
+ } else {
12
+
13
+ client.user = new ClientUser(client, data.user);
14
+ client.users.cache.set(client.user.id, client.user);
15
+ }
16
+
17
+ for (const guild of data.guilds) {
18
+ client.expectedGuilds.add(guild.id);
19
+ guild.shardId = shardId;
20
+ client.guilds._add(guild);
21
+ }
22
+
23
+ if (client.application) {
24
+ client.application._patch(data.application);
25
+ } else {
26
+ client.application = new ClientApplication(client, data.application);
27
+ }
28
+
29
+ client.status = Status.WaitingForGuilds;
30
+ };
@@ -0,0 +1,24 @@
1
+
2
+ import { Collection } from '@ovencord/collection';
3
+ import { Events } from '../../../util/Events.js';
4
+
5
+ export default (client, { d: data }) => {
6
+ const guild = client.guilds.cache.get(data.guild_id);
7
+
8
+ if (!guild) return;
9
+
10
+ const soundboardSounds = new Collection();
11
+
12
+ for (const soundboardSound of data.soundboard_sounds) {
13
+ soundboardSounds.set(soundboardSound.sound_id, guild.soundboardSounds._add(soundboardSound));
14
+ }
15
+
16
+ /**
17
+ * Emitted whenever soundboard sounds are received (all soundboard sounds come from the same guild).
18
+ *
19
+ * @event Client#soundboardSounds
20
+ * @param {Collection<Snowflake, SoundboardSound>} soundboardSounds The sounds received
21
+ * @param {Guild} guild The guild that the soundboard sounds are from
22
+ */
23
+ client.emit(Events.SoundboardSounds, soundboardSounds, guild);
24
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.StageInstanceCreate.handle(packet.d);
4
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.StageInstanceDelete.handle(packet.d);
4
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.StageInstanceUpdate.handle(packet.d);
4
+ };
@@ -0,0 +1,14 @@
1
+
2
+ import { Events } from '../../../util/Events.js';
3
+
4
+ export default (client, { d: data }) => {
5
+ const subscription = client.application.subscriptions._add(data);
6
+
7
+ /**
8
+ * Emitted whenever a subscription is created.
9
+ *
10
+ * @event Client#subscriptionCreate
11
+ * @param {Subscription} subscription The subscription that was created
12
+ */
13
+ client.emit(Events.SubscriptionCreate, subscription);
14
+ };
@@ -0,0 +1,16 @@
1
+
2
+ import { Events } from '../../../util/Events.js';
3
+
4
+ export default (client, { d: data }) => {
5
+ const subscription = client.application.subscriptions._add(data, false);
6
+
7
+ client.application.subscriptions.cache.delete(subscription.id);
8
+
9
+ /**
10
+ * Emitted whenever a subscription is deleted.
11
+ *
12
+ * @event Client#subscriptionDelete
13
+ * @param {Subscription} subscription The subscription that was deleted
14
+ */
15
+ client.emit(Events.SubscriptionDelete, subscription);
16
+ };
@@ -0,0 +1,16 @@
1
+
2
+ import { Events } from '../../../util/Events.js';
3
+
4
+ export default (client, { d: data }) => {
5
+ const oldSubscription = client.application.subscriptions.cache.get(data.id)?._clone() ?? null;
6
+ const newSubscription = client.application.subscriptions._add(data);
7
+
8
+ /**
9
+ * Emitted whenever a subscription is updated - i.e. when a user's subscription renews.
10
+ *
11
+ * @event Client#subscriptionUpdate
12
+ * @param {?Subscription} oldSubscription The subscription before the update
13
+ * @param {Subscription} newSubscription The subscription after the update
14
+ */
15
+ client.emit(Events.SubscriptionUpdate, oldSubscription, newSubscription);
16
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.ThreadCreate.handle(packet.d);
4
+ };
@@ -0,0 +1,17 @@
1
+
2
+ import { Events } from '../../../util/Events.js';
3
+
4
+ export default (client, { d: data }) => {
5
+ const thread = client.channels.cache.get(data.id);
6
+ if (!thread) return;
7
+
8
+ client.channels._remove(thread.id);
9
+
10
+ /**
11
+ * Emitted whenever a thread is deleted.
12
+ *
13
+ * @event Client#threadDelete
14
+ * @param {ThreadChannel} thread The thread that was deleted
15
+ */
16
+ client.emit(Events.ThreadDelete, thread);
17
+ };
@@ -0,0 +1,51 @@
1
+
2
+ import { Collection } from '@ovencord/collection';
3
+ import { Events } from '../../../util/Events.js';
4
+
5
+ export default (client, { d: data }) => {
6
+ const guild = client.guilds.cache.get(data.guild_id);
7
+ if (!guild) return;
8
+
9
+ if (data.channel_ids) {
10
+ for (const id of data.channel_ids) {
11
+ const channel = client.channels.cache.get(id);
12
+ if (channel) removeStaleThreads(client, channel);
13
+ }
14
+ } else {
15
+ for (const channel of guild.channels.cache.values()) {
16
+ removeStaleThreads(client, channel);
17
+ }
18
+ }
19
+
20
+ const syncedThreads = data.threads.reduce((coll, rawThread) => {
21
+ const thread = client.channels._add(rawThread);
22
+ return coll.set(thread.id, thread);
23
+ }, new Collection());
24
+
25
+ for (const rawMember of Object.values(data.members)) {
26
+ // Discord sends the thread id as id in this object
27
+ const thread = client.channels.cache.get(rawMember.id);
28
+ if (thread) {
29
+ thread.members._add(rawMember);
30
+ }
31
+ }
32
+
33
+ /**
34
+ * Emitted whenever the client user gains access to a text or announcement channel that contains threads
35
+ *
36
+ * @event Client#threadListSync
37
+ * @param {Collection<Snowflake, ThreadChannel>} threads The threads that were synced
38
+ * @param {Guild} guild The guild that the threads were synced in
39
+ */
40
+ client.emit(Events.ThreadListSync, syncedThreads, guild);
41
+ };
42
+
43
+ function removeStaleThreads(client, channel) {
44
+ if (!channel.threads) return;
45
+
46
+ for (const thread of channel.threads.cache.values()) {
47
+ if (!thread.archived) {
48
+ client.channels._remove(thread.id);
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.ThreadMembersUpdate.handle(packet.d);
4
+ };
@@ -0,0 +1,25 @@
1
+
2
+ import { Events } from '../../../util/Events.js';
3
+
4
+ export default (client, { d: data }) => {
5
+ // Discord sends the thread id as id in this object
6
+ const thread = client.channels.cache.get(data.id);
7
+ if (!thread) return;
8
+
9
+ const member = thread.members.cache.get(data.user_id);
10
+ if (!member) {
11
+ thread.members._add(data);
12
+ return;
13
+ }
14
+
15
+ const old = member._update(data);
16
+
17
+ /**
18
+ * Emitted whenever the client user's thread member is updated.
19
+ *
20
+ * @event Client#threadMemberUpdate
21
+ * @param {ThreadMember} oldMember The member before the update
22
+ * @param {ThreadMember} newMember The member after the update
23
+ */
24
+ client.emit(Events.ThreadMemberUpdate, old, member);
25
+ };
@@ -0,0 +1,16 @@
1
+
2
+ import { Events } from '../../../util/Events.js';
3
+
4
+ export default (client, packet) => {
5
+ const { old, updated } = client.actions.ChannelUpdate.handle(packet.d);
6
+ if (old && updated) {
7
+ /**
8
+ * Emitted whenever a thread is updated - e.g. name change, archive state change, locked state change.
9
+ *
10
+ * @event Client#threadUpdate
11
+ * @param {ThreadChannel} oldThread The thread before the update
12
+ * @param {ThreadChannel} newThread The thread after the update
13
+ */
14
+ client.emit(Events.ThreadUpdate, old, updated);
15
+ }
16
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.TypingStart.handle(packet.d);
4
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export default (client, packet) => {
3
+ client.actions.UserUpdate.handle(packet.d);
4
+ };
@@ -0,0 +1,16 @@
1
+
2
+ import { VoiceChannelEffect } from '../../../structures/VoiceChannelEffect.js';
3
+ import { Events } from '../../../util/Events.js';
4
+
5
+ export default (client, { d: data }) => {
6
+ const guild = client.guilds.cache.get(data.guild_id);
7
+ if (!guild) return;
8
+
9
+ /**
10
+ * Emitted when someone sends an effect, such as an emoji reaction, in a voice channel the client is connected to.
11
+ *
12
+ * @event Client#voiceChannelEffectSend
13
+ * @param {VoiceChannelEffect} voiceChannelEffect The sent voice channel effect
14
+ */
15
+ client.emit(Events.VoiceChannelEffectSend, new VoiceChannelEffect(data, guild));
16
+ };
@@ -0,0 +1,5 @@
1
+
2
+ export default (client, packet) => {
3
+ client.emit('debug', `[VOICE] received voice server: ${JSON.stringify(packet)}`);
4
+ client.voice.onVoiceServer(packet.d);
5
+ };
@@ -0,0 +1,37 @@
1
+
2
+ import { VoiceState } from '../../../structures/VoiceState.js';
3
+ import { Events } from '../../../util/Events.js';
4
+
5
+ export default (client, { d: data }) => {
6
+ const guild = client.guilds.cache.get(data.guild_id);
7
+ if (!guild) return;
8
+
9
+ // Update the state
10
+ const oldState =
11
+ guild.voiceStates.cache.get(data.user_id)?._clone() ?? new VoiceState(guild, { user_id: data.user_id });
12
+
13
+ const newState = guild.voiceStates._add(data);
14
+
15
+ // Get the member
16
+ let member = guild.members.cache.get(data.user_id);
17
+ if (member && data.member) {
18
+ member._patch(data.member);
19
+ } else if (data.member?.user && data.member.joined_at) {
20
+ member = guild.members._add(data.member);
21
+ }
22
+
23
+ // Emit event
24
+ if (member?.user.id === client.user.id) {
25
+ client.emit('debug', `[VOICE] received voice state update: ${JSON.stringify(data)}`);
26
+ client.voice.onVoiceStateUpdate(data);
27
+ }
28
+
29
+ /**
30
+ * Emitted whenever a member changes voice state - e.g. joins/leaves a channel, mutes/unmutes.
31
+ *
32
+ * @event Client#voiceStateUpdate
33
+ * @param {VoiceState} oldState The voice state before the update
34
+ * @param {VoiceState} newState The voice state after the update
35
+ */
36
+ client.emit(Events.VoiceStateUpdate, oldState, newState);
37
+ };
@@ -0,0 +1,16 @@
1
+
2
+ import { Events } from '../../../util/Events.js';
3
+
4
+ export default (client, { d: data }) => {
5
+ const channel = client.channels.cache.get(data.channel_id);
6
+ if (!channel) return;
7
+
8
+ /**
9
+ * Emitted whenever a channel has its webhooks changed.
10
+ *
11
+ * @event Client#webhooksUpdate
12
+ * @param {TextChannel|AnnouncementChannel|VoiceChannel|StageChannel|ForumChannel|MediaChannel} channel
13
+ * The channel that had a webhook update
14
+ */
15
+ client.emit(Events.WebhooksUpdate, channel);
16
+ };