diff options
-rw-r--r-- | slack/config.py | 7 | ||||
-rw-r--r-- | slack/slack_message.py | 11 | ||||
-rw-r--r-- | typings/slack_api/slack_conversations_history.pyi | 8 | ||||
-rw-r--r-- | typings/slack_api/slack_conversations_replies.pyi | 2 |
4 files changed, 27 insertions, 1 deletions
diff --git a/slack/config.py b/slack/config.py index 9cca910..e7d9937 100644 --- a/slack/config.py +++ b/slack/config.py @@ -123,6 +123,13 @@ class SlackConfigSectionLook: " :]", ) + self.thread_broadcast_prefix = WeeChatOption( + self._section, + "thread_broadcast_prefix", + "prefix to distinguish thread messages that were also sent to the channel, when thread_messages_in_channel is enabled", + "+ ", + ) + self.color_nicks_in_nicklist = WeeChatOption( self._section, "color_nicks_in_nicklist", diff --git a/slack/slack_message.py b/slack/slack_message.py index 1d61950..e304a9d 100644 --- a/slack/slack_message.py +++ b/slack/slack_message.py @@ -135,6 +135,10 @@ class SlackMessage: return self.thread_ts is not None and not self.is_thread_parent @property + def is_thread_broadcast(self) -> bool: + return self._message_json.get("subtype") == "thread_broadcast" + + @property def parent_message(self) -> Optional[SlackMessage]: if not self.is_reply or self.thread_ts is None: return None @@ -546,7 +550,12 @@ class SlackMessage: if not parent_message: return "" - text = f"[{parent_message.hash}]" + broadcast_text = ( + shared.config.look.thread_broadcast_prefix.value + if self.is_thread_broadcast + else "" + ) + text = f"[{broadcast_text}{parent_message.hash}]" return with_color(nick_color(str(parent_message.hash)), text) + " " def _create_thread_string(self) -> str: diff --git a/typings/slack_api/slack_conversations_history.pyi b/typings/slack_api/slack_conversations_history.pyi index bf81c15..944d367 100644 --- a/typings/slack_api/slack_conversations_history.pyi +++ b/typings/slack_api/slack_conversations_history.pyi @@ -3,6 +3,7 @@ from __future__ import annotations from typing import Dict, List from slack_api.slack_common import SlackErrorResponse +from slack_api.slack_conversations_replies import SlackMessageThreadCommon from slack_rtm.slack_rtm_message import SlackMessageRtm from typing_extensions import Literal, NotRequired, TypedDict, final @@ -331,6 +332,12 @@ class SlackMessageThreadParentSubscribed(SlackMessageThreadParentCommon): class SlackMessageThreadParentSubscribedFinal(SlackMessageThreadParentSubscribed): pass +@final +class SlackMessageThreadBroadcast(SlackMessageThreadCommon): + subtype: Literal["thread_broadcast"] + root: SlackMessageThreadParentCommon + # TODO: team is missing in response + class SlackMessageWithFiles(SlackMessageCommon): user: str files: List[SlackMessageFile] @@ -439,6 +446,7 @@ SlackMessage = ( | SlackMessageThreadParentCommon | SlackMessageThreadParentNotSubscribedFinal | SlackMessageThreadParentSubscribedFinal + | SlackMessageThreadBroadcast | SlackMessageWithFilesFinal | SlackMessageSubtypeHuddleThreadFinal | SlackMessageSubtypeBotMessageFinal diff --git a/typings/slack_api/slack_conversations_replies.pyi b/typings/slack_api/slack_conversations_replies.pyi index 4e4fd4c..fd6ff0c 100644 --- a/typings/slack_api/slack_conversations_replies.pyi +++ b/typings/slack_api/slack_conversations_replies.pyi @@ -3,6 +3,7 @@ from typing import List from slack_api.slack_common import SlackErrorResponse, SlackResponseMetadata from slack_api.slack_conversations_history import ( SlackMessageStandardCommon, + SlackMessageThreadBroadcast, SlackMessageThreadParentNotSubscribedFinal, SlackMessageThreadParentSubscribedFinal, ) @@ -21,6 +22,7 @@ class SlackConversationsRepliesSuccessResponse(TypedDict): messages: List[ SlackMessageThreadParentNotSubscribedFinal | SlackMessageThreadParentSubscribedFinal + | SlackMessageThreadBroadcast | SlackMessageThread ] has_more: bool |