//если пользователь ввел exit очистить состояние пользователя //если пользователь в игре, вызывать метод Answer для нужной игры //если пользователь не в игре, выполнять команды private static async void Bot_OnMessage(object sender, MessageEventArgs e) { var message = e.Message; if (message == null || message.Type != MessageType.Text) { return; } Console.WriteLine(message.Text); var state = StateDAO.GetState(UserDAO.GetUser(message.From.Id)); if (message.Text.ToLower() == "exit") { state.GameState = ""; state.GameId = 3; //Несуществующая игра StateDAO.UpdateState(state); await Bot.SendTextMessageAsync(message.From.Id, "Игра завершена! Перейти к списку игр /List_of_games"); } else if (state.GameId != 3) //ID несуществующая игра { await Bot.SendTextMessageAsync(message.From.Id, GetGame(state.GameId).Answer(message.From.Id, message.Text)); } else { await MakeCommands(message); } }
public override string Answer(int userId, string message) { var user = UserDAO.GetUser(userId); var state = StateDAO.GetState(user); if (state.GameState == "") { var word = FindWord(userId, ""); state.GameState = "0;" + word + ";" + word + ","; StateDAO.UpdateState(state); return(word + ". Чтобы посмотреть набранные очки и закончить игру напишите result"); } var userData = new UserData(state); if (message.ToLower() != "result") { message = message.ToLower(); if (IsWordRight(userData, message)) { var prevPoints = userData.Points++; userData.UsedWords.Add(message); state.GameState = userData.Points + new string(state.GameState.Skip(prevPoints.ToString().Length).ToArray()) + message + ","; StateDAO.UpdateState(state); return("правильно! слов найдено: " + userData.Points); } else { return("не засчитано"); } } state.GameState = ""; StateDAO.UpdateState(state); return(string.Format("Итог: {0}. Перейти к списку игр /List_of_games", userData.Points)); }
private State ConvertToState(char LastUsedChar, List <string> UsedWords, int userId) { var state = StateDAO.GetState(UserDAO.GetUser(userId)); state.GameState = LastUsedChar + "@" + string.Join(",", UsedWords.ToArray()); return(state); }
public override string Answer(int userId, string message) { var user = UserDAO.GetUser(userId); var state = StateDAO.GetState(user); if (message.Length != 1) { return("некорректный ввод, введите одну букву."); } if (state.GameState == "") { var word = FindWord(userId, ""); var nowWord = new string(word .Select(c => { if (char.IsLetter(c)) { return('*'); } return(c); }) .ToArray()); state.GameState = word + ";" + nowWord + ";0"; Console.WriteLine(state.GameId); Console.WriteLine(state.GameState); StateDAO.UpdateState(state); return("отгадайте слово: " + nowWord + ". Введите букву."); } var userData = new UserData(state); if (userData.NowWord.Contains('*')) { var a = Logic(userData, message.ToLower().First()); userData.NowWord = a.Item1; var b = Logic(userData, message.ToUpper().First()); userData.NowWord = b.Item1; if (a.Item2 == false && b.Item2 == false) { userData.NumTry++; } state.GameState = userData.Word + ";" + userData.NowWord + ";" + userData.NumTry; StateDAO.UpdateState(state); } if (userData.NowWord.Contains('*')) { return(string.Format("{0}, использовано попыток: {1}", userData.NowWord, userData.NumTry)); } state.GameState = ""; StateDAO.UpdateState(state); return(string.Format("Вы отгадали слово {0}!, использовано попыток: {1}", userData.Word, userData.NumTry)); }
private List <string> GetUsedWords(int userId) { var state = StateDAO.GetState(UserDAO.GetUser(userId)); if (state.GameState.Length == 0) { return(new List <string>()); } else { return(state.GameState.Split('@')[1].Split(',').ToList()); } }
private char GetLastUsedChar(int userId) { var state = StateDAO.GetState(UserDAO.GetUser(userId)); if (state.GameState.Length == 0) { return(' '); } else { return(Convert.ToChar(state.GameState.Split('@')[0])); } }
// если пользователь выбрал игру, изменить состояние пользователя private static async void Bot_OnCallbackQuery(object sender, CallbackQueryEventArgs e) { var message = e.CallbackQuery; foreach (var game in Games) { if (game.Name == e.CallbackQuery.Data) { var state = StateDAO.GetState(UserDAO.GetUser(message.From.Id), game.Id); StateDAO.UpdateState(state); await Bot.SendTextMessageAsync(message.From.Id, "Введите что-нибудь чтобы начать" + game.Name + "! Чтобы завершить игру напишите - exit."); break; } } }