public Embed Build() { _embed.Footer = Footer?.Build(); _embed.Author = Author?.Build(); var fields = ImmutableArray.CreateBuilder <EmbedField>(_fields.Count); for (int i = 0; i < _fields.Count; i++) { fields.Add(_fields[i].Build()); } _embed.Fields = fields.ToImmutable(); return(_embed); }
/// <summary> /// Builds the embed and returns a Discord.Net embed object. /// </summary> /// <param name="currentTimestamp">Determines whether the timestamp parameter should be set to the current UTC time.</param> /// <returns>A Discord.Net embed object.</returns> public Embed Build(bool currentTimestamp = false) { if (currentTimestamp) { this.Timestamp = DateTimeOffset.UtcNow; } EmbedBuilder emb = new EmbedBuilder(); // Title and Url. if (!string.IsNullOrWhiteSpace(Title)) { emb.WithTitle(Title); if (IsUrl(TitleUrl)) { emb.WithUrl(TitleUrl); } } // Description. if (!string.IsNullOrWhiteSpace(Description)) { emb.WithDescription(Description); } // Author embed. EmbedAuthorBuilder embAuth = Author.Build(); if (embAuth != null) { emb.WithAuthor(embAuth); } // Color. if (ColorStripe != null) { emb.WithColor((Color)ColorStripe); } // Footer embed. EmbedFooterBuilder embFoot = Footer.Build(); if (embFoot != null) { emb.WithFooter(embFoot); } // Field embeds. foreach (JEmbedField fld in Fields) { EmbedFieldBuilder embFld = fld.Build(); if (embFld != null) { emb.AddField(embFld); } } // Thumbnail. if (IsUrl(ThumbnailUrl)) { emb.WithThumbnailUrl(ThumbnailUrl); } // Image. if (IsUrl(ImageUrl)) { emb.WithImageUrl(ImageUrl); } // Timestamp. if (Timestamp != null) { emb.WithTimestamp((DateTimeOffset)Timestamp); } return(emb.Build()); }
internal DiscordApiData Build() { DiscordApiData data = new DiscordApiData(DiscordApiDataType.Container); if (Title != null) { data.Set("title", Title); } if (Description != null) { data.Set("description", Description); } if (Url != null) { data.Set("url", Url); } if (Timestamp.HasValue) { data.Set("timestamp", Timestamp.Value.ToUniversalTime().ToString("s", CultureInfo.InvariantCulture)); } if (Color.HasValue) { data.Set("color", Color.Value.ToHexadecimal()); } if (Footer != null) { data.Set("footer", Footer.Build()); } if (ImageUrl != null) { DiscordApiData imageData = new DiscordApiData(DiscordApiDataType.Container); imageData.Set("url", ImageUrl); data.Set("image", imageData); } if (Author != null) { data.Set("author", Author.Build()); } if (ThumbnailUrl != null) { DiscordApiData thumbnailData = new DiscordApiData(DiscordApiDataType.Container); thumbnailData.Set("url", ThumbnailUrl); data.Set("thumbnail", thumbnailData); } if (Fields != null) { DiscordApiData fieldArray = new DiscordApiData(DiscordApiDataType.Array); foreach (EmbedField field in Fields) { fieldArray.Values.Add(field.Build()); } data.Set("fields", fieldArray); } return(data); }