|
|
@@ -71,6 +71,7 @@ namespace Discord |
|
|
|
|
|
|
|
public EmbedAuthorBuilder Author { get; set; } |
|
|
|
public EmbedFooterBuilder Footer { get; set; } |
|
|
|
public EmbedProviderBuilder Provider { get; set; } |
|
|
|
private List<EmbedFieldBuilder> _fields; |
|
|
|
public List<EmbedFieldBuilder> Fields |
|
|
|
{ |
|
|
@@ -171,6 +172,31 @@ namespace Discord |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
public EmbedBuilder WithProvider(EmbedProviderBuilder provider) |
|
|
|
{ |
|
|
|
Provider = provider; |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
public EmbedBuilder WithProvider(Action<EmbedProviderBuilder> action) |
|
|
|
{ |
|
|
|
var provider = new EmbedProviderBuilder(); |
|
|
|
action(provider); |
|
|
|
Provider = provider; |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
public EmbedBuilder WithProvider(string name, string url = null) |
|
|
|
{ |
|
|
|
var provider = new EmbedProviderBuilder |
|
|
|
{ |
|
|
|
Name = name, |
|
|
|
Url = url |
|
|
|
}; |
|
|
|
Provider = provider; |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
public EmbedBuilder AddField(string name, object value, bool inline = false) |
|
|
|
{ |
|
|
|
var field = new EmbedFieldBuilder() |
|
|
@@ -203,6 +229,7 @@ namespace Discord |
|
|
|
{ |
|
|
|
_embed.Footer = Footer?.Build(); |
|
|
|
_embed.Author = Author?.Build(); |
|
|
|
_embed.Provider = Provider?.Build(); |
|
|
|
var fields = ImmutableArray.CreateBuilder<EmbedField>(Fields.Count); |
|
|
|
for (int i = 0; i < Fields.Count; i++) |
|
|
|
fields.Add(Fields[i].Build()); |
|
|
@@ -376,4 +403,39 @@ namespace Discord |
|
|
|
public EmbedFooter Build() |
|
|
|
=> _footer; |
|
|
|
} |
|
|
|
|
|
|
|
public class EmbedProviderBuilder |
|
|
|
{ |
|
|
|
private EmbedProvider _provider; |
|
|
|
|
|
|
|
public string Name |
|
|
|
{ |
|
|
|
get => _provider.Name; |
|
|
|
set => _provider.Name = value; |
|
|
|
} |
|
|
|
|
|
|
|
public string Url |
|
|
|
{ |
|
|
|
get => _provider.Url; |
|
|
|
set |
|
|
|
{ |
|
|
|
if (!value.IsNullOrUri()) throw new ArgumentException("Url must be a well-formed URI", nameof(Url)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public EmbedProviderBuilder WithName(string name) |
|
|
|
{ |
|
|
|
Name = name; |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
public EmbedProviderBuilder WithUrl(string url) |
|
|
|
{ |
|
|
|
Url = url; |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
public EmbedProvider Build() |
|
|
|
=> _provider; |
|
|
|
} |
|
|
|
} |