From 39d072c3f465728a7f72ef05b6098f7c20cc76fb Mon Sep 17 00:00:00 2001 From: Alex Gravely Date: Sat, 28 Oct 2017 23:42:32 -0400 Subject: [PATCH] Add IEmbed#ToEmbedBuilder extension method --- .../Extensions/EmbedBuilderExtensions.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/Discord.Net.Rest/Extensions/EmbedBuilderExtensions.cs b/src/Discord.Net.Rest/Extensions/EmbedBuilderExtensions.cs index cee9a136e..f8c1dc2ef 100644 --- a/src/Discord.Net.Rest/Extensions/EmbedBuilderExtensions.cs +++ b/src/Discord.Net.Rest/Extensions/EmbedBuilderExtensions.cs @@ -1,3 +1,5 @@ +using System; + namespace Discord { public static class EmbedBuilderExtensions @@ -19,5 +21,31 @@ namespace Discord public static EmbedBuilder WithAuthor(this EmbedBuilder builder, IGuildUser user) => builder.WithAuthor($"{user.Nickname ?? user.Username}#{user.Discriminator}", user.GetAvatarUrl()); + + public static EmbedBuilder ToEmbedBuilder(this IEmbed embed) + { + if (embed.Type != EmbedType.Rich) + throw new InvalidOperationException($"Only {nameof(EmbedType.Rich)} embeds may be built."); + + var eb = new EmbedBuilder + { + Title = embed.Title, + Description = embed.Description, + Url = embed.Url, + ImageUrl = embed.Image?.Url, + ThumbnailUrl = embed.Thumbnail?.Url, + Timestamp = embed.Timestamp + } + .WithAuthor(embed.Author?.Name, embed.Author?.IconUrl, embed.Author?.Url) + .WithFooter(embed.Footer?.Text, embed.Footer?.IconUrl); + + if (embed.Color.HasValue) + eb.WithColor(embed.Color.Value); + + foreach (var field in embed.Fields) + eb.AddField(field.Name, field.Value, field.Inline); + + return eb; + } } }