diff --git a/src/Discord.Net.Commands/Builders/CommandBuilder.cs b/src/Discord.Net.Commands/Builders/CommandBuilder.cs index 9b983fd1f..a3f2fee78 100644 --- a/src/Discord.Net.Commands/Builders/CommandBuilder.cs +++ b/src/Discord.Net.Commands/Builders/CommandBuilder.cs @@ -80,6 +80,13 @@ namespace Discord.Commands.Builders _preconditions.Add(precondition); return this; } + public CommandBuilder AddParameter(string name, Action createFunc) + { + var param = new ParameterBuilder(this, name, typeof(T)); + createFunc(param); + _parameters.Add(param); + return this; + } public CommandBuilder AddParameter(string name, Type type, Action createFunc) { var param = new ParameterBuilder(this, name, type); diff --git a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs index d4cf598ec..c9801f458 100644 --- a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs @@ -43,10 +43,13 @@ namespace Discord.Commands.Builders internal void SetType(Type type) { var readers = Command.Module.Service.GetTypeReaders(type); - if (readers == null) - throw new InvalidOperationException($"{type} does not have a TypeReader registered for it"); - - TypeReader = readers.FirstOrDefault().Value; + if (readers != null) + TypeReader = readers.FirstOrDefault().Value; + else + TypeReader = Command.Module.Service.GetDefaultTypeReader(type); + + if (TypeReader == null) + throw new InvalidOperationException($"{type} does not have a TypeReader registered for it"); if (type.GetTypeInfo().IsValueType) DefaultValue = Activator.CreateInstance(type);