qrm2/exts/time.py

81 lines
2.9 KiB
Python

"""
Time extension for qrm
---
Copyright (C) 2021 classabbyamp, 0x5c
This file is part of qrm2 and is released under the terms of
the GNU General Public License, version 2.
"""
from datetime import datetime, timedelta
import discord.ext.commands as commands
import common as cmn
class TimeCog(commands.Cog):
offsets = [
("Y", "", timedelta(hours=-12)),
("X", "", timedelta(hours=-11)),
("W", "", timedelta(hours=-10)),
("V", "", timedelta(hours=-9)),
("U", "", timedelta(hours=-8)),
("T", "", timedelta(hours=-7)),
("S", "", timedelta(hours=-6)),
("R", "", timedelta(hours=-5)),
("Q", "", timedelta(hours=-4)),
("P", "", timedelta(hours=-3)),
("O", "", timedelta(hours=-2)),
("N", "", timedelta(hours=-1)),
("Z", "UTC", timedelta(hours=0)),
("A", "", timedelta(hours=+1)),
("B", "", timedelta(hours=+2)),
("C", "", timedelta(hours=+3)),
("D", "", timedelta(hours=+4)),
("E", "", timedelta(hours=+5)),
("F", "", timedelta(hours=+6)),
("G", "", timedelta(hours=+7)),
("H", "", timedelta(hours=+8)),
("I", "", timedelta(hours=+9)),
("K", "", timedelta(hours=+10)),
("L", "", timedelta(hours=+11)),
("M", "", timedelta(hours=+12))
]
def __init__(self, bot):
self.bot = bot
@commands.command(name="utc", aliases=["z"], category=cmn.Cats.TIME)
async def _utc_lookup(self, ctx: commands.Context):
"""Returns the current time in UTC."""
now = datetime.utcnow()
result = "**" + now.strftime("%Y-%m-%d %H:%M") + "Z**"
embed = cmn.embed_factory(ctx)
embed.title = "The current time is:"
embed.description = result
embed.colour = cmn.colours.good
await ctx.send(embed=embed)
@commands.command(name="miltime", category=cmn.Cats.TIME)
async def miltime(self, ctx: commands.Context):
"""Prints the current time in all 25 military time zones."""
time = ctx.message.created_at
embed = cmn.embed_factory(ctx)
embed.title = f"{cmn.emojis.clock} Military Time Zones Now"
embed.colour = cmn.colours.good
embed.description = "```"
embed.description += "\n".join([f"{x}: {time + z :%Y-%m-%d %H:%M} {y}" for x, y, z in self.offsets])
embed.description += "```"
embed.add_field(name="Notes", value=(
"**J** is not present in the table, and is used for local time.\n"
"The zones are referenced by their letters, using phonetics.\n"
f"You can check the NATO phonetics for a letter using the `{ctx.prefix}phonetics` command."
))
await ctx.send(embed=embed)
def setup(bot: commands.Bot):
bot.add_cog(TimeCog(bot))