aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--slack/config.py7
-rw-r--r--slack/slack_message.py11
-rw-r--r--typings/slack_api/slack_conversations_history.pyi8
-rw-r--r--typings/slack_api/slack_conversations_replies.pyi2
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