Fix disconnect when trying to move to another voice channel.

Not overly proud of this implementation but this allows the library
to differentiate between a 4014 that means "move to another channel" or
"move nowhere". Sometimes the VOICE_STATE_UPDATE comes before the
actual websocket disconnect so special care had to be taken in that
case.

Fix #5904
This commit is contained in:
Rapptz
2020-10-17 21:56:56 -04:00
parent b91ddc6f4e
commit 21ed9f61d2
2 changed files with 60 additions and 22 deletions

View File

@ -719,6 +719,7 @@ class DiscordVoiceWebSocket:
self.loop = loop
self._keep_alive = None
self._close_code = None
self.secret_key = None
async def send_as_json(self, data):
log.debug('Sending voice websocket frame: %s.', data)
@ -872,7 +873,7 @@ class DiscordVoiceWebSocket:
async def load_secret_key(self, data):
log.info('received secret key for voice connection')
self._connection.secret_key = data.get('secret_key')
self.secret_key = self._connection.secret_key = data.get('secret_key')
await self.speak()
await self.speak(False)