diff --git a/litecord/gateway/websocket.py b/litecord/gateway/websocket.py index d17cf27..c2977b7 100644 --- a/litecord/gateway/websocket.py +++ b/litecord/gateway/websocket.py @@ -670,7 +670,7 @@ class GatewayWebsocket: voice_state = await self.ext.voice.get_state(voice_key) if voice_state is None: - return await self.ext.voice.create_state(voice_key) + return await self.ext.voice.create_state(voice_key, data) same_guild = guild_id == voice_state.guild_id same_channel = channel_id == voice_state.channel_id diff --git a/litecord/voice/lvsp_manager.py b/litecord/voice/lvsp_manager.py index 7436941..78484e0 100644 --- a/litecord/voice/lvsp_manager.py +++ b/litecord/voice/lvsp_manager.py @@ -119,7 +119,7 @@ class LVSPManager: return conn.health - async def get_guild_server(self, guild_id: int) -> str: + async def get_guild_server(self, guild_id: int) -> Optional[str]: """Get a voice server for the given guild, assigns one if there isn't any""" @@ -131,10 +131,13 @@ class LVSPManager: # sort connected servers by health sorted_servers = sorted( self.servers[region], - self.get_health, + key=self.get_health ) - hostname = sorted_servers[0] + try: + hostname = sorted_servers[0] + except IndexError: + return None return hostname diff --git a/litecord/voice/manager.py b/litecord/voice/manager.py index 063ebce..10d6ee1 100644 --- a/litecord/voice/manager.py +++ b/litecord/voice/manager.py @@ -157,6 +157,10 @@ class VoiceManager: async def _lvsp_info_guild(self, guild_id, info_type, info_data): hostname = await self.lvsp.get_guild_server(guild_id) + if hostname is None: + log.error('no voice server for guild id {}', guild_id) + return + conn = self.lvsp.get_conn(hostname) await conn.send_info(info_type, info_data)