# coding=utf-8 """as http://sleepyti.me/, give you the best time to go to bed""" import re import imp from datetime import datetime, timedelta, timezone from nemubot.hooks import hook nemubotversion = 3.4 from nemubot.module.more import Response def help_full(): return ("If you would like to sleep soon, use !sleepytime to know the best" " time to wake up; use !sleepytime hh:mm if you want to wake up at" " hh:mm") @hook.command("sleepytime") def cmd_sleep(msg): if len(msg.args) and re.match("[0-9]{1,2}[h':.,-]([0-9]{1,2})?[m'\":.,-]?", msg.args[0]) is not None: # First, parse the hour p = re.match("([0-9]{1,2})[h':.,-]([0-9]{1,2})?[m':.,-]?", msg.args[0]) f = [datetime(datetime.now(timezone.utc).year, datetime.now(timezone.utc).month, datetime.now(timezone.utc).day, hour=int(p.group(1)))] if p.group(2) is not None: f[0] += timedelta(minutes=int(p.group(2))) g = list() for i in range(6): f.append(f[i] - timedelta(hours=1, minutes=30)) g.append(f[i+1].strftime("%H:%M")) return Response("You should try to fall asleep at one of the following" " times: %s" % ', '.join(g), channel=msg.channel) # Just get awake times else: f = [datetime.now(timezone.utc) + timedelta(minutes=15)] g = list() for i in range(6): f.append(f[i] + timedelta(hours=1, minutes=30)) g.append(f[i+1].strftime("%H:%M")) return Response("If you head to bed right now, you should try to wake" " up at one of the following times: %s" % ', '.join(g), channel=msg.channel)