using Newtonsoft.Json; using System.Linq; namespace Discord.API { internal class ApplicationCommandOption { [JsonProperty("type")] public ApplicationCommandOptionType Type { get; set; } [JsonProperty("name")] public string Name { get; set; } [JsonProperty("description")] public string Description { get; set; } [JsonProperty("default")] public Optional Default { get; set; } [JsonProperty("required")] public Optional Required { get; set; } [JsonProperty("choices")] public Optional Choices { get; set; } [JsonProperty("options")] public Optional Options { get; set; } [JsonProperty("autocomplete")] public Optional Autocomplete { get; set; } [JsonProperty("min_value")] public Optional MinValue { get; set; } [JsonProperty("max_value")] public Optional MaxValue { get; set; } [JsonProperty("channel_types")] public Optional ChannelTypes { get; set; } public ApplicationCommandOption() { } public ApplicationCommandOption(IApplicationCommandOption cmd) { Choices = cmd.Choices.Select(x => new ApplicationCommandOptionChoice { Name = x.Name, Value = x.Value }).ToArray(); Options = cmd.Options.Select(x => new ApplicationCommandOption(x)).ToArray(); ChannelTypes = cmd.ChannelTypes.ToArray(); Required = cmd.IsRequired ?? Optional.Unspecified; Default = cmd.IsDefault ?? Optional.Unspecified; MinValue = cmd.MinValue ?? Optional.Unspecified; MaxValue = cmd.MaxValue ?? Optional.Unspecified; Name = cmd.Name; Type = cmd.Type; Description = cmd.Description; } public ApplicationCommandOption(ApplicationCommandOptionProperties option) { Choices = option.Choices?.Select(x => new ApplicationCommandOptionChoice { Name = x.Name, Value = x.Value }).ToArray() ?? Optional.Unspecified; Options = option.Options?.Select(x => new ApplicationCommandOption(x)).ToArray() ?? Optional.Unspecified; Required = option.IsRequired ?? Optional.Unspecified; Default = option.IsDefault ?? Optional.Unspecified; MinValue = option.MinValue ?? Optional.Unspecified; MaxValue = option.MaxValue ?? Optional.Unspecified; ChannelTypes = option.ChannelTypes?.ToArray() ?? Optional.Unspecified; Name = option.Name; Type = option.Type; Description = option.Description; Autocomplete = option.IsAutocomplete; } } }