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]): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user