From 65e540316545c9edb0d81a45ad0a18d0c1aec203 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Thu, 28 May 2015 13:51:01 -0400 Subject: [PATCH] Merge consecutive messages with the same author Signed-off-by: Anna Schumaker --- slack/channels.py | 9 ++++++++- slack/chat.py | 15 ++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/slack/channels.py b/slack/channels.py index 310bad1..5d83359 100644 --- a/slack/channels.py +++ b/slack/channels.py @@ -60,7 +60,14 @@ def history(channel, timestamp): m_list = [] for message in ret["messages"]: - m_list += [ chat.Message(message) ] + msg = chat.Message(message) + if len(m_list) == 0: + m_list += [ msg ] + elif m_list[-1].user() == msg.user(): + m_list[-1].merge(msg) + else: + m_list += [ msg ] + m_list.sort() if len(m_list) > 0: diff --git a/slack/chat.py b/slack/chat.py index 4be52f4..0e6b542 100644 --- a/slack/chat.py +++ b/slack/chat.py @@ -13,19 +13,28 @@ class Message: self.__ts = json["ts"] self.__time = datetime.fromtimestamp(float(self.__ts)) self.__user = users.info(json["user"]) - self.__text = json["text"].encode("utf-8").decode("latin-1") + self.__text = [ json["text"].encode("utf-8").decode("latin-1") ] def __lt__(self, other): return self.__time < other.__time def __str__(self): - text = "\n ".join(textwrap.wrap(self.__text)) + lines = [] + for line in self.__text: + lines += [ "" ] + textwrap.wrap(line) + text = "\n ".join(lines) time = self.__time.strftime("%I:%M:%S %p") - return "\n%s | %s:\n\n %s\n" % (time, self.__user, text) + 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 + def postMessage(channel, text):