protected override void OnOpen() { if (!Handler.findToken(Context.CookieCollection[AuthToken.SessionToken].Value, out var bUser, out _)) { Context.WebSocket.Close(CloseStatusCode.Normal, "Authentication failed."); return; } BotUser = bUser; Service ??= Program.Services.GetRequiredService <GroupMuteService>(); foreach (var guild in Program.Client.Guilds) { foreach (var voice in guild.VoiceChannels) { foreach (var usr in voice.Users) { if (usr.Id == BotUser.Id) { User = usr; VC = voice; break; } } if (VC != null) { break; } } if (VC != null) { break; } } if (VC == null) { Context.WebSocket.Close(CloseStatusCode.Normal, "You must join a voice channel first."); return; } if (Service.Games.TryGetValue(VC, out var game)) { game.Do(() => { game.Listeners.Add(this); game.Broadcast(false); }); Game = game; } else { var g = new GroupGame(VC); g.Listeners.Add(this); Service.Games[VC] = g; g.Broadcast(true); Game = g; } }