Ejemplo n.º 1
0
        /// <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.
        }
Ejemplo n.º 2
0
        /// <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);
        }