diff options
Diffstat (limited to 'discord/utils.py')
| -rw-r--r-- | discord/utils.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/discord/utils.py b/discord/utils.py index 32d8feb4..22a0c40c 100644 --- a/discord/utils.py +++ b/discord/utils.py @@ -503,6 +503,13 @@ async def sane_wait_for(futures, *, timeout): return done +def compute_timedelta(dt: datetime.datetime): + if dt.tzinfo is None: + dt = dt.astimezone() + now = datetime.datetime.now(datetime.timezone.utc) + return max((dt - now).total_seconds(), 0) + + async def sleep_until(when: datetime.datetime, result: Optional[T] = None) -> Optional[T]: """|coro| @@ -520,11 +527,8 @@ async def sleep_until(when: datetime.datetime, result: Optional[T] = None) -> Op result: Any If provided is returned to the caller when the coroutine completes. """ - if when.tzinfo is None: - when = when.astimezone() - now = datetime.datetime.now(datetime.timezone.utc) - delta = (when - now).total_seconds() - return await asyncio.sleep(max(delta, 0), result) + delta = compute_timedelta(when) + return await asyncio.sleep(delta, result) def utcnow() -> datetime.datetime: |