Add ability to set a flag description. #99
@ -1234,15 +1234,25 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
ctx.command = original
|
||||
|
||||
def _param_to_options(
|
||||
self, name: str, annotation: Any, required: bool, varadic: bool
|
||||
self, name: str, annotation: Any, required: bool, varadic: bool, description: Optional[str] = None
|
||||
) -> List[Optional[ApplicationCommandInteractionDataOption]]:
|
||||
|
||||
if description is not None:
|
||||
self.option_descriptions[name] = description
|
||||
|
||||
description = self.option_descriptions[name]
|
||||
origin = getattr(annotation, "__origin__", None)
|
||||
|
||||
if inspect.isclass(annotation) and issubclass(annotation, FlagConverter):
|
||||
return [
|
||||
param
|
||||
for name, flag in annotation.get_flags().items()
|
||||
for param in self._param_to_options(
|
||||
name, flag.annotation, required=flag.required, varadic=flag.annotation is tuple
|
||||
name,
|
||||
flag.annotation,
|
||||
required=flag.required,
|
||||
varadic=flag.annotation is tuple,
|
||||
description=flag.description if flag.description is not MISSING else None,
|
||||
)
|
||||
]
|
||||
|
||||
@ -1258,7 +1268,7 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
"type": 3,
|
||||
"name": name,
|
||||
"required": required,
|
||||
"description": self.option_descriptions[name],
|
||||
"description": description,
|
||||
}
|
||||
|
||||
if origin is None:
|
||||
@ -1284,7 +1294,11 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
|
||||
elif all([arg in application_option_channel_types for arg in annotation.__args__]):
|
||||
option["type"] = 7
|
||||
option["channel_types"] = [discord_value for arg in annotation.__args__ for discord_value in application_option_channel_types[arg]]
|
||||
option["channel_types"] = [
|
||||
discord_value
|
||||
for arg in annotation.__args__
|
||||
for discord_value in application_option_channel_types[arg]
|
||||
]
|
||||
|
||||
elif origin is Literal:
|
||||
literal_values = annotation.__args__
|
||||
|
@ -81,6 +81,8 @@ class Flag:
|
||||
------------
|
||||
name: :class:`str`
|
||||
The name of the flag.
|
||||
description: :class:`str`
|
||||
The description of the flag.
|
||||
aliases: List[:class:`str`]
|
||||
The aliases of the flag name.
|
||||
attribute: :class:`str`
|
||||
@ -97,6 +99,7 @@ class Flag:
|
||||
"""
|
||||
|
||||
name: str = MISSING
|
||||
description: str = MISSING
|
||||
aliases: List[str] = field(default_factory=list)
|
||||
attribute: str = MISSING
|
||||
annotation: Any = MISSING
|
||||
@ -117,6 +120,7 @@ class Flag:
|
||||
def flag(
|
||||
*,
|
||||
name: str = MISSING,
|
||||
description: str = MISSING,
|
||||
aliases: List[str] = MISSING,
|
||||
default: Any = MISSING,
|
||||
max_args: int = MISSING,
|
||||
@ -129,6 +133,8 @@ def flag(
|
||||
------------
|
||||
name: :class:`str`
|
||||
The flag name. If not given, defaults to the attribute name.
|
||||
description: :class:`str`
|
||||
Description of the flag for the slash commands options. The default value is `'no description'`.
|
||||
aliases: List[:class:`str`]
|
||||
Aliases to the flag name. If not given no aliases are set.
|
||||
default: Any
|
||||
@ -143,7 +149,9 @@ def flag(
|
||||
Whether multiple given values overrides the previous value. The default
|
||||
value depends on the annotation given.
|
||||
"""
|
||||
return Flag(name=name, aliases=aliases, default=default, max_args=max_args, override=override)
|
||||
return Flag(
|
||||
name=name, description=description, aliases=aliases, default=default, max_args=max_args, override=override
|
||||
)
|
||||
|
||||
|
||||
def validate_flag_name(name: str, forbidden: Set[str]):
|
||||
|
Loading…
x
Reference in New Issue
Block a user