aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2023-12-21 23:42:36 +0100
committerTrygve Aaberge <trygveaa@gmail.com>2024-02-18 11:32:54 +0100
commitc05d66e21a6e946b3fa0b1a48835860d1bb511a1 (patch)
tree605901140656447fe80a36c2982227e432e1df8f
parentaafcb6472607dfae714a025435e1f8081ac8299d (diff)
downloadwee-slack-c05d66e21a6e946b3fa0b1a48835860d1bb511a1.tar.gz
Support color rich text elements
-rw-r--r--slack/slack_message.py4
-rw-r--r--tests/test_render_blocks.py15
-rw-r--r--typings/slack_api/slack_conversations_history.pyi6
3 files changed, 25 insertions, 0 deletions
diff --git a/slack/slack_message.py b/slack/slack_message.py
index 9674a4e..1e52229 100644
--- a/slack/slack_message.py
+++ b/slack/slack_message.py
@@ -1041,6 +1041,10 @@ class SlackMessage:
return element["url"]
elif element["type"] == "emoji":
return get_emoji(element["name"], element.get("skin_tone"))
+ elif element["type"] == "color":
+ rgb_int = int(element["value"].lstrip("#"), 16)
+ weechat_color = weechat.info_get("color_rgb2term", str(rgb_int))
+ return f"{element['value']} {with_color(weechat_color, '■')}"
elif element["type"] == "channel":
return PendingMessageItem(self, "conversation", element["channel_id"])
elif element["type"] == "user":
diff --git a/tests/test_render_blocks.py b/tests/test_render_blocks.py
index cd5442e..6b1fc0f 100644
--- a/tests/test_render_blocks.py
+++ b/tests/test_render_blocks.py
@@ -428,6 +428,21 @@ cases: List[Case] = [
"<[color:bold]><[color:italic]>`*_~all styles~_*`<[color:-italic]><[color:-bold]>"
],
},
+ {
+ "blocks": [
+ {
+ "type": "rich_text",
+ "block_id": "M23r4",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [{"type": "color", "value": "#FFAA00"}],
+ }
+ ],
+ }
+ ],
+ "rendered": ["#FFAA00 <[color:16755200]>■<[color:reset]>"],
+ },
]
diff --git a/typings/slack_api/slack_conversations_history.pyi b/typings/slack_api/slack_conversations_history.pyi
index 1714d35..ac6fe6b 100644
--- a/typings/slack_api/slack_conversations_history.pyi
+++ b/typings/slack_api/slack_conversations_history.pyi
@@ -35,6 +35,11 @@ class SlackMessageBlockRichTextElementEmoji(TypedDict):
skin_tone: NotRequired[int]
@final
+class SlackMessageBlockRichTextElementColor(TypedDict):
+ type: Literal["color"]
+ value: str
+
+@final
class SlackMessageBlockRichTextElementChannel(TypedDict):
type: Literal["channel"]
channel_id: str
@@ -58,6 +63,7 @@ SlackMessageBlockRichTextElement = (
SlackMessageBlockRichTextElementText
| SlackMessageBlockRichTextElementLink
| SlackMessageBlockRichTextElementEmoji
+ | SlackMessageBlockRichTextElementColor
| SlackMessageBlockRichTextElementChannel
| SlackMessageBlockRichTextElementUser
| SlackMessageBlockRichTextElementUsergroup