public async Task InitializeCurrentUser(Update update)
        {
            int  userTelegramId;
            long chatId;

            switch (update.Type)
            {
            case UpdateType.Message:
                userTelegramId = update.Message.From.Id;
                chatId         = update.Message.Chat.Id;
                break;

            case UpdateType.CallbackQuery:
                userTelegramId = update.CallbackQuery.From.Id;
                chatId         = update.CallbackQuery.Message.Chat.Id;
                break;

            case UpdateType.EditedMessage:
                userTelegramId = update.EditedMessage.From.Id;
                chatId         = update.EditedMessage.Chat.Id;
                break;

            default:
                throw new CurrentUserInitializationException($"Unknown telegram update type: {update.Type}");
            }

            TelegramRozkladUser telegramRozkladUser = null;

            try
            {
                telegramRozkladUser = await _telegramRozkladUserDao.FindByTelegramId(userTelegramId);

                if (telegramRozkladUser == null)
                {
                    telegramRozkladUser = new TelegramRozkladUser
                    {
                        TelegramId = userTelegramId,
                        Language   = _localizationService.DefaultLanguage
                    };

                    await _telegramRozkladUserDao.Add(telegramRozkladUser);
                }

                if (telegramRozkladUser.IsDeleted)
                {
                    telegramRozkladUser.IsDeleted = false;

                    await _telegramRozkladUserDao.Update(telegramRozkladUser);
                }

                _currentTelegramUserContext.TelegramRozkladUser = telegramRozkladUser;
                _currentTelegramUserContext.ChatId = chatId;
            }
            catch (Exception e)
            {
                var outE = new CurrentUserInitializationException("Error when getting user", e);

                var telegramRozkladUserId = telegramRozkladUser?.TelegramId;
                _logger.LogError(TelegramLogEvents.UserInitializationError, outE,
                                 "userTelegramId = {userTelegramId}. " +
                                 "chatId = {chatId}. " +
                                 "TelegramRozkladUser telegram id = {telegramRozkladUserId}",
                                 userTelegramId, chatId, telegramRozkladUserId);

                throw outE;
            }
        }