diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py index 3074e0ca0..7ca200ec6 100644 --- a/discord/ext/commands/core.py +++ b/discord/ext/commands/core.py @@ -262,26 +262,29 @@ class Command(_BaseCommand): """ self.__init__(self.callback, **dict(self.__original_kwargs__, **kwargs)) - def copy(self): - """Creates a copy of this :class:`Command`.""" - ret = self.__class__(self.callback, **self.__original_kwargs__) - ret._before_invoke = self._before_invoke - ret._after_invoke = self._after_invoke - if self.checks != ret.checks: - ret.checks = self.checks.copy() - if self._buckets != ret._buckets: - ret._buckets = self._buckets.copy() + def _ensure_assignment_on_copy(self, other): + other._before_invoke = self._before_invoke + other._after_invoke = self._after_invoke + if self.checks != other.checks: + other.checks = self.checks.copy() + if self._buckets != other._buckets: + other._buckets = self._buckets.copy() try: - ret.on_error = self.on_error + other.on_error = self.on_error except AttributeError: pass - return ret + return other + + def copy(self): + """Creates a copy of this :class:`Command`.""" + ret = self.__class__(self.callback, **self.__original_kwargs__) + return self._ensure_assignment_on_copy(ret) def _update_copy(self, kwargs): if kwargs: copy = self.__class__(self.callback, **kwargs) copy.update(**self.__original_kwargs__) - return copy + return self._ensure_assignment_on_copy(copy) else: return self.copy()