From faad035fa24b39bb25da1233a779bfdbd547764a Mon Sep 17 00:00:00 2001 From: z03h <7235242+z03h@users.noreply.github.com> Date: Sat, 16 Jul 2022 19:27:47 -0700 Subject: [PATCH] [commands] change Range to raise BadArgument for invalid values --- discord/ext/commands/converter.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/discord/ext/commands/converter.py b/discord/ext/commands/converter.py index 968c9e70e..32f0fbb5c 100644 --- a/discord/ext/commands/converter.py +++ b/discord/ext/commands/converter.py @@ -1055,8 +1055,9 @@ else: Inside a :class:`HybridCommand` this functions equivalently to :class:`discord.app_commands.Range`. - If the converter fails then :class:`~.ext.commands.RangeError` is raised to - the appropriate error handlers. + If the value cannot be converted to the provided type or is outside the given range, + :class:`~.ext.commands.BadArgument` or :class:`~.ext.commands.RangeError` is raised to + the appropriate error handlers respectively. .. versionadded:: 2.0 @@ -1085,7 +1086,13 @@ else: raise TypeError('minimum cannot be larger than maximum') async def convert(self, ctx: Context[BotT], value: str) -> Union[int, float]: - count = converted = self.annotation(value) + try: + count = converted = self.annotation(value) + except ValueError: + raise BadArgument( + f'Converting to "{self.annotation.__name__}" failed for parameter "{ctx.current_parameter.name}".' + ) + if self.annotation is str: count = len(value)