public async Task <string> GetMessageAsync(RebalanceOperation message)
        {
            _log.Info("Wallets Rebalancer Provider - formatting a message...", message);

            var messageText = await GetMessage(message);

            _log.Info("Wallets Rebalancer Provider - finished formatting a message.", messageText);

            return(ChatMessageHelper.CheckSizeAndCutMessageIfNeeded(messageText));
        }
 private async Task ProcessMessageAsync(RebalanceOperation message)
 {
     try
     {
         await _handler.Publish(message);
     }
     catch (Exception ex)
     {
         await _log.WriteErrorAsync(nameof(WalletsRebalancerSubscriber), nameof(ProcessMessageAsync), $"message {message.ToJson()}", ex);
     }
 }
        private async Task <string> GetMessage(RebalanceOperation message)
        {
            var state = new StringBuilder();

            state.AppendLine($"======= {DateTime.UtcNow:yyyy/MM/dd HH:mm:ss} =======\r\n");
            state.AppendLine("Wallets Rebalancer event:\r\n");

            state.AppendLine($"Time: {message.Date}");
            state.AppendLine($"Wallet Name: {message.WalletName}");
            state.AppendLine($"Status: {message.Status}");
            state.AppendLine("Description:");
            state.AppendLine($"{await GetDescriptionAsync(message.Assets)}");

            return(state.ToString());
        }
        public async Task Publish(RebalanceOperation message)
        {
            _log.Info("Wallets Rebalancer Publisher - publishing a message...", message);

            try
            {
                var publisherSettings = await _repo.GetWalletsRebalancerChatPublisherSettings();

                foreach (var settings in publisherSettings)
                {
                    await _telegramSender.SendTextMessageAsync(settings.ChatId,
                                                               await _walletsRebalancerProvider.GetMessageAsync(message));
                }

                _log.Info("Wallets Rebalancer Publisher - successfully published a message.", message);
            }
            catch (Exception ex)
            {
                await _log.WriteErrorAsync(nameof(WalletsRebalancerPublisher), nameof(Publish), "", ex);
            }
        }