diff options
author | 2021-09-04 22:54:16 -0400 | |
---|---|---|
committer | 2021-09-04 22:54:16 -0400 | |
commit | 7d5b420662496e1eeadf8bf10e4da3994591bdd9 (patch) | |
tree | 352803974a6e2b891b1a4b8e5fc6750ed6ad3b6e /bot/exts/halloween/timeleft.py | |
parent | Merge pull request #844 from python-discord/jb3/update-k8s-path (diff) |
Move AoC and Hacktoberfest into events folder
Moves Advent of Code and Hacktoberfest into an events
folder. Although these are roughly associated with holidays,
they are standalone events that we have participated in
in the past.
Therefore they're being moved to an events folder
separate from the "fun" or "holidays" folders.
Diffstat (limited to 'bot/exts/halloween/timeleft.py')
-rw-r--r-- | bot/exts/halloween/timeleft.py | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/bot/exts/halloween/timeleft.py b/bot/exts/halloween/timeleft.py deleted file mode 100644 index 55109599..00000000 --- a/bot/exts/halloween/timeleft.py +++ /dev/null @@ -1,67 +0,0 @@ -import logging -from datetime import datetime - -from discord.ext import commands - -from bot.bot import Bot - -log = logging.getLogger(__name__) - - -class TimeLeft(commands.Cog): - """A Cog that tells you how long left until Hacktober is over!""" - - def in_hacktober(self) -> bool: - """Return True if the current time is within Hacktoberfest.""" - _, end, start = self.load_date() - - now = datetime.utcnow() - - return start <= now <= end - - @staticmethod - def load_date() -> tuple[datetime, datetime, datetime]: - """Return of a tuple of the current time and the end and start times of the next October.""" - now = datetime.utcnow() - year = now.year - if now.month > 10: - year += 1 - end = datetime(year, 11, 1, 12) # November 1st 12:00 (UTC-12:00) - start = datetime(year, 9, 30, 10) # September 30th 10:00 (UTC+14:00) - return now, end, start - - @commands.command() - async def timeleft(self, ctx: commands.Context) -> None: - """ - Calculates the time left until the end of Hacktober. - - Whilst in October, displays the days, hours and minutes left. - Only displays the days left until the beginning and end whilst in a different month. - - This factors in that Hacktoberfest starts when it is October anywhere in the world - and ends with the same rules. It treats the start as UTC+14:00 and the end as - UTC-12. - """ - now, end, start = self.load_date() - diff = end - now - days, seconds = diff.days, diff.seconds - if self.in_hacktober(): - minutes = seconds // 60 - hours, minutes = divmod(minutes, 60) - - await ctx.send( - f"There are {days} days, {hours} hours and {minutes}" - f" minutes left until the end of Hacktober." - ) - else: - start_diff = start - now - start_days = start_diff.days - await ctx.send( - f"It is not currently Hacktober. However, the next one will start in {start_days} days " - f"and will finish in {days} days." - ) - - -def setup(bot: Bot) -> None: - """Load the Time Left Cog.""" - bot.add_cog(TimeLeft()) |