/// <summary> /// Async bot answer method. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public static async void Bot_OnMessage(object sender, MessageEventArgs e) { //Exit if recieved nothing. if (e.Message == null) { return; } Console.WriteLine($"Received {e.Message.Type} message from {e.Message.Chat.Username}."); if (e.Message.Type == MessageType.Text) { Console.Write($"\t msgText: {e.Message.Text} \n\r"); } //Log message data. messagesToLog.Add(new LogItem(e)); string respond = JsonParseFrameData.BotAnswer(e); await Execute.tbot.SendTextMessageAsync( chatId : e.Message.Chat, text : respond ); //Log message to Log.json messagesToLog.Add(new LogItem(respond)); LogWriter logWriter = new LogWriter("Log.txt", messagesToLog); logWriter.Process(); //Write log data to file. }
/// <summary> /// Check user request for correctness and form text answer. /// </summary> /// <returns></returns> public static string BotAnswer(MessageEventArgs e) { string result = "No data."; switch (e.Message.Type) { case MessageType.Text: //check for type { #region Text message answer string msgText = e.Message.Text; //user message if (msgText.Length < 3) //if message legth < than 3 return error { return("Введите корректную команду."); } //Turns character name to lower case for better UX string lowerCaseName = msgText.Substring(1); lowerCaseName = char.ToLower(lowerCaseName[0]).ToString() + lowerCaseName.Substring(1); //Available commands switch (msgText) { case "/move": return("Введите данные в формате /move [character name] [move name]"); case "/start": return("Введите /commands для отображения всех команд."); case "/commands": return("/move [character name] [move name] \n" + "/vt1 [character name] [move name] \n" + "/vt2 [character name] [move name] \n" + "/movelist [character name] \n" + "/stats [character name] \n" + "/vt1movelist [character name] \n" + "/vt2movelist [character name] \n" + "/characterlist"); case "/vt1": return("Введите данные в формате /vt1 [character name] [move name]"); case "/vt2": return("Введите данные в формате /vt2 [character name] [move name]"); case "/movelist": return("Введите данные в формате /movelist [character name]"); case "/stats": return("Введите данные в формате /stats [character name]"); case "/characterlist": return(JsonParseFrameData.GetCharacterList()); } string[] tempData; //Array for parse data. char[] separator = new[] { ' ' }; #region Proper divide //Commands /vt1, /vt2, /move required split for 3 parts if (msgText.Contains("/vt1") || msgText.Contains("/vt2") || msgText.Contains("/move")) { tempData = msgText.Split(separator, 3); } //Commands /movelist, /stats, /vt1movelist, /vt2movelist required split for 2 parts else if (msgText.Contains("/movelist") || msgText.Contains("/stats") || msgText.Contains("/vt1movelist") || msgText.Contains("/vt2movelist")) { tempData = msgText.Split(separator, 2); } else { return(result); } #endregion string tempName = char.ToUpper(tempData[1][0]) + tempData[1].Substring(1); //variable that contains character name in lower case. switch (tempData.Length) { case 2: if (tempData[0] == "/movelist") { return(result = JsonParseFrameData.GetCharacterList().Contains(tempName) ? JsonParseFrameData.GetMoveList(char.ToUpper(tempData[1][0]).ToString() + tempData[1].Substring(1)) : "No data."); } else if (tempData[0] == "/stats") { return(result = JsonParseFrameData.GetCharacterList().Contains(tempName) ? JsonParseFrameData.GetStats(char.ToUpper(tempData[1][0]).ToString() + tempData[1].Substring(1)) : "No data."); } else if (tempData[0] == "/vt1movelist") { return(result = JsonParseFrameData.GetCharacterList().Contains(tempName) ? JsonParseFrameData.GetTriggerMoveList(char.ToUpper(tempData[1][0]).ToString() + tempData[1].Substring(1), 1) : "No data."); } else if (tempData[0] == "/vt2movelist") { return(result = JsonParseFrameData.GetCharacterList().Contains(tempName) ? JsonParseFrameData.GetTriggerMoveList(char.ToUpper(tempData[1][0]).ToString() + tempData[1].Substring(1), 2) : "No data."); } break; case 3: if (tempData[0] == "/vt1") { return(result = JsonParseFrameData.GetCharacterList().Contains(tempName) ? JsonParseFrameData.GetTriggerMoveInfo(char.ToUpper(tempData[1][0]).ToString() + tempData[1].Substring(1), 1, tempData[2]) : "No data."); } else if (tempData[0] == "/vt2") { return(result = JsonParseFrameData.GetCharacterList().Contains(tempName) ? JsonParseFrameData.GetTriggerMoveInfo(char.ToUpper(tempData[1][0]).ToString() + tempData[1].Substring(1), 2, tempData[2]) : "No data."); } else if (tempData[0] == "/move") { return(result = JsonParseFrameData.GetCharacterList().Contains(tempName) ? JsonParseFrameData.GetMoveInfo(char.ToUpper(tempData[1][0]).ToString() + tempData[1].Substring(1), tempData[2]) : "No data."); } break; } #endregion } break; case MessageType.Document: { result = "I don't know what to do with documents."; } break; case MessageType.Photo: { result = "I don't know what to do with images."; } break; case MessageType.Audio: { result = "I don't work with audio, sorry."; } break; } return(result); }