aboutsummaryrefslogtreecommitdiff
path: root/discord/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'discord/utils.py')
-rw-r--r--discord/utils.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/discord/utils.py b/discord/utils.py
index 9f8f856a..d9e7bddd 100644
--- a/discord/utils.py
+++ b/discord/utils.py
@@ -106,6 +106,24 @@ def snowflake_time(id):
"""Returns the creation date in UTC of a discord id."""
return datetime.datetime.utcfromtimestamp(((int(id) >> 22) + DISCORD_EPOCH) / 1000)
+def time_snowflake(datetime_obj, high=False):
+ """Returns a numeric snowflake pretending to be created at the given date.
+
+ When using as the lower end of a range, use time_snowflake(high=False) - 1 to be inclusive, high=True to be exclusive
+ When using as the higher end of a range, use time_snowflake(high=True) + 1 to be inclusive, high=False to be exclusive
+
+ Parameters
+ -----------
+ datetime_obj
+ A timezone-naive datetime object representing UTC time.
+ high
+ Whether or not to set the lower 22 bit to high or low.
+ """
+ unix_seconds = (datetime_obj - type(datetime_obj)(1970, 1, 1)).total_seconds()
+ discord_millis = int(unix_seconds * 1000 - DISCORD_EPOCH)
+
+ return (discord_millis << 22) + (2**22-1 if high else 0)
+
def find(predicate, seq):
"""A helper to return the first element found in the sequence
that meets the predicate. For example: ::