From 7511d4a60fac9e02ac54636dc0310e05e8ec640a Mon Sep 17 00:00:00 2001 From: jack-mil <62065280+jack-mil@users.noreply.github.com> Date: Wed, 26 Jul 2023 16:01:07 +0000 Subject: [PATCH] Improve Discord Add/Delete embeds --- .../Notifications/Discord/Discord.cs | 106 +++++++++++++----- 1 file changed, 80 insertions(+), 26 deletions(-) diff --git a/src/NzbDrone.Core/Notifications/Discord/Discord.cs b/src/NzbDrone.Core/Notifications/Discord/Discord.cs index b1ab742ea..1af8debac 100644 --- a/src/NzbDrone.Core/Notifications/Discord/Discord.cs +++ b/src/NzbDrone.Core/Notifications/Discord/Discord.cs @@ -252,16 +252,29 @@ namespace NzbDrone.Core.Notifications.Discord { var series = deleteMessage.Series; var episodes = deleteMessage.EpisodeFile.Episodes; + var deletedFile = deleteMessage.EpisodeFile.Path; + var reason = deleteMessage.Reason; - var attachments = new List - { - new Embed - { - Title = GetTitle(series, episodes) - } - }; + var embed = new Embed + { + Author = new DiscordAuthor + { + Name = Settings.Author.IsNullOrWhiteSpace() ? Environment.MachineName : Settings.Author, + IconUrl = "https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png" + }, + Url = $"http://thetvdb.com/?tab=series&id={series.TvdbId}", + Title = GetTitle(series, episodes), + Description = "Episode Deleted", + Color = (int)DiscordColors.Danger, + Fields = new List + { + new DiscordField { Name = "Reason", Value = reason.ToString() }, + new DiscordField { Name = "File name", Value = string.Format("```{0}```", deletedFile) } + }, + Timestamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"), + }; - var payload = CreatePayload("Episode Deleted", attachments); + var payload = CreatePayload(null, new List { embed }); _proxy.SendPayload(payload, Settings); } @@ -269,17 +282,37 @@ namespace NzbDrone.Core.Notifications.Discord public override void OnSeriesAdd(SeriesAddMessage message) { var series = message.Series; + var embed = new Embed + { + Author = new DiscordAuthor + { + Name = Settings.Author.IsNullOrWhiteSpace() ? Environment.MachineName : Settings.Author, + IconUrl = "https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png" + }, + Url = $"http://thetvdb.com/?tab=series&id={series.TvdbId}", + Title = series.Title, + Description = "Series Added", + Color = (int)DiscordColors.Success, + Fields = new List { new DiscordField { Name = "Links", Value = GetLinksString(series) } } + }; - var attachments = new List - { - new Embed - { - Title = series.Title, - Description = message.Message - } - }; + if (Settings.ImportFields.Contains((int)DiscordImportFieldType.Poster)) + { + embed.Thumbnail = new DiscordImage + { + Url = series.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.RemoteUrl + }; + } - var payload = CreatePayload("Series Added", attachments); + if (Settings.ImportFields.Contains((int)DiscordImportFieldType.Fanart)) + { + embed.Image = new DiscordImage + { + Url = series.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Fanart)?.RemoteUrl + }; + } + + var payload = CreatePayload(null, new List { embed }); _proxy.SendPayload(payload, Settings); } @@ -288,16 +321,37 @@ namespace NzbDrone.Core.Notifications.Discord { var series = deleteMessage.Series; - var attachments = new List - { - new Embed - { - Title = series.Title, - Description = deleteMessage.DeletedFilesMessage - } - }; + var embed = new Embed + { + Author = new DiscordAuthor + { + Name = Settings.Author.IsNullOrWhiteSpace() ? Environment.MachineName : Settings.Author, + IconUrl = "https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png" + }, + Url = $"http://thetvdb.com/?tab=series&id={series.TvdbId}", + Title = series.Title, + Description = deleteMessage.DeletedFilesMessage, + Color = (int)DiscordColors.Danger, + Fields = new List { new DiscordField { Name = "Links", Value = GetLinksString(series) } } + }; - var payload = CreatePayload("Series Deleted", attachments); + if (Settings.ImportFields.Contains((int)DiscordImportFieldType.Poster)) + { + embed.Thumbnail = new DiscordImage + { + Url = series.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.RemoteUrl + }; + } + + if (Settings.ImportFields.Contains((int)DiscordImportFieldType.Fanart)) + { + embed.Image = new DiscordImage + { + Url = series.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Fanart)?.RemoteUrl + }; + } + + var payload = CreatePayload(null, new List { embed }); _proxy.SendPayload(payload, Settings); }