protected async Task StartActionWithoutConfirm(Message message, string actionName, Func <IDigitalOceanClient, int, Task <DigitalOcean.API.Models.Responses.Action> > func)
        {
            try
            {
                var digitalOceanApi = _digitalOceanClientFactory.GetInstance(message.From.Id);
                var session         = _sessionRepo.Get(message.From.Id);
                var dropletId       = session.Data.CastObject <int>();
                var action          = await func(digitalOceanApi, dropletId).ConfigureAwait(false);

                await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, $"\U0001F4C0 {actionName}...");

                _sessionRepo.Update(message.From.Id, session =>
                {
                    session.State = SessionState.WaitAction;
                });

                var cancellationTokenSource = new CancellationTokenSource();
                cancellationTokenSource.CancelAfter(TimeSpan.FromMinutes(3));
                var resultStatus = await CheckActionStatus(dropletId, action.Id, digitalOceanApi, cancellationTokenSource.Token).ConfigureAwait(false);

                if (resultStatus)
                {
                    await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, "Done \U00002705", replyMarkup : Keyboards.GetSelectedDropletsMenuKeyboard());
                }
                else
                {
                    await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, "Error \U0000274C", replyMarkup : Keyboards.GetSelectedDropletsMenuKeyboard());
                }

                _sessionRepo.Update(message.From.Id, session =>
                {
                    session.State = SessionState.SelectedDroplet;
                });
            }
            catch (ApiException ex)
            {
                _logger.LogError($"UserId={message.From.Id.ToString()}, Error={ex.Message}");
                await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, $"DigitalOcean API Error: {ex.Message}");
            }
            catch (OperationCanceledException)
            {
                _logger.LogError($"UserId={message.From.Id.ToString()}, ChatId={message.Chat.Id.ToString()}, Error=Operation CheckActionStatus was auto-canceled after 3 minutes");
                await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, "Sorry, check action status operation was auto-canceled after 3 minutes \U0001F628", replyMarkup : Keyboards.GetSelectedDropletsMenuKeyboard());
            }
            catch (Exception ex)
            {
                _logger.LogError($"UserId={message.From.Id.ToString()}, ChatId={message.Chat.Id.ToString()}, Error={ex.Message}, StackTrace={ex.StackTrace}");
                await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, "Sorry, аn error has occurred \U0001F628", replyMarkup : Keyboards.GetSelectedDropletsMenuKeyboard());
            }
        }