Skip to content

Commit 2264be3

Browse files
committed
fix: improve reliability of initial voice connection
1 parent 3923442 commit 2264be3

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

interactions/models/internal/active_voice_state.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,15 +139,22 @@ async def connect(self, timeout: int = 5) -> None:
139139
"""
140140
if self.connected:
141141
raise VoiceAlreadyConnected
142+
143+
tasks = [
144+
asyncio.create_task(
145+
self._client.wait_for("raw_voice_state_update", self._guild_predicate, timeout=timeout)
146+
),
147+
asyncio.create_task(
148+
self._client.wait_for("raw_voice_server_update", self._guild_predicate, timeout=timeout)
149+
),
150+
]
151+
142152
await self.gateway.voice_state_update(self._guild_id, self._channel_id, self.self_mute, self.self_deaf)
143153

144154
self.logger.debug("Waiting for voice connection data...")
145155

146156
try:
147-
self._voice_state, self._voice_server = await asyncio.gather(
148-
self._client.wait_for("raw_voice_state_update", self._guild_predicate, timeout=timeout),
149-
self._client.wait_for("raw_voice_server_update", self._guild_predicate, timeout=timeout),
150-
)
157+
self._voice_state, self._voice_server = await asyncio.gather(*tasks, return_exceptions=True) # noqa
151158
except asyncio.TimeoutError:
152159
raise VoiceConnectionTimeout from None
153160

0 commit comments

Comments
 (0)