# # Copyright 2015 (c) Anna Schumaker. # from . import api from . import auth from . import users from datetime import datetime import textwrap import re def __text_parse_uid(text): res = text for uid in re.findall("<@(.*?)>", text): uid = uid.split("|")[0] user = slack.users.info(uid) res = re.sub("<@%s(.*?)>" % uid, "@%s" % user.user(), res) return res class Message: def __init__(self, json): self.__ts = json["ts"] self.__time = datetime.fromtimestamp(float(self.__ts)) self.__user = users.info(json.get("user", None)) self.__text = [ json["text"].encode("utf-8").decode("latin-1") ] def __lt__(self, other): return self.__time < other.__time def __str__(self): lines = [] for line in self.__text: line = __text_parse_uid(line) lines += [ "" ] + textwrap.wrap(line) text = "\n ".join(lines) time = self.__time.strftime("%I:%M:%S %p") return "\n%s | %s:\n%s\n" % (time, self.__user, text) def ts(self): return self.__ts def user(self): return self.__user def merge(self, msg): self.__text += msg.__text self.__ts = msg.__ts def postMessage(channel, text): api.call("chat.postMessage", token = auth.token(), channel = channel, text = text, as_user = True, parse = "full")