diff --git a/connection/xmpp.py b/connection/xmpp.py index dfdeb28..454f3df 100644 --- a/connection/xmpp.py +++ b/connection/xmpp.py @@ -4,7 +4,7 @@ from pyxmpp.client import Client from pyxmpp.jabber.muc import * from pyxmpp.interface import implements from pyxmpp.interfaces import * -from functools import partial + class MessageHandler: implements(IMessageHandlersProvider) diff --git a/modules/mensa.py b/modules/mensa.py new file mode 100644 index 0000000..55fa664 --- /dev/null +++ b/modules/mensa.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- + +from base import ModuleBase +import re +from datetime import date, timedelta +import urllib + +class Module(ModuleBase): + def __init__(self, manager): + ModuleBase.__init__(self, manager) + + def commands(self): + return [('!mensa [tomorrow]', 'Zeigt das aktuelle Menü der Mensa der Uni Lübeck an (oder das des nächsten Tages)')] + + def groupchat(self, room, nick, text, handler): + if not re.match(r'!mensa(?:\W|\Z)', text): + return + + tomorrow = re.match(r'!mensa\W+tomorrow(\W|\Z)', text) + daystr = 'heute' + day = date.today() + if tomorrow: + day += timedelta(1) + daystr = 'morgen' + datestr = day.strftime('%d.%m.') + + try: + f = urllib.urlopen(self.manager.config['mensa_url'], 'r') + except IOError: + handler.reply('Hmm, es scheint gerade keine Daten über das Mensa-Menü zu geben.') + return + + found = False + line = f.readline() + while line: + if re.search(datestr, line): + found = True + break + line = f.readline() + + if not found: + f.close() + handler.reply('%s kein Mensa-Menü... ist vielleicht Wochenende?' % daystr) + return + + meals = [] + r = re.compile(r'