[commands] Raise TypeError when Optional is used with Greedy converter

This commit is contained in:
Sebastian Law 2020-06-28 00:54:34 -07:00 committed by GitHub
parent 6b5be39cd2
commit 7a07644de3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 2 deletions

View File

@ -26,6 +26,7 @@ DEALINGS IN THE SOFTWARE.
import re
import inspect
import typing
import discord
@ -555,6 +556,9 @@ class _Greedy:
if converter is str or converter is type(None) or converter is _Greedy:
raise TypeError('Greedy[%s] is invalid.' % converter.__name__)
if getattr(converter, '__origin__', None) is typing.Union and type(None) in converter.__args__:
raise TypeError('Greedy[%r] is invalid.' % converter)
return self.__class__(converter=converter)
Greedy = _Greedy()

View File

@ -552,8 +552,8 @@ This command can be invoked any of the following ways:
unintended parsing ambiguities in your code. One technique would be to clamp down the expected syntaxes
allowed through custom converters or reordering the parameters to minimise clashes.
To help aid with some parsing ambiguities, :class:`str`, ``None`` and :data:`~ext.commands.Greedy` are
forbidden as parameters for the :data:`~ext.commands.Greedy` converter.
To help aid with some parsing ambiguities, :class:`str`, ``None``, :data:`typing.Optional` and
:data:`~ext.commands.Greedy` are forbidden as parameters for the :data:`~ext.commands.Greedy` converter.
.. _ext_commands_error_handler: