aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/utils.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/discord/utils.py b/discord/utils.py
index 83fdda2a..53eccf82 100644
--- a/discord/utils.py
+++ b/discord/utils.py
@@ -338,6 +338,24 @@ async def sane_wait_for(futures, *, timeout):
return done
+async def sleep_until(when):
+ """Sleep until a specified time.
+
+ If the time supplied is in the past this function will yield instantly.
+
+ Parameters
+ -----------
+ when: :class:`datetime.datetime`
+ The timestamp in which to sleep until.
+
+ .. versionadded:: 1.3.0
+ """
+ if when.tzinfo is None:
+ when = when.replace(tzinfo=datetime.timezone.utc)
+ now = datetime.datetime.now(datetime.timezone.utc)
+ delta = (when - now).total_seconds()
+ await asyncio.sleep(max(delta, 0))
+
def valid_icon_size(size):
"""Icons must be power of 2 within [16, 4096]."""
return not size & (size - 1) and size in range(16, 4097)