| @@ -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); | |||
| } | |||
| } | |||
| } | |||