1
0
Fork 0
nemubot/modules/sleepytime.py

51 lines
1.8 KiB
Python

# 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)