Пример #1
0
 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;
     }
 }