From 3345c77ce209513b9d86ba106a14701f9b6f532f Mon Sep 17 00:00:00 2001 From: Kyra Date: Tue, 28 Aug 2018 17:25:45 +0200 Subject: [PATCH] backport: `GUILD_INTEGRATIONS_UPDATE` event (#2794) * backport: Client#on{guildIntegrationsUpdate,webhookUpdate} misc: Update Constants.WSEvents and WSEventType backport: Add guildIntegrationsUpdate event handler * docs: Updated typings --- .../packets/WebSocketPacketManager.js | 1 + .../handlers/GuildIntegrationsUpdate.js | 19 +++++++++++++++++++ src/util/Constants.js | 3 +++ typings/index.d.ts | 3 +++ 4 files changed, 26 insertions(+) create mode 100644 src/client/websocket/packets/handlers/GuildIntegrationsUpdate.js diff --git a/src/client/websocket/packets/WebSocketPacketManager.js b/src/client/websocket/packets/WebSocketPacketManager.js index a73ffca8f..37be7371e 100644 --- a/src/client/websocket/packets/WebSocketPacketManager.js +++ b/src/client/websocket/packets/WebSocketPacketManager.js @@ -31,6 +31,7 @@ class WebSocketPacketManager { this.register(Constants.WSEvents.GUILD_ROLE_UPDATE, require('./handlers/GuildRoleUpdate')); this.register(Constants.WSEvents.GUILD_EMOJIS_UPDATE, require('./handlers/GuildEmojisUpdate')); this.register(Constants.WSEvents.GUILD_MEMBERS_CHUNK, require('./handlers/GuildMembersChunk')); + this.register(Constants.WSEvents.GUILD_INTEGRATIONS_UPDATE, require('./handlers/GuildIntegrationsUpdate')); this.register(Constants.WSEvents.CHANNEL_CREATE, require('./handlers/ChannelCreate')); this.register(Constants.WSEvents.CHANNEL_DELETE, require('./handlers/ChannelDelete')); this.register(Constants.WSEvents.CHANNEL_UPDATE, require('./handlers/ChannelUpdate')); diff --git a/src/client/websocket/packets/handlers/GuildIntegrationsUpdate.js b/src/client/websocket/packets/handlers/GuildIntegrationsUpdate.js new file mode 100644 index 000000000..5adfb5b0f --- /dev/null +++ b/src/client/websocket/packets/handlers/GuildIntegrationsUpdate.js @@ -0,0 +1,19 @@ +const AbstractHandler = require('./AbstractHandler'); +const { Events } = require('../../../../util/Constants'); + +class GuildIntegrationsHandler extends AbstractHandler { + handle(packet) { + const client = this.packetManager.client; + const data = packet.d; + const guild = client.guilds.get(data.guild_id); + if (guild) client.emit(Events.GUILD_INTEGRATIONS_UPDATE, guild); + } +} + +module.exports = GuildIntegrationsHandler; + +/** + * Emitted whenever a guild integration is updated + * @event Client#guildIntegrationsUpdate + * @param {Guild} guild The guild whose integrations were updated + */ diff --git a/src/util/Constants.js b/src/util/Constants.js index 89e706bfb..97dafca3c 100644 --- a/src/util/Constants.js +++ b/src/util/Constants.js @@ -319,6 +319,7 @@ exports.Events = { GUILD_MEMBER_AVAILABLE: 'guildMemberAvailable', GUILD_MEMBER_SPEAKING: 'guildMemberSpeaking', GUILD_MEMBERS_CHUNK: 'guildMembersChunk', + GUILD_INTEGRATIONS_UPDATE: 'guildIntegrationsUpdate', GUILD_ROLE_CREATE: 'roleCreate', GUILD_ROLE_DELETE: 'roleDelete', GUILD_ROLE_UPDATE: 'roleUpdate', @@ -390,6 +391,7 @@ exports.ActivityFlags = { * * GUILD_MEMBER_REMOVE * * GUILD_MEMBER_UPDATE * * GUILD_MEMBERS_CHUNK + * * GUILD_INTEGRATIONS_UPDATE * * GUILD_ROLE_CREATE * * GUILD_ROLE_DELETE * * GUILD_ROLE_UPDATE @@ -429,6 +431,7 @@ exports.WSEvents = { GUILD_MEMBER_REMOVE: 'GUILD_MEMBER_REMOVE', GUILD_MEMBER_UPDATE: 'GUILD_MEMBER_UPDATE', GUILD_MEMBERS_CHUNK: 'GUILD_MEMBERS_CHUNK', + GUILD_INTEGRATIONS_UPDATE: 'GUILD_INTEGRATIONS_UPDATE', GUILD_ROLE_CREATE: 'GUILD_ROLE_CREATE', GUILD_ROLE_DELETE: 'GUILD_ROLE_DELETE', GUILD_ROLE_UPDATE: 'GUILD_ROLE_UPDATE', diff --git a/typings/index.d.ts b/typings/index.d.ts index caf62c13d..65151e36b 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -130,6 +130,7 @@ declare module 'discord.js' { public on(event: 'guildMemberUpdate', listener: (oldMember: GuildMember, newMember: GuildMember) => void): this; public on(event: 'guildUnavailable', listener: (guild: Guild) => void): this; public on(event: 'guildUpdate', listener: (oldGuild: Guild, newGuild: Guild) => void): this; + public on(event: 'guildIntegrationsUpdate', listener: (guild: Guild) => void): this; public on(event: 'message', listener: (message: Message) => void): this; public on(event: 'messageDelete', listener: (message: Message) => void): this; public on(event: 'messageDeleteBulk', listener: (messages: Collection) => void): this; @@ -178,6 +179,7 @@ declare module 'discord.js' { public once(event: 'guildMemberUpdate', listener: (oldMember: GuildMember, newMember: GuildMember) => void): this; public once(event: 'guildUnavailable', listener: (guild: Guild) => void): this; public once(event: 'guildUpdate', listener: (oldGuild: Guild, newGuild: Guild) => void): this; + public once(event: 'guildIntegrationsUpdate', listener: (guild: Guild) => void): this; public once(event: 'message', listener: (message: Message) => void): this; public once(event: 'messageDelete', listener: (message: Message) => void): this; public once(event: 'messageDeleteBulk', listener: (messages: Collection) => void): this; @@ -2106,6 +2108,7 @@ declare module 'discord.js' { | 'GUILD_MEMBER_REMOVE' | 'GUILD_MEMBER_UPDATE' | 'GUILD_MEMBERS_CHUNK' + | 'GUILD_INTEGRATIONS_UPDATE' | 'GUILD_ROLE_CREATE' | 'GUILD_ROLE_DELETE' | 'GUILD_ROLE_UPDATE'