/// <summary> /// Выход из очереди на любую игру /// </summary> /// <param name="userId">UserId пользователя</param> /// <param name="messageId">MessageId сообщения, которое отправляется пользователю, когда он вступает в очередь на игру</param> public static void ExitTurn(string userId, int messageId) { var flag = false; for (var i = 0; i < TurnWaitPlayer.Length; i++) { var info = GameBotOnline.CheckIndex(userId, TurnWaitPlayer[i]); if (info[1] != -1) { TurnWaitPlayer[i][info[0]].Users.RemoveAt(info[1]); if (TurnWaitPlayer[i][info[0]].Users.Count == 0) { TurnWaitPlayer[i].RemoveAt(info[0]); } flag = true; break; } } if (flag) { Program.Bot.SendTextMessageAsync(userId, "Вы успешно вышли из очереди!", replyMarkup: Keyboards.Keyboard); Program.Bot.DeleteMessageAsync(userId, messageId); } }
/// <summary> /// Обработка сообщений пользователей /// </summary> /// <param name="message">Сообщение пользователя</param> public void PerformMessage(Message message) { var ask = new GameBotOnline().CheckGame(message.Chat.Id.ToString()); if (ask != null) { if (message.Text.ToLower() == "!стоп") { GameBotOnline.Quits[ask.NumberGame](message, ask); } else if (ask.NumberGame != 2) { GameDo[ask.NumberGame](message, ask).Wait(); } } else if (!CheckingInTurnGamePersonal(message.From.Id.ToString())) { var a = ":();'!, .?".ToCharArray(); switch (message.Text.ToLower().Trim(a).Split(' ')[0]) { case "/start": Start(message.From.Id.ToString()); break; case "общаться": new Anonymchat().NewSession(message.Chat.Id.ToString(), message.From.FirstName, Anonymchat.Answers, Anonymchat.NumberGame, 0, -1).Wait(); break; case "быкануть": BullAndCows.AddUsers(message.From.Id); break; case "выйти": ExitTurn(message.From.Id.ToString(), message.MessageId); break; case "занулить": new CrossZero().NewSession(message.From.Id.ToString(), message.From.FirstName, CrossZero.Answers, CrossZero.NumberGame, 0, -1).Wait(); break; case "дурак": new Durak().Start(message); break; case "поддержка": Program.Bot.SendTextMessageAsync(message.Chat.Id, "Если обнаружите какой-то баг в играх - отпишите мне @palyon\n\n Приятного использования :)", replyMarkup: Keyboards.Keyboard); break; } } }
/// <summary> /// Проверка пользователя на нахождение в очереди на игру. /// </summary> /// <param name="you">UserId пользователя</param> /// <returns>True, если пользователь находится в очереди ожидания соперника.</returns> private static bool CheckingInTurnGamePersonal(string you) { for (var i = 0; i < TurnWaitPlayer.Length; i++) { var info = GameBotOnline.CheckIndex(you, TurnWaitPlayer[i]); if (info[1] != -1) { return(true); } } return(false); }