private ValueTask Handle(NewAlertMessage message) { _ = Task.Run(async() => { try { var telegramChannels = message.AlertChannels? .Where(c => c.Type == AlertChannelType.Telegram) .ToArray() ?? Array.Empty <AlertChannel>(); if (telegramChannels.Any()) { var text = $"{message.Alert.EventType.Humanize()}{Environment.NewLine}{message.Alert.Message}"; foreach (var channel in telegramChannels) { if (channel.Params.TryGetValue(AlertChannelParam.TelegramChatId, out var chatId)) { await _notificationSender.SendToChat(chatId, text); } } } else if (message.Alert.Destinations.HasFlag(AlertDestinations .Telegram)) // todo: remove after migration to channels { var text = $"{message.Alert.EventType.Humanize()}{Environment.NewLine}{message.Alert.Message}"; await _notificationSender.SendAsync(text); } } catch (Exception e) { _logger.LogError(e, "Failed to handle {@Message}. {@ExMessage}", nameof(NewAlertMessage), e.Message); } }); return(ValueTask.CompletedTask); }