diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py index 7b54717f9..acd7898fd 100644 --- a/discord/ext/commands/core.py +++ b/discord/ext/commands/core.py @@ -693,22 +693,25 @@ class Command(_BaseCommand): return value @property - def clean_params(self): - """OrderedDict[:class:`str`, :class:`inspect.Parameter`]: - Retrieves the parameter OrderedDict without the context or self parameters. + def clean_params(self) -> Dict[str, inspect.Parameter]: + """Dict[:class:`str`, :class:`inspect.Parameter`]: + Retrieves the parameter dictionary without the context or self parameters. Useful for inspecting signature. """ result = self.params.copy() if self.cog is not None: # first parameter is self - result.popitem(last=False) + try: + del result[next(iter(result))] + except StopIteration: + raise ValueError("missing 'self' parameter") from None try: # first/second parameter is context - result.popitem(last=False) - except Exception: - raise ValueError('Missing context parameter') from None + del result[next(iter(result))] + except StopIteration: + raise ValueError("missing 'context' parameter") from None return result