Example #1
0
        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);
        }
Example #2
0
        /// <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());
        }
Example #3
0
        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);
        }