diff --git a/src/client/websocket/packets/handlers/UserGuildSettingsUpdate.js b/src/client/websocket/packets/handlers/UserGuildSettingsUpdate.js index 1470a3c84..5a8ff9fe2 100644 --- a/src/client/websocket/packets/handlers/UserGuildSettingsUpdate.js +++ b/src/client/websocket/packets/handlers/UserGuildSettingsUpdate.js @@ -1,10 +1,13 @@ const AbstractHandler = require('./AbstractHandler'); const Constants = require('../../../../util/Constants'); +const ClientUserGuildSettings = require('../../../../structures/ClientUserGuildSettings'); class UserGuildSettingsUpdateHandler extends AbstractHandler { handle(packet) { const client = this.packetManager.client; - client.user.guildSettings.get(packet.d.guild_id).patch(packet.d); + const settings = client.user.guildSettings.get(packet.d.guild_id); + if (settings) settings.patch(packet.d); + else client.user.guildSettings.set(packet.d.guild_id, new ClientUserGuildSettings(this.client, packet.d)); client.emit(Constants.Events.USER_GUILD_SETTINGS_UPDATE, client.user.guildSettings.get(packet.d.guild_id)); } } diff --git a/src/structures/ClientUser.js b/src/structures/ClientUser.js index 231d8573b..724d4b819 100644 --- a/src/structures/ClientUser.js +++ b/src/structures/ClientUser.js @@ -84,7 +84,7 @@ class ClientUser extends User { this.guildSettings = new Collection(); if (data.user_guild_settings) { for (const settings of data.user_guild_settings) { - this.guildSettings.set(settings.guild_id, new ClientUserGuildSettings(settings, this.client)); + this.guildSettings.set(settings.guild_id, new ClientUserGuildSettings(this.client, settings)); } } } diff --git a/src/structures/ClientUserGuildSettings.js b/src/structures/ClientUserGuildSettings.js index 8034032e2..a3968138a 100644 --- a/src/structures/ClientUserGuildSettings.js +++ b/src/structures/ClientUserGuildSettings.js @@ -6,7 +6,7 @@ const ClientUserChannelOverride = require('./ClientUserChannelOverride'); * A wrapper around the ClientUser's guild settings. */ class ClientUserGuildSettings { - constructor(data, client) { + constructor(client, data) { /** * The client that created the instance of the ClientUserGuildSettings * @name ClientUserGuildSettings#client @@ -33,8 +33,9 @@ class ClientUserGuildSettings { if (!data.hasOwnProperty(key)) continue; if (key === 'channel_overrides') { for (const channel of data[key]) { - this.channelOverrides.set(channel.channel_id, - new ClientUserChannelOverride(channel)); + const override = this.channelOverrides.get(channel.channel_id); + if (override) override.patch(channel); + else this.channelOverrides.set(channel.channel_id, new ClientUserChannelOverride(channel)); } } else if (typeof value === 'function') { this[value.name] = value(data[key]);