# -*- coding: utf-8 -*- from . import ModuleBase import re class Module(ModuleBase): def __init__(self, manager): ModuleBase.__init__(self, manager) def commands(self): return [ ('!topic [s[how]]', 'Zeigt das aktuelle Topic mit IDs an'), ('!topic a[dd] ', 'Fügt einen Text zum Thema des Chatraums hinzu'), ('!topic d[el[ete]] ', 'Entfernt das Topic mit der ID') ] def _reply_topic(self, handler, prefix): topic = handler.get_topic() if topic is None or topic == '': handler.reply('Es ist kein Topic gesetzt.') return topics = [s.strip() for s in topic.split('|')] idtopics = zip(range(len(topics)), topics) idtopicstrings = ["%i: %s" % t for t in idtopics] handler.reply(prefix + '\n\n' + '\n'.join(idtopicstrings)) def groupchat(self, room, nick, text, handler): if not re.match(r'!topic(?:\s|\Z)', text): return if re.match(r'!topic(?:\s+(?:s(?:how)?)?\s*)?\Z', text): self._reply_topic(handler, 'Aktuelles Topic:') return oldtopic = handler.get_topic() if re.match(r'!topic\s+a(?:dd)?\s', text): topic = re.sub(r'!topic\s+a(?:dd)?\s+', '', text) if topic == '': return if oldtopic != '' and oldtopic is not None: topic += ' | ' + oldtopic handler.set_topic(topic) self._reply_topic(handler, 'Neues Topic:') return if re.match(r'!topic\s+d(?:el(?:ete)?)?\s', text): try: topicid = int(re.sub(r'!topic\s+d(?:el(?:ete)?)?\s+', '', text)) except: return topics = [s.strip() for s in oldtopic.split('|')] if topicid < 0 or topicid >= len(topics): return del topics[topicid] handler.set_topic(' | '.join(topics)) self._reply_topic(handler, 'Neues Topic:')