|
|
@@ -61,49 +61,29 @@ namespace Discord.Interactions |
|
|
|
for(var i = 0; i < paramCount; 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 |
|
|
|
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); |
|
|
|