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