| @@ -61,49 +61,29 @@ namespace Discord.Interactions | |||||
| for(var i = 0; i < paramCount; i++) | for(var i = 0; i < paramCount; i++) | ||||
| { | { | ||||
| var parameter = Parameters.ElementAt(i); | var parameter = Parameters.ElementAt(i); | ||||
| bool isCapture = i < captureCount; | |||||
| if (i < captureCount) | |||||
| if(isCapture ^ parameter.IsRouteSegmentParameter) | |||||
| { | { | ||||
| if(parameter.IsRouteSegmentParameter) | |||||
| { | |||||
| var readResult = await parameter.TypeReader.ReadAsync(context, wildcardCaptures.ElementAt(i), services).ConfigureAwait(false); | |||||
| if(!readResult.IsSuccess) | |||||
| { | |||||
| await InvokeModuleEvent(context, readResult).ConfigureAwait(false); | |||||
| return readResult; | |||||
| } | |||||
| args[i] = readResult.Value; | |||||
| } | |||||
| else | |||||
| { | |||||
| var result = ExecuteResult.FromError(InteractionCommandError.BadArgs, $"Expected Wild Card Capture, got component value"); | |||||
| await InvokeModuleEvent(context, result).ConfigureAwait(false); | |||||
| return result; | |||||
| } | |||||
| var result = ExecuteResult.FromError(InteractionCommandError.BadArgs, $"Argument type and parameter type didn't match (Wild Card capture/Component value)"); | |||||
| await InvokeModuleEvent(context, result).ConfigureAwait(false); | |||||
| return result; | |||||
| } | } | ||||
| TypeConverterResult readResult; | |||||
| if (isCapture) | |||||
| readResult = await parameter.TypeReader.ReadAsync(context, wildcardCaptures.ElementAt(i), services).ConfigureAwait(false); | |||||
| else | else | ||||
| readResult = await parameter.TypeConverter.ReadAsync(context, data, services).ConfigureAwait(false); | |||||
| if (!readResult.IsSuccess) | |||||
| { | { | ||||
| if(!parameter.IsRouteSegmentParameter) | |||||
| { | |||||
| var readResult = await parameter.TypeConverter.ReadAsync(context, data, services).ConfigureAwait(false); | |||||
| if (!readResult.IsSuccess) | |||||
| { | |||||
| await InvokeModuleEvent(context, readResult).ConfigureAwait(false); | |||||
| return readResult; | |||||
| } | |||||
| args[i] = readResult.Value; | |||||
| } | |||||
| else | |||||
| { | |||||
| var result = ExecuteResult.FromError(InteractionCommandError.BadArgs, $"Expected component value, got Wild Card capture."); | |||||
| await InvokeModuleEvent(context, result).ConfigureAwait(false); | |||||
| return result; | |||||
| } | |||||
| await InvokeModuleEvent(context, readResult).ConfigureAwait(false); | |||||
| return readResult; | |||||
| } | } | ||||
| args[i] = readResult.Value; | |||||
| } | } | ||||
| return await RunAsync(context, args, services).ConfigureAwait(false); | return await RunAsync(context, args, services).ConfigureAwait(false); | ||||