diff --git a/discord/ext/tasks/__init__.py b/discord/ext/tasks/__init__.py index 6ed0273e3..ba11d6322 100644 --- a/discord/ext/tasks/__init__.py +++ b/discord/ext/tasks/__init__.py @@ -37,6 +37,7 @@ from typing import ( Type, TypeVar, Union, + overload, ) import aiohttp @@ -176,7 +177,7 @@ class Loop(Generic[LF]): if self.count is not None and self.count <= 0: raise ValueError('count must be greater than 0 or None.') - self.change_interval(seconds=seconds, minutes=minutes, hours=hours, time=time) + self.change_interval(seconds=seconds, minutes=minutes, hours=hours, time=time) # type: ignore self._last_iteration_failed = False self._last_iteration: datetime.datetime = MISSING self._next_iteration = None @@ -710,6 +711,22 @@ class Loop(Generic[LF]): ret = sorted(set(ret)) # de-dupe and sort times return ret + @overload + def change_interval( + self, + *, + seconds: float = 0, + minutes: float = 0, + hours: float = 0, + ) -> None: ... + + @overload + def change_interval( + self, + *, + time: Union[datetime.time, Sequence[datetime.time]], + ) -> None: ... + def change_interval( self, *, @@ -777,6 +794,28 @@ class Loop(Generic[LF]): self._handle.recalculate(self._next_iteration) +@overload +def loop( + *, + seconds: float = 0, + minutes: float = 0, + hours: float = 0, + count: Optional[int] = None, + reconnect: bool = True, + name: Optional[str] = None, +) -> Callable[[LF], Loop[LF]]: ... + + +@overload +def loop( + *, + time: Union[datetime.time, Sequence[datetime.time]], + count: Optional[int] = None, + reconnect: bool = True, + name: Optional[str] = None, +) -> Callable[[LF], Loop[LF]]: ... + + def loop( *, seconds: float = MISSING,