Browse Source

Add IEmbed#ToEmbedBuilder extension method (#863)

* Add IEmbed#ToEmbedBuilder extension method

* Implementing reviewed changes.

* Switch to object initializers for author and footer.
tags/2.0.0-beta
Alex Gravely Christopher F 7 years ago
parent
commit
5218e6be97
1 changed files with 35 additions and 0 deletions
  1. +35
    -0
      src/Discord.Net.Rest/Extensions/EmbedBuilderExtensions.cs

+ 35
- 0
src/Discord.Net.Rest/Extensions/EmbedBuilderExtensions.cs View File

@@ -1,3 +1,5 @@
using System;

namespace Discord
{
public static class EmbedBuilderExtensions
@@ -19,5 +21,38 @@ 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 builder = new EmbedBuilder
{
Author = new EmbedAuthorBuilder
{
Name = embed.Author?.Name,
IconUrl = embed.Author?.IconUrl,
Url = embed.Author?.Url
},
Color = embed.Color ?? Color.Default,
Description = embed.Description,
Footer = new EmbedFooterBuilder
{
Text = embed.Footer?.Text,
IconUrl = embed.Footer?.IconUrl
},
ImageUrl = embed.Image?.Url,
ThumbnailUrl = embed.Thumbnail?.Url,
Timestamp = embed.Timestamp,
Title = embed.Title,
Url = embed.Url
};

foreach (var field in embed.Fields)
builder.AddField(field.Name, field.Value, field.Inline);

return builder;
}
}
}

Loading…
Cancel
Save