/** * @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); } }