@@ -131,7 +131,7 @@ namespace Discord
get => _label;
set
{
if(value != null)
if (value != null)
if (value.Length > MaxLabelLength)
throw new ArgumentException(message: $"Button label must be {MaxLabelLength} characters or less!", paramName: nameof(Label));
@@ -155,11 +155,61 @@ namespace Discord
public IEmote Emote { get; set; }
public string Url { get; set; }
public bool Disabled { get; set; }
private string _label;
private string _customId;
public static ButtonBuilder CreateLinkButton(string label, string url)
{
var builder = new ButtonBuilder()
.WithStyle(ButtonStyle.Link)
.WithUrl(url)
.WithLabel(label);
return builder;
}
public static ButtonBuilder CreateDangerButton(string label, string customId)
{
var builder = new ButtonBuilder()
.WithStyle(ButtonStyle.Danger)
.WithCustomId(customId)
.WithLabel(label);
return builder;
}
public static ButtonBuilder CreatePrimaryButton(string label, string customId)
{
var builder = new ButtonBuilder()
.WithStyle(ButtonStyle.Primary)
.WithCustomId(customId)
.WithLabel(label);
return builder;
}
public static ButtonBuilder CreateSecondaryButton(string label, string customId)
{
var builder = new ButtonBuilder()
.WithStyle(ButtonStyle.Secondary)
.WithCustomId(customId)
.WithLabel(label);
return builder;
}
public static ButtonBuilder CreateSuccessButton(string label, string customId)
{
var builder = new ButtonBuilder()
.WithStyle(ButtonStyle.Success)
.WithCustomId(customId)
.WithLabel(label);
return builder;
}
public ButtonBuilder WithLabel(string label)
{
this.Label = label;
@@ -196,6 +246,11 @@ namespace Discord
}
public ButtonComponent Build()
=> new ButtonComponent(this.Style, this.Label, this.Emote, this.CustomId, this.Url, this.Disabled);
{
if (!string.IsNullOrEmpty(this.Url) && !string.IsNullOrEmpty(this.CustomId))
throw new InvalidOperationException("A button cannot contain a URL and a CustomId");
return new ButtonComponent(this.Style, this.Label, this.Emote, this.CustomId, this.Url, this.Disabled);
}
}
}