From c6e8fccbf07a2ba2ac80d7e13f967eaa07c881f8 Mon Sep 17 00:00:00 2001 From: Amish Shah Date: Sat, 17 Aug 2019 13:42:22 +0100 Subject: [PATCH] voice: fix #3418 (kicking bot from voice channel doesn't allow it to rejoin) --- src/client/actions/VoiceStateUpdate.js | 2 +- src/client/voice/ClientVoiceManager.js | 4 ++-- src/client/voice/VoiceConnection.js | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/client/actions/VoiceStateUpdate.js b/src/client/actions/VoiceStateUpdate.js index 045ca9319..14e1aa3f8 100644 --- a/src/client/actions/VoiceStateUpdate.js +++ b/src/client/actions/VoiceStateUpdate.js @@ -25,7 +25,7 @@ class VoiceStateUpdate extends Action { } // Emit event - if (member && member.user.id === client.user.id && data.channel_id) { + if (member && member.user.id === client.user.id) { client.emit('debug', `[VOICE] received voice state update: ${JSON.stringify(data)}`); client.voice.onVoiceStateUpdate(data); } diff --git a/src/client/voice/ClientVoiceManager.js b/src/client/voice/ClientVoiceManager.js index 2ca2b465a..784136934 100644 --- a/src/client/voice/ClientVoiceManager.js +++ b/src/client/voice/ClientVoiceManager.js @@ -1,7 +1,6 @@ 'use strict'; const Collection = require('../../util/Collection'); -const { VoiceStatus } = require('../../util/Constants'); const VoiceConnection = require('./VoiceConnection'); const VoiceBroadcast = require('./VoiceBroadcast'); const { Error } = require('../../errors'); @@ -52,8 +51,9 @@ class ClientVoiceManager { const connection = this.connections.get(guild_id); this.client.emit('debug', `[VOICE] connection? ${!!connection}, ${guild_id} ${session_id} ${channel_id}`); if (!connection) return; - if (!channel_id && connection.status !== VoiceStatus.DISCONNECTED) { + if (!channel_id) { connection._disconnect(); + this.connections.delete(guild_id); return; } connection.channel = this.client.channels.get(channel_id); diff --git a/src/client/voice/VoiceConnection.js b/src/client/voice/VoiceConnection.js index 67e79a3b1..b56177c64 100644 --- a/src/client/voice/VoiceConnection.js +++ b/src/client/voice/VoiceConnection.js @@ -388,6 +388,7 @@ class VoiceConnection extends EventEmitter { ws.removeAllListeners('ready'); ws.removeAllListeners('sessionDescription'); ws.removeAllListeners('speaking'); + ws.shutdown(); } if (udp) udp.removeAllListeners('error');