/**
  * @param Update $update
  *
  * @throws \Exception
  */
 public function handle(Update $update)
 {
     $user = $update->message->from;
     $this->applyContext(Context::findByUserId($user->user_id) ?: new Context($user));
     $state = $this->stateMachine->getCurrentState()->getName();
     if ($this->sendCurrentStage) {
         $this->sendMessage('Current stage: ' . $state);
     }
     $this->tryAnswerForCommand($update);
     try {
         $this->{$state}($update);
     } catch (ClientException $e) {
         $this->telegram->sendMessage($update->message->from, 'Произошла внутреняя ошибка');
         Log::info($e);
     }
     $this->context->save();
     if ($this->botan) {
         $this->botan->track($update->message);
     }
 }