|
|
@@ -9,124 +9,74 @@ namespace Discord |
|
|
|
{ |
|
|
|
public class EmbedBuilder |
|
|
|
{ |
|
|
|
private Embed embed = new Embed(); |
|
|
|
List<Field> fields = new List<Field>(); |
|
|
|
private Embed model = new Embed(); |
|
|
|
private List<Field> fields = new List<Field>(); |
|
|
|
|
|
|
|
public EmbedBuilder() |
|
|
|
{ |
|
|
|
embed.Type = "rich"; |
|
|
|
model.Type = "rich"; |
|
|
|
} |
|
|
|
|
|
|
|
public EmbedBuilder Title(string title) |
|
|
|
{ |
|
|
|
embed.Title = title; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public EmbedBuilder Description(string description) |
|
|
|
{ |
|
|
|
embed.Description = description; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public EmbedBuilder Url(string url) |
|
|
|
{ |
|
|
|
embed.Url = url; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public EmbedBuilder Color(Color color) |
|
|
|
{ |
|
|
|
embed.Color = color.RawValue; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public EmbedBuilder Field(Func<EmbedFieldBuilder, EmbedFieldBuilder> builder) |
|
|
|
public string Title { get { return model.Title; } set { model.Title = value; } } |
|
|
|
public string Description { get { return model.Description; } set { model.Description = value; } } |
|
|
|
public string Url { get { return model.Url; } set { model.Url = value; } } |
|
|
|
public Color? Color { get { return model.Color.HasValue ? new Color(model.Color.Value) : (Color?)null; } set { model.Color = value?.RawValue; } } |
|
|
|
|
|
|
|
public void SetAuthor(Action<EmbedBuilderAuthor> action) |
|
|
|
{ |
|
|
|
fields.Add(builder(new EmbedFieldBuilder()).Build()); |
|
|
|
return this; |
|
|
|
var author = new EmbedBuilderAuthor(); |
|
|
|
action(author); |
|
|
|
model.Author = author.ToModel(); |
|
|
|
} |
|
|
|
public EmbedBuilder Author(Func<EmbedAuthorBuilder, EmbedAuthorBuilder> builder) |
|
|
|
public void SetFooter(Action<EmbedBuilderFooter> action) |
|
|
|
{ |
|
|
|
embed.Author = builder(new EmbedAuthorBuilder()).Build(); |
|
|
|
return this; |
|
|
|
var footer = new EmbedBuilderFooter(); |
|
|
|
action(footer); |
|
|
|
model.Footer = footer.ToModel(); |
|
|
|
} |
|
|
|
public EmbedBuilder Footer(Func<EmbedFooterBuilder, EmbedFooterBuilder> builder) |
|
|
|
public void AddField(Action<EmbedBuilderField> action) |
|
|
|
{ |
|
|
|
embed.Footer = builder(new EmbedFooterBuilder()).Build(); |
|
|
|
return this; |
|
|
|
var field = new EmbedBuilderField(); |
|
|
|
action(field); |
|
|
|
fields.Add(field.ToModel()); |
|
|
|
} |
|
|
|
public Embed Build() |
|
|
|
|
|
|
|
internal Embed Build() |
|
|
|
{ |
|
|
|
embed.Fields = fields.ToArray(); |
|
|
|
return embed; |
|
|
|
model.Fields = fields.ToArray(); |
|
|
|
return model; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public class EmbedFieldBuilder |
|
|
|
public class EmbedBuilderField |
|
|
|
{ |
|
|
|
private Field embedField = new Field(); |
|
|
|
private Field model = new Field(); |
|
|
|
|
|
|
|
public EmbedFieldBuilder Name(string name) |
|
|
|
{ |
|
|
|
embedField.Name = name; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public EmbedFieldBuilder Value(string value) |
|
|
|
{ |
|
|
|
embedField.Value = value; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public EmbedFieldBuilder Inline(bool inline) |
|
|
|
{ |
|
|
|
embedField.Inline = inline; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public Field Build() |
|
|
|
{ |
|
|
|
return embedField; |
|
|
|
} |
|
|
|
public string Name { get { return model.Name; } set { model.Name = value; } } |
|
|
|
public string Value { get { return model.Value; } set { model.Value = value; } } |
|
|
|
public bool IsInline { get { return model.Inline; } set { model.Inline = value; } } |
|
|
|
|
|
|
|
internal Field ToModel() => model; |
|
|
|
} |
|
|
|
|
|
|
|
public class EmbedAuthorBuilder |
|
|
|
public class EmbedBuilderAuthor |
|
|
|
{ |
|
|
|
private Author author = new Author(); |
|
|
|
|
|
|
|
public EmbedAuthorBuilder Name(string name) |
|
|
|
{ |
|
|
|
author.Name = name; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public EmbedAuthorBuilder Url(string url) |
|
|
|
{ |
|
|
|
author.Url = url; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public EmbedAuthorBuilder IconUrl(string iconUrl) |
|
|
|
{ |
|
|
|
author.IconUrl = iconUrl; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public Author Build() |
|
|
|
{ |
|
|
|
return author; |
|
|
|
} |
|
|
|
private Author model = new Author(); |
|
|
|
|
|
|
|
public string Name { get { return model.Name; } set { model.Name = value; } } |
|
|
|
public string Url { get { return model.Url; } set { model.Url = value; } } |
|
|
|
public string IconUrl { get { return model.IconUrl; } set { model.IconUrl = value; } } |
|
|
|
|
|
|
|
internal Author ToModel() => model; |
|
|
|
} |
|
|
|
|
|
|
|
public class EmbedFooterBuilder |
|
|
|
public class EmbedBuilderFooter |
|
|
|
{ |
|
|
|
private Footer footer = new Footer(); |
|
|
|
private Footer model = new Footer(); |
|
|
|
|
|
|
|
public EmbedFooterBuilder Text(string text) |
|
|
|
{ |
|
|
|
footer.Text = text; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public EmbedFooterBuilder IconUrl(string iconUrl) |
|
|
|
{ |
|
|
|
footer.IconUrl = iconUrl; |
|
|
|
return this; |
|
|
|
} |
|
|
|
public Footer Build() |
|
|
|
{ |
|
|
|
return footer; |
|
|
|
} |
|
|
|
public string Text { get { return model.Text; } set { model.Text = value; } } |
|
|
|
public string IconUrl { get { return model.IconUrl; } set { model.IconUrl = value; } } |
|
|
|
|
|
|
|
internal Footer ToModel() => model; |
|
|
|
} |
|
|
|
} |