public Task <Unit> Handle(HandleIncomingMessageCommand request, CancellationToken cancellationToken)
        {
            if (new List <string> {
                "hey", "/start"
            }.Contains(request.Update.Message?.Text, StringComparer.CurrentCultureIgnoreCase))
            {
                AppEntryFlow.InitRequestHandler(request.Update);
                return(Task.FromResult(Unit.Value));
            }

            if (CurrentSessionHandler.NextQuestion.Equals(default(KeyValuePair <Question, Action <string> >)))
            {
                return(Task.FromResult(Unit.Value));
            }

            if (CurrentSessionHandler.NextQuestion.Key == null)
            {
                return(Task.FromResult(Unit.Value));
            }

            if (CurrentSessionHandler.NextQuestion.Key.IsEndSignal || CurrentSessionHandler.NextQuestion.Value == null)
            {
                CurrentSessionHandler.EndSession(request.Update);
                return(Task.FromResult(Unit.Value));
            }

            HandleResponse(request.Update);
            return(Task.FromResult(Unit.Value));
        }