using System; using System.Diagnostics; using System.Threading.Tasks; namespace Discord.Commands { [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class CommandParameter { private readonly TypeReader _reader; public string Name { get; } public string Summary { get; } public bool IsOptional { get; } public bool IsRemainder { get; } public bool IsMultiple { get; } public Type Type { get; } internal object DefaultValue { get; } public CommandParameter(string name, string summary, Type type, TypeReader reader, bool isOptional, bool isRemainder, bool isMultiple, object defaultValue) { Name = name; Summary = summary; Type = type; _reader = reader; IsOptional = isOptional; IsRemainder = isRemainder; IsMultiple = isMultiple; DefaultValue = defaultValue; } public async Task Parse(IMessage context, string input) { return await _reader.Read(context, input).ConfigureAwait(false); } public override string ToString() => Name; private string DebuggerDisplay => $"{Name}{(IsOptional ? " (Optional)" : "")}{(IsRemainder ? " (Remainder)" : "")}"; } }