public void handleDirections(Update update) throws InvalidObjectException {
    Message message = update.getMessage();
    if (message != null && message.hasText()) {
      if (languageMessages.contains(message.getFrom().getId())) {
        onLanguageSelected(message);
      } else {
        String language =
            DatabaseManager.getInstance().getUserLanguage(update.getMessage().getFrom().getId());
        if (message.getText().startsWith(Commands.setLanguageCommand)) {
          onSetLanguageCommand(message, language);
        } else if (message.getText().startsWith(Commands.startDirectionCommand)) {
          onStartdirectionsCommand(message, language);
        } else if ((message.getText().startsWith(Commands.help)
                || (message.getText().startsWith(Commands.startCommand)
                    || !message.isGroupMessage()))
            && DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId())
                == -1) {
          sendHelpMessage(message, language);
        } else if (!message.getText().startsWith("/")) {
          if (DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId())
                  == WATING_ORIGIN_STATUS
              && message.hasReplayMessage()
              && DatabaseManager.getInstance()
                      .getUserDestinationMessageId(message.getFrom().getId())
                  == message.getReplyToMessage().getMessageId()) {
            onOriginReceived(message, language);

          } else if (DatabaseManager.getInstance()
                      .getUserDestinationStatus(message.getFrom().getId())
                  == WATING_DESTINY_STATUS
              && message.hasReplayMessage()
              && DatabaseManager.getInstance()
                      .getUserDestinationMessageId(message.getFrom().getId())
                  == message.getReplyToMessage().getMessageId()) {
            onDestinationReceived(message, language);
          } else if (!message.hasReplayMessage()) {
            if (DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId())
                == -1) {
              sendHelpMessage(message, language);
            } else {
              SendMessage sendMessageRequest = new SendMessage();
              sendMessageRequest.setText(
                  LocalisationService.getInstance().getString("youNeedReplyDirections", language));
              sendMessageRequest.setChatId(message.getChatId().toString());
              SenderHelper.SendApiMethod(sendMessageRequest, TOKEN);
            }
          }
        }
      }
    }
  }
 private void performUpdate(Update update) throws Exception {
   try {
     print(update.getMessage());
     update.doUpdate();
     print("...done\n");
   } catch (Exception e) {
     print("\n\t" + e + "\n");
   }
 }