|
- using System;
- using System.Collections.Generic;
- using System.Linq;
-
- namespace Discord
- {
- public static class EmbedBuilderExtensions
- {
- public static EmbedBuilder WithColor(this EmbedBuilder builder, uint rawValue) =>
- builder.WithColor(new Color(rawValue));
-
- public static EmbedBuilder WithColor(this EmbedBuilder builder, byte r, byte g, byte b) =>
- builder.WithColor(new Color(r, g, b));
-
- public static EmbedBuilder WithColor(this EmbedBuilder builder, int r, int g, int b) =>
- builder.WithColor(new Color(r, g, b));
-
- public static EmbedBuilder WithColor(this EmbedBuilder builder, float r, float g, float b) =>
- builder.WithColor(new Color(r, g, b));
-
- public static EmbedBuilder WithAuthor(this EmbedBuilder builder, IUser user) =>
- builder.WithAuthor($"{user.Username}#{user.Discriminator}", user.GetAvatarUrl());
-
- 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;
- }
-
- public static EmbedBuilder WithFields(this EmbedBuilder builder, IEnumerable<EmbedFieldBuilder> fields)
- {
- foreach (var field in fields)
- builder.AddField(field);
-
- return builder;
- }
- public static EmbedBuilder WithFields(this EmbedBuilder builder, params EmbedFieldBuilder[] fields)
- => WithFields(builder, fields.AsEnumerable());
- }
- }
|