diff options
| author | 2019-12-30 17:10:16 +0000 | |
|---|---|---|
| committer | 2019-12-30 17:10:16 +0000 | |
| commit | e1f8e8a52431ce23cd6cc1f7f8750be44a720b13 (patch) | |
| tree | 004226d071ed9d87b49e14c144730118afae6e6d /modules/user_time.py | |
| parent | add missing closing paren to bitbot's User Agent (diff) | |
| signature | ||
add time-localise export in user_time, to timezone localise a datetime
Diffstat (limited to 'modules/user_time.py')
| -rw-r--r-- | modules/user_time.py | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/modules/user_time.py b/modules/user_time.py index 19ed4b22..d17c2a52 100644 --- a/modules/user_time.py +++ b/modules/user_time.py @@ -15,6 +15,9 @@ class LocationType(enum.Enum): class Module(ModuleManager.BaseModule): _name = "Time" + def on_load(self): + self.exports.add("time-localise", self.time_localise) + def _find_setting(self, event): query = None target_user = None @@ -41,6 +44,15 @@ class Module(ModuleManager.BaseModule): else: return LocationType.NAME, event["args"], None + def _timezoned(self, dt, timezone): + dt = dt.replace(tzinfo=pytz.timezone(timezone)) + utc_offset = (dt.utcoffset().total_seconds()/60)/60 + tz = "UTC" + if not utc_offset == 0.0: + if utc_offset > 0: + tz += "+" + tz += "%g" % utc_offset + return "%s %s" % (utils.datetime.datetime_human(dt), tz) @utils.hook("received.command.time") @utils.kwarg("help", "Get the time for you or someone else") @@ -51,14 +63,7 @@ class Module(ModuleManager.BaseModule): type, name, timezone = self._find_setting(event) if not timezone == None: - dt = datetime.datetime.now(tz=pytz.timezone(timezone)) - utc_offset = (dt.utcoffset().total_seconds()/60)/60 - tz = "UTC" - if not utc_offset == 0.0: - if utc_offset > 0: - tz += "+" - tz += "%g" % utc_offset - human = utils.datetime.datetime_human(dt) + human = self._timezoned_now(datetime.datetime.now(), timezone) out = None if type == LocationType.USER: @@ -74,3 +79,10 @@ class Module(ModuleManager.BaseModule): out = NOLOCATION_NAME event["stderr"].write(out % name) + + def time_localise(self, user, dt): + location = user.get_setting("location", None) + timezone = "UTC" + if not location == None: + timezone = location["timezone"] + return self._timezoned(dt, timezone) |
