Add Option converter, fix default optional, fix help command

This commit is contained in:
Gnome
2021-08-31 18:44:32 +01:00
parent 1a22df6228
commit 7c83c335d1
4 changed files with 45 additions and 11 deletions

View File

@@ -77,6 +77,7 @@ __all__ = (
'GuildStickerConverter',
'clean_content',
'Greedy',
'Option',
'run_converters',
)
@@ -96,6 +97,9 @@ T_co = TypeVar('T_co', covariant=True)
CT = TypeVar('CT', bound=discord.abc.GuildChannel)
TT = TypeVar('TT', bound=discord.Thread)
NT = TypeVar('NT', bound=str)
DT = TypeVar('DT', bound=str)
@runtime_checkable
class Converter(Protocol[T_co]):
@@ -1004,6 +1008,20 @@ class Greedy(List[T]):
return cls(converter=converter)
if TYPE_CHECKING:
def Option(default: T = inspect.Parameter.empty, *, name: str = None, description: str) -> T: ...
else:
class Option(Generic[T, DT, NT]):
description: DT
name: Optional[NT]
default: Union[T, inspect.Parameter.empty]
__slots__ = ('name', 'default', 'description',)
def __init__(self, default: T = inspect.Parameter.empty, *, name: NT = None, description: DT) -> None:
self.description = description
self.default = default
self.name = name
def _convert_to_bool(argument: str) -> bool:
lowered = argument.lower()