Added command to get time in a different timezone
This commit is contained in:
parent
fecff7925c
commit
6e5ad99253
@ -18,6 +18,8 @@ from mpl_toolkits.basemap import Basemap
|
|||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
from dateutil.parser import parse
|
||||||
|
from copy import copy
|
||||||
|
|
||||||
config_dir = 'config/'
|
config_dir = 'config/'
|
||||||
admin_id_file = 'admin_ids'
|
admin_id_file = 'admin_ids'
|
||||||
@ -432,7 +434,9 @@ class Utils:
|
|||||||
async def get_localtime(self, ctx, timezone: str='Anchorage'):
|
async def get_localtime(self, ctx, timezone: str='Anchorage'):
|
||||||
"""Shows the current time localized to the timezone given
|
"""Shows the current time localized to the timezone given
|
||||||
This defaults to the Bot's local timezone of Anchorage Alaska USA if none are given."""
|
This defaults to the Bot's local timezone of Anchorage Alaska USA if none are given."""
|
||||||
|
|
||||||
em = discord.Embed()
|
em = discord.Embed()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
tz = pytz.timezone(timezone)
|
tz = pytz.timezone(timezone)
|
||||||
localtime = datetime.now(tz=tz)
|
localtime = datetime.now(tz=tz)
|
||||||
@ -453,6 +457,57 @@ class Utils:
|
|||||||
em.colour = discord.Colour.red()
|
em.colour = discord.Colour.red()
|
||||||
await ctx.send(embed=em)
|
await ctx.send(embed=em)
|
||||||
|
|
||||||
|
# noinspection PyUnboundLocalVariable
|
||||||
|
@commands.command(name='gettimein', aliases=['timein', 'gti'])
|
||||||
|
@commands.cooldown(1, 3, type=commands.BucketType.user)
|
||||||
|
async def get_time_in_timezone(self, ctx, timezone: str='US/Eastern', *, time: str=None):
|
||||||
|
em = discord.Embed()
|
||||||
|
description = ''
|
||||||
|
|
||||||
|
if time is None:
|
||||||
|
description += 'Time not given... using current UTC time.'
|
||||||
|
in_time = datetime.utcnow()
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
orig_time = copy(time)
|
||||||
|
for tz in pytz.all_timezones:
|
||||||
|
if tz.lower() in time.lower():
|
||||||
|
time = time.replace(tz, '')
|
||||||
|
parsed_tz = pytz.timezone(tz)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
description += 'Valid timezone not found in time string. Using UTC...'
|
||||||
|
parsed_tz = pytz.timezone('UTC')
|
||||||
|
in_time = parse(time.upper())
|
||||||
|
in_time = parsed_tz.localize(in_time)
|
||||||
|
except ValueError:
|
||||||
|
em.title = 'Can\' parse time.'
|
||||||
|
em.description = f'For some reason I can\'t parse this time string: {orig_time}\n' \
|
||||||
|
f'Examples of valid time strings are in my help documentation.\n' \
|
||||||
|
f'Please try again.'
|
||||||
|
em.colour = discord.Colour.red()
|
||||||
|
|
||||||
|
try:
|
||||||
|
out_tz = pytz.timezone(timezone)
|
||||||
|
except pytz.exceptions.UnknownTimeZoneError:
|
||||||
|
for tz in pytz.all_timezones:
|
||||||
|
if timezone.lower() in tz.lower():
|
||||||
|
out_tz = pytz.timezone(tz)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
out_tz = None
|
||||||
|
em.title = 'Unknown Timezone.'
|
||||||
|
em.colour = discord.Colour.red()
|
||||||
|
finally:
|
||||||
|
if out_tz:
|
||||||
|
out_time = in_time.astimezone(out_tz)
|
||||||
|
em.add_field(name=f'{clock_emojis[(in_time.hour % 12)]} {in_time.strftime("%c")}',
|
||||||
|
value='input', inline=False)
|
||||||
|
em.add_field(name=f'{clock_emojis[(out_time.hour % 12)]} {out_time.strftime("%c")}',
|
||||||
|
value='output', inline=False)
|
||||||
|
em.colour = self.bot.embed_color
|
||||||
|
await ctx.send(embed=em)
|
||||||
|
|
||||||
@commands.command(name='purge', aliases=['clean', 'erase'])
|
@commands.command(name='purge', aliases=['clean', 'erase'])
|
||||||
@commands.cooldown(1, 3, type=commands.BucketType.user)
|
@commands.cooldown(1, 3, type=commands.BucketType.user)
|
||||||
async def purge_messages(self, ctx, number: int=20, member: discord.Member=None):
|
async def purge_messages(self, ctx, number: int=20, member: discord.Member=None):
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
|
import discord
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
import logging
|
import logging
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@ -56,6 +57,7 @@ class Geeksbot(commands.Bot):
|
|||||||
self.guild_config = {}
|
self.guild_config = {}
|
||||||
self.infected = {}
|
self.infected = {}
|
||||||
self.TOKEN = self.bot_secrets['token']
|
self.TOKEN = self.bot_secrets['token']
|
||||||
|
self.embed_color = discord.Colour.from_rgb(49, 107, 111)
|
||||||
|
|
||||||
# async def connect_db():
|
# async def connect_db():
|
||||||
# return await asyncpg.create_pool(host=self.bot_secrets['db_con']['host'],
|
# return await asyncpg.create_pool(host=self.bot_secrets['db_con']['host'],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user