Fixed type reader/converter parsing exception (#3084)

This commit is contained in:
Suiram1701
2025-03-28 21:12:29 +01:00
committed by GitHub
parent 6f623a65e4
commit 88cfbe5453
3 changed files with 6 additions and 7 deletions

View File

@@ -17,9 +17,9 @@ namespace Discord.Interactions
_ => Task.FromResult(TypeConverterResult.FromError(InteractionCommandError.ConvertFailed, $"{option.Type} doesn't have a convertible value.")) _ => Task.FromResult(TypeConverterResult.FromError(InteractionCommandError.ConvertFailed, $"{option.Type} doesn't have a convertible value."))
}; };
} }
catch (InvalidCastException castEx) catch (Exception ex) when (ex is FormatException or InvalidCastException)
{ {
return Task.FromResult(TypeConverterResult.FromError(castEx)); return Task.FromResult(TypeConverterResult.FromError(ex));
} }
} }
} }

View File

@@ -41,7 +41,6 @@ namespace Discord.Interactions
public override Task<TypeConverterResult> ReadAsync(IInteractionContext context, IApplicationCommandInteractionDataOption option, IServiceProvider services) public override Task<TypeConverterResult> ReadAsync(IInteractionContext context, IApplicationCommandInteractionDataOption option, IServiceProvider services)
{ {
object value; object value;
if (option.Value is Optional<object> optional) if (option.Value is Optional<object> optional)
value = optional.IsSpecified ? optional.Value : default(T); value = optional.IsSpecified ? optional.Value : default(T);
else else
@@ -52,9 +51,9 @@ namespace Discord.Interactions
var converted = Convert.ChangeType(value, typeof(T)); var converted = Convert.ChangeType(value, typeof(T));
return Task.FromResult(TypeConverterResult.FromSuccess(converted)); return Task.FromResult(TypeConverterResult.FromSuccess(converted));
} }
catch (InvalidCastException castEx) catch (Exception ex) when (ex is FormatException or InvalidCastException)
{ {
return Task.FromResult(TypeConverterResult.FromError(castEx)); return Task.FromResult(TypeConverterResult.FromError(ex));
} }
} }
} }

View File

@@ -13,9 +13,9 @@ namespace Discord.Interactions
var converted = Convert.ChangeType(option, typeof(T)); var converted = Convert.ChangeType(option, typeof(T));
return Task.FromResult(TypeConverterResult.FromSuccess(converted)); return Task.FromResult(TypeConverterResult.FromSuccess(converted));
} }
catch (InvalidCastException castEx) catch (Exception ex) when (ex is FormatException or InvalidCastException)
{ {
return Task.FromResult(TypeConverterResult.FromError(castEx)); return Task.FromResult(TypeConverterResult.FromError(ex));
} }
} }
} }