diff --git a/gateway/shard/connect.ts b/gateway/shard/connect.ts index 6bb729f94..a5bdf81a6 100644 --- a/gateway/shard/connect.ts +++ b/gateway/shard/connect.ts @@ -8,12 +8,14 @@ export async function connect(shard: Shard): Promise { } shard.events.connecting?.(shard); - let url = shard.gatewayConfig.url; + let url = new URL(shard.gatewayConfig.url); // If not connecting to a proxy but directly to discord need to handle resuming - if (url === "wss://gateway.discord.gg") { - url = `${ - shard.state === ShardState.Resuming ? shard.resumeGatewayUrl : shard.gatewayConfig.url - }/?v=${shard.gatewayConfig.version}&encoding=json`; + if (url.origin === "wss://gateway.discord.gg") { + if (shard.state === ShardState.Resuming) { + url = new URL(shard.resumeGatewayUrl); + } + url.searchParams.set("v", shard.gatewayConfig.version.toString()); + url.searchParams.set("encoding", "json"); } const socket = new WebSocket(url);