New module Chronos to look at next courses
This commit is contained in:
parent
d4def8c026
commit
309615cdc7
62
modules/chronos.py
Normal file
62
modules/chronos.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# coding=utf-8
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from datetime import timedelta
|
||||||
|
from urllib.parse import quote
|
||||||
|
|
||||||
|
from tools import web
|
||||||
|
|
||||||
|
nemubotversion = 3.3
|
||||||
|
|
||||||
|
def help_tiny ():
|
||||||
|
"""Line inserted in the response to the command !help"""
|
||||||
|
return "Gets informations about current and next Épita courses"
|
||||||
|
|
||||||
|
def help_full ():
|
||||||
|
return "!chronos [spé] : gives current and next courses."
|
||||||
|
|
||||||
|
|
||||||
|
def cmd_chronos(msg):
|
||||||
|
url = CONF.getNode("server")["url"]
|
||||||
|
if len(msg.cmds) > 1:
|
||||||
|
url += "&class=" + quote(msg.cmds[1])
|
||||||
|
|
||||||
|
res = Response(msg.sender, channel=msg.channel, nomore="Je n'ai pas d'autre cours à afficher")
|
||||||
|
response = web.getXML(url)
|
||||||
|
if response is not None:
|
||||||
|
courses = response.getNodes("course")
|
||||||
|
now = datetime.now()
|
||||||
|
tomorrow = now + timedelta(days=1)
|
||||||
|
for c in courses:
|
||||||
|
idc = c.getFirstNode("id").getContent()
|
||||||
|
crs = c.getFirstNode("title").getContent()
|
||||||
|
start = c.getFirstNode("start").getDate()
|
||||||
|
end = c.getFirstNode("end").getDate()
|
||||||
|
where = c.getFirstNode("where").getContent()
|
||||||
|
teacher = c.getFirstNode("teacher").getContent()
|
||||||
|
students = c.getFirstNode("students").getContent()
|
||||||
|
|
||||||
|
if now > start:
|
||||||
|
title = "Actuellement "
|
||||||
|
msg = "\x03\x02" + crs + "\x03\x02 jusqu'"
|
||||||
|
if end < tomorrow:
|
||||||
|
msg += "à \x03\x02" + end.strftime("%H:%M")
|
||||||
|
else:
|
||||||
|
msg += "au \x03\x02" + end.strftime("%a %d à %H:%M")
|
||||||
|
msg += "\x03\x02 en \x03\x02" + where + "\x03\x02"
|
||||||
|
else:
|
||||||
|
title = "Prochainement "
|
||||||
|
duration = (end - start).total_seconds() / 60
|
||||||
|
|
||||||
|
msg = "\x03\x02" + crs + "\x03\x02 le \x03\x02" + end.strftime("%a %d à %H:%M") + "\x03\x02 pour " + "%dh%02d" % (int(duration / 60), duration % 60) + " en \x03\x02" + where + "\x03\x02"
|
||||||
|
|
||||||
|
if teacher != "":
|
||||||
|
msg += " avec " + teacher
|
||||||
|
if students != "":
|
||||||
|
msg += " pour les " + students
|
||||||
|
|
||||||
|
res.append_message(msg, title)
|
||||||
|
else:
|
||||||
|
res.append_message("Aucun cours n'a été trouvé")
|
||||||
|
|
||||||
|
return res
|
6
modules/chronos.xml
Normal file
6
modules/chronos.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<nemubotmodule name="chronos">
|
||||||
|
<server url="http://chronos.23.tf/index.php?xml" />
|
||||||
|
<message type="cmd" name="chronos" call="cmd_chronos" />
|
||||||
|
<message type="cmd" name="Χρονος" call="cmd_chronos" />
|
||||||
|
</nemubotmodule>
|
Loading…
x
Reference in New Issue
Block a user