diff options
| author | Sebastian Law <[email protected]> | 2021-05-09 20:27:43 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-05-09 23:27:43 -0400 |
| commit | 8bc489dba8b8c7ca9141e4e7f00a0e916a7c0269 (patch) | |
| tree | 98c4483f1f74eb52b9f136eb5e3dd792cd6fb5b4 /discord/utils.py | |
| parent | Typehint Widget (diff) | |
| download | discord.py-8bc489dba8b8c7ca9141e4e7f00a0e916a7c0269.tar.xz discord.py-8bc489dba8b8c7ca9141e4e7f00a0e916a7c0269.zip | |
[tasks] Add support for explicit time parameter
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: |