diff options
author | Trygve Aaberge <trygveaa@gmail.com> | 2023-12-21 23:42:36 +0100 |
---|---|---|
committer | Trygve Aaberge <trygveaa@gmail.com> | 2024-02-18 11:32:54 +0100 |
commit | c05d66e21a6e946b3fa0b1a48835860d1bb511a1 (patch) | |
tree | 605901140656447fe80a36c2982227e432e1df8f | |
parent | aafcb6472607dfae714a025435e1f8081ac8299d (diff) | |
download | wee-slack-c05d66e21a6e946b3fa0b1a48835860d1bb511a1.tar.gz |
Support color rich text elements
-rw-r--r-- | slack/slack_message.py | 4 | ||||
-rw-r--r-- | tests/test_render_blocks.py | 15 | ||||
-rw-r--r-- | typings/slack_api/slack_conversations_history.pyi | 6 |
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 |