Add function to convert Geekbot Embeds to Discord.Net Embeds for easier code sharing
This commit is contained in:
parent
34f15402b4
commit
10b29cce8a
1 changed files with 26 additions and 5 deletions
|
@ -1,7 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
using Discord;
|
||||||
|
using Color = System.Drawing.Color;
|
||||||
|
|
||||||
namespace Geekbot.Core.Interactions.Embed
|
namespace Geekbot.Core.Interactions.Embed
|
||||||
{
|
{
|
||||||
|
@ -38,11 +39,14 @@ namespace Geekbot.Core.Interactions.Embed
|
||||||
[JsonPropertyName("timestamp")]
|
[JsonPropertyName("timestamp")]
|
||||||
public DateTime? Timestamp { get; set; }
|
public DateTime? Timestamp { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
private Color _color { get; set; } = System.Drawing.Color.Black;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// color code of the embed
|
/// color code of the embed
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonPropertyName("color")]
|
[JsonPropertyName("color")]
|
||||||
public uint Color { get; set; }
|
public uint Color => (uint)(_color.R << 16 | _color.G << 8 | _color.B);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// footer information
|
/// footer information
|
||||||
|
@ -84,7 +88,7 @@ namespace Geekbot.Core.Interactions.Embed
|
||||||
/// fields information
|
/// fields information
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonPropertyName("fields")]
|
[JsonPropertyName("fields")]
|
||||||
public List<EmbedField> Fields { get; set; } = new List<EmbedField>();
|
public List<EmbedField> Fields { get; init; } = new List<EmbedField>();
|
||||||
|
|
||||||
public void AddField(string name, string value, bool inline = false)
|
public void AddField(string name, string value, bool inline = false)
|
||||||
{
|
{
|
||||||
|
@ -103,7 +107,24 @@ namespace Geekbot.Core.Interactions.Embed
|
||||||
|
|
||||||
public void SetColor(Color c)
|
public void SetColor(Color c)
|
||||||
{
|
{
|
||||||
Color = (uint)(c.R << 16 | c.G << 8 | c.B);
|
_color = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EmbedBuilder ToDiscordNetEmbed()
|
||||||
|
{
|
||||||
|
var eb = new EmbedBuilder();
|
||||||
|
if (!string.IsNullOrEmpty(Title)) eb.Title = Title;
|
||||||
|
if (!string.IsNullOrEmpty(Description)) eb.Description = Description;
|
||||||
|
if (!string.IsNullOrEmpty(Url)) eb.Url = Url;
|
||||||
|
if (Timestamp != null) eb.Timestamp = Timestamp;
|
||||||
|
if (Color != 0) eb.WithColor(new Discord.Color(_color.R, _color.G, _color.B));
|
||||||
|
if (Footer != null) eb.WithFooter(Footer.Text, Footer.IconUrl);
|
||||||
|
if (Image != null) eb.WithImageUrl(Image.Url);
|
||||||
|
if (Thumbnail != null) eb.WithThumbnailUrl(Thumbnail.Url);
|
||||||
|
if (Author != null) eb.WithAuthor(Author.Name, Author.IconUrl, Author.Url);
|
||||||
|
Fields.ForEach(field => eb.AddField(field.Name, field.Value, field.Inline));
|
||||||
|
|
||||||
|
return eb;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue