diff --git a/src/NadekoBot/Common/SmartText/SmartEmbedText.cs b/src/NadekoBot/Common/SmartText/SmartEmbedText.cs index 448c2fd17..f117fb734 100644 --- a/src/NadekoBot/Common/SmartText/SmartEmbedText.cs +++ b/src/NadekoBot/Common/SmartText/SmartEmbedText.cs @@ -1,6 +1,6 @@ -using SixLabors.ImageSharp.PixelFormats; +#nullable disable warnings +using SixLabors.ImageSharp.PixelFormats; -#nullable disable namespace NadekoBot; public sealed record SmartEmbedArrayElementText : SmartEmbedTextBase @@ -37,11 +37,11 @@ public sealed record SmartEmbedText : SmartEmbedTextBase { } - private SmartEmbedText(IEmbed eb, string plainText = null) + private SmartEmbedText(IEmbed eb, string? plainText = null) : base(eb) => (PlainText, Color) = (plainText, eb.Color?.RawValue ?? 0); - public static SmartEmbedText FromEmbed(IEmbed eb, string plainText = null) + public static SmartEmbedText FromEmbed(IEmbed eb, string? plainText = null) => new(eb, plainText); protected override EmbedBuilder GetEmbedInternal() diff --git a/src/NadekoBot/Common/SmartText/SmartEmbedTextArray.cs b/src/NadekoBot/Common/SmartText/SmartEmbedTextArray.cs index f12e96483..90e9f6696 100644 --- a/src/NadekoBot/Common/SmartText/SmartEmbedTextArray.cs +++ b/src/NadekoBot/Common/SmartText/SmartEmbedTextArray.cs @@ -14,7 +14,10 @@ public sealed record SmartEmbedTextArray : SmartText if (Embeds is null) return Array.Empty(); - return Embeds.Map(em => em.GetEmbed()); + return Embeds + .Where(x => x.IsValid) + .Select(em => em.GetEmbed()) + .ToArray(); } public void NormalizeFields() diff --git a/src/NadekoBot/Common/SmartText/SmartText.cs b/src/NadekoBot/Common/SmartText/SmartText.cs index 0c4c9d6ed..2fb9f5ac0 100644 --- a/src/NadekoBot/Common/SmartText/SmartText.cs +++ b/src/NadekoBot/Common/SmartText/SmartText.cs @@ -68,7 +68,7 @@ public abstract record SmartText var obj = root.ToObject(); - if (obj is null) + if (obj is null || !(obj.IsValid || !string.IsNullOrWhiteSpace(obj.PlainText))) return new SmartPlainText(input); obj.NormalizeFields(); diff --git a/src/NadekoBot/_Extensions/Extensions.cs b/src/NadekoBot/_Extensions/Extensions.cs index fb929b58b..1d533fa3e 100644 --- a/src/NadekoBot/_Extensions/Extensions.cs +++ b/src/NadekoBot/_Extensions/Extensions.cs @@ -21,7 +21,7 @@ public static class Extensions { SmartEmbedText set => msg.ModifyAsync(x => { - x.Embed = set.GetEmbed().Build(); + x.Embed = set.IsValid ? set.GetEmbed().Build() : null; x.Content = set.PlainText?.SanitizeMentions() ?? ""; }), SmartEmbedTextArray set => msg.ModifyAsync(x => diff --git a/src/NadekoBot/_Extensions/IMessageChannelExtensions.cs b/src/NadekoBot/_Extensions/IMessageChannelExtensions.cs index 6da88ba21..5d8cd12ae 100644 --- a/src/NadekoBot/_Extensions/IMessageChannelExtensions.cs +++ b/src/NadekoBot/_Extensions/IMessageChannelExtensions.cs @@ -54,7 +54,7 @@ public static class MessageChannelExtensions => text switch { SmartEmbedText set => channel.SendAsync(set.PlainText, - set.GetEmbed().Build(), + set.IsValid ? set.GetEmbed().Build() : null, sanitizeAll: sanitizeAll), SmartPlainText st => channel.SendAsync(st.Text, default(Embed), diff --git a/src/NadekoBot/_Extensions/SocketMessageComponentExtensions.cs b/src/NadekoBot/_Extensions/SocketMessageComponentExtensions.cs index 481cde3a9..11c1274f9 100644 --- a/src/NadekoBot/_Extensions/SocketMessageComponentExtensions.cs +++ b/src/NadekoBot/_Extensions/SocketMessageComponentExtensions.cs @@ -36,7 +36,7 @@ public static class SocketMessageComponentExtensions => text switch { SmartEmbedText set => smc.RespondAsync(set.PlainText, - set.GetEmbed().Build(), + set.IsValid ? set.GetEmbed().Build() : null, sanitizeAll: sanitizeAll, ephemeral: ephemeral), SmartPlainText st => smc.RespondAsync(st.Text,