diff --git a/src/util.py b/src/util.py index 7dddf4d..671296b 100644 --- a/src/util.py +++ b/src/util.py @@ -25,13 +25,14 @@ number = "(-?[0-9]+(?:\.[0-9]+)?)(" + "|".join(prefixes.keys()) + ")?" # from here: https://github.com/Rapptz/RoboDanny/blob/18b92ae2f53927aedebc25fb5eca02c8f6d7a874/cogs/utils/time.py short_timedelta_regex = re.compile(f""" -(?:(?P{number})(?:years?|y))? # e.g. 2y -(?:(?P{number})(?:months?|mo))? # e.g. 2months -(?:(?P{number})(?:weeks?|w))? # e.g. 10w -(?:(?P{number})(?:days?|d))? # e.g. 14d -(?:(?P{number})(?:hours?|h))? # e.g. 12h -(?:(?P{number})(?:minutes?|m))? # e.g. 10m -(?:(?P{number})(?:seconds?|s))? # e.g. 15s """, re.VERBOSE) +(?:(?P{number})(?:years?|y))? # e.g. 2y +(?:(?P{number})(?:months?|mo))? # e.g. 2months +(?:(?P{number})(?:fortnights?|fn|f))? # e.g. 10fn +(?:(?P{number})(?:weeks?|w))? # e.g. 10w +(?:(?P{number})(?:days?|d))? # e.g. 14d +(?:(?P{number})(?:hours?|h))? # e.g. 12h +(?:(?P{number})(?:minutes?|m))? # e.g. 10m +(?:(?P{number})(?:seconds?|s))? # e.g. 15s """, re.VERBOSE) def parse_prefixed(s): match = re.match(number, s) @@ -45,6 +46,8 @@ def parse_short_timedelta(text): match = short_timedelta_regex.fullmatch(text) if match is None or not match.group(0): raise ValueError("parse failed") data = { k: parse_prefixed(v) if v else 0 for k, v in match.groupdict().items() } + data["weeks"] += data["fortnights"] * 2 + del data["fortnights"] return datetime.datetime.now(tz=datetime.timezone.utc) + relativedelta(**data) cal = parsedatetime.Calendar()