public string ProcessQuestion(string questionText)
        {
            if (string.IsNullOrEmpty(questionText))
            {
                return(_wrongAnswer);
            }

            try
            {
                string[] splitedQ = questionText.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);

                //it can be a command
                if (splitedQ.Length == 2)
                {
                    string possibleCmdName = splitedQ[0];

                    IBotCommand cmd = _commandsAndActions.FirstOrDefault(c => c.Name.Equals(possibleCmdName, StringComparison.InvariantCultureIgnoreCase));

                    //it isn not command
                    if (cmd == null)
                    {
                        return(_strategy.GetAnswer(_answers));
                    }
                    //process command
                    else
                    {
                        return(cmd.ProcessQuery(splitedQ[1]));
                    }
                }
                //regular answer
                else
                {
                    return(_strategy.GetAnswer(_answers));
                }
            }
            catch (Exception ex)
            {
                return($"{_wrongAnswer}\n\t!!! {ex.Message}");
            }
        }