From dc939c48ee55ba0c8a73565cca551ff85d684d6b Mon Sep 17 00:00:00 2001 From: abalabahaha Date: Thu, 28 Jul 2016 04:36:04 +0900 Subject: [PATCH] Fix using deleteChannel on private channels --- lib/Client/InternalClient.js | 8 ++++++-- lib/Structures/Server.js | 2 +- src/Client/InternalClient.js | 22 +++++++++++++--------- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 7a67ef7d4..9df109d80 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -1035,8 +1035,12 @@ var InternalClient = (function () { return this.resolver.resolveChannel(_channel).then(function (channel) { return _this24.apiRequest("del", _Constants.Endpoints.CHANNEL(channel.id), true).then(function () { - channel.server.channels.remove(channel); - _this24.channels.remove(channel); + if (channel.server) { + channel.server.channels.remove(channel); + _this24.channels.remove(channel); + } else { + _this24.private_channels.remove(channel); + } }); }); }; diff --git a/lib/Structures/Server.js b/lib/Structures/Server.js index 7cd918edf..ff341b221 100644 --- a/lib/Structures/Server.js +++ b/lib/Structures/Server.js @@ -227,7 +227,7 @@ var Server = (function (_Equality) { channel.members.add(user); user.voiceChannel = channel; - if (oldChannel.id) { + if (oldChannel.id && channel.id !== oldChannel.id) { this.client.emit("voiceLeave", oldChannel, user); this.client.emit("voiceSwitch", oldChannel, channel, user); } diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 5c5685091..a111b3eb4 100755 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -908,8 +908,12 @@ export default class InternalClient { .then(channel => this.apiRequest("del", Endpoints.CHANNEL(channel.id), true) .then(() => { - channel.server.channels.remove(channel); - this.channels.remove(channel); + if(channel.server) { + channel.server.channels.remove(channel); + this.channels.remove(channel); + } else { + this.private_channels.remove(channel); + } }) ); } @@ -1838,13 +1842,13 @@ export default class InternalClient { var server = self.servers.get("id", data.guild_id); if (server) { - var chan = null; - if (data.type === "text") { - chan = self.channels.add(new TextChannel(data, client, server)); - } else { - chan = self.channels.add(new VoiceChannel(data, client, server)); - } - client.emit("channelCreated", server.channels.add(chan)); + var chan = null; + if (data.type === "text") { + chan = self.channels.add(new TextChannel(data, client, server)); + } else { + chan = self.channels.add(new VoiceChannel(data, client, server)); + } + client.emit("channelCreated", server.channels.add(chan)); } else if (data.is_private) { client.emit("channelCreated", self.private_channels.add(new PMChannel(data, client))); } else {