From 6eac18fb0080132e42285b0976205d2bb6d36848 Mon Sep 17 00:00:00 2001 From: Trygve Aaberge Date: Mon, 16 Oct 2023 00:05:17 +0200 Subject: Check if closed IMs/MPIMs have unread messages on start Sometimes an IM/MPIM can have unread messages even when is_open is false, so we have to check the history if there are any unread messages. --- slack/slack_workspace.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'slack') diff --git a/slack/slack_workspace.py b/slack/slack_workspace.py index eb26b8e..bde1b4d 100644 --- a/slack/slack_workspace.py +++ b/slack/slack_workspace.py @@ -270,9 +270,21 @@ class SlackWorkspace: async def _conversation_if_should_open(self, info: SlackUsersConversations): conversation = await self.conversations[info["id"]] - if conversation.should_open(): - sort_key = await conversation.sort_key() - return sort_key, conversation + if not conversation.should_open(): + if conversation.type != "im" and conversation.type != "mpim": + return + + if conversation.last_read == SlackTs("0.0"): + history = await self.api.fetch_conversations_history(conversation) + else: + history = await self.api.fetch_conversations_history_after( + conversation, conversation.last_read + ) + if not history["messages"]: + return + + sort_key = await conversation.sort_key() + return sort_key, conversation async def _connect_ws(self, url: str): proxy = Proxy() -- cgit