public static StepCollection AddCommandWithParameter(this Step step, string command, ILocalizedString suggestParameterText)
        {
            var commandWithParameter      = new CommandStep(command, true);
            var commandWithoutOfParameter = new CommandStep(command, false);

            commandWithoutOfParameter.EchoReply(suggestParameterText, EchoOptions.EchoForceReply());
            var commandAwaitParameter = commandWithoutOfParameter.AddAnyInput();

            step.AddChildStep(commandWithParameter);
            step.AddChildStep(commandWithoutOfParameter);
            return(new StepCollection(new[] { commandWithParameter, commandAwaitParameter }));
        }
        /// <summary>
        ///     это добавит автоматический input
        /// </summary>
        public static Step AddDelegateInput(this Step step, Func <CallContext, string> act)
        {
            var executorStep = new AutomaticStep(act);

            step.AddChildStep(executorStep);
            return(executorStep);
        }
        public static Step AddPhotoInput(this Step step)
        {
            var photoStep = new PhotoStep();

            step.AddChildStep(photoStep);
            return(photoStep);
        }
        public static Step AddAnyInput(this Step step)
        {
            var anyInputStep = new AnyInputStep();

            step.AddChildStep(anyInputStep);
            return(anyInputStep);
        }
        public static Step AddQueryResult(this Step step)
        {
            var commandStep = new QueryResultStep();

            step.AddChildStep(commandStep);
            return(commandStep);
        }
        public static Step AddCommand(this Step step, string command, bool acceptParameter = false)
        {
            var commandStep = new CommandStep(command, acceptParameter);

            step.AddChildStep(commandStep);
            return(commandStep);
        }