def show(self, mess, args): """timer status, logs, etc""" r = re.match("^(?P<cmd>\S+) *(?P<cargs>.+)?$", args, re.I) if not r: return "What do you wan't me to show you?" ret, user = "", User.jid2user(mess.getFrom()) cmd, cargs = r.group("cmd"), r.group("cargs") # timer commands if cmd == "timers": for desc, timer in user.get_timers(): ret += "\n- %s: %s (%s)" % (desc, timer.target_str(), timer.remaining_str()) return ret or "No timers set." # log commands elif cmd == "logs": if not cargs: for desc, ulog in user.get_logs(): ret += "\n- %s" % desc return ret or "No logs available." else: try: entries = user.get_logs(cargs).entries except KeyError: return "Couldn't find log '%s'" % cargs else: ret = "%s:" % cargs for entry in entries: ret += "\n* %s: %s" % (entry.timestamp.strftime("%b %d, %T"), entry.logtext) return ret else: return "I don't know '%s' command." % cmd
def timer(self, mess, args): """sets an alarm for you (or acks it)""" if not args: return Timer.help() user = User.jid2user(mess.getFrom()) r = re.match("^ack +(?P<timer>.*)$", args, re.I) if r: # timer ack try: user.del_timer(r.group("timer")) except KeyError: return "Timer '%s' not found." % r.group("timer") else: return "Timer acknowledged." else: # timer set try: t = user.set_timer(args) except (UserError, TimerError) as e: return str(e) else: return "Timer '%s' %s (%s)" % (t.description, t.target_str(), t.remaining_str())
def logger(self, mess, args): """keeps registers with timestamps""" if not args: return Logger.help() user = User.jid2user(mess.getFrom()) r = re.match("^del +(?P<log>.*)$", args, re.I) if r: # delete log try: user.del_log(r.group("log")) except KeyError: return "Couldn't find log '%s'." % r.group("log") else: return "Log deleted." else: # append log try: l = user.log_entry(args) except LoggerError as e: return str(e) else: return "logged."
def status_type_changed(self, jid, new_status): # Use to load users state when they become online and track them user = User.jid2user(jid) user.status = new_status