diff options
author | Trygve Aaberge <trygveaa@gmail.com> | 2023-01-28 23:40:56 +0100 |
---|---|---|
committer | Trygve Aaberge <trygveaa@gmail.com> | 2024-02-18 11:32:53 +0100 |
commit | 633c881c3b8732dddc5b4abdbe111769b72137e3 (patch) | |
tree | 4fe5726f9c6fd09678ae76ccb023852715ebbe2a /slack/slack_message.py | |
parent | 2ba6473b41a9a742d4611a8f1259aa36a769ed7e (diff) | |
download | wee-slack-633c881c3b8732dddc5b4abdbe111769b72137e3.tar.gz |
Support unfurling usergroup names
Diffstat (limited to 'slack/slack_message.py')
-rw-r--r-- | slack/slack_message.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/slack/slack_message.py b/slack/slack_message.py index 66b9a70..1cbce43 100644 --- a/slack/slack_message.py +++ b/slack/slack_message.py @@ -4,7 +4,7 @@ import re from typing import TYPE_CHECKING, List, Match, Optional from slack.shared import shared -from slack.slack_user import SlackUser, format_bot_nick +from slack.slack_user import SlackUser, SlackUsergroup, format_bot_nick from slack.task import gather from slack.util import with_color @@ -57,9 +57,9 @@ class SlackMessage: user_ids: List[str] = [ match["user"] for match in mention_matches if match["user"] ] - # usergroup_ids: List[str] = [ - # match["usergroup"] for match in mention_matches if match["usergroup"] - # ] + usergroup_ids: List[str] = [ + match["usergroup"] for match in mention_matches if match["usergroup"] + ] users_list = await gather( *(self.workspace.users[user_id] for user_id in user_ids), @@ -67,6 +67,15 @@ class SlackMessage: ) users = dict(zip(user_ids, users_list)) + usergroups_list = await gather( + *( + self.workspace.usergroups[usergroup_id] + for usergroup_id in usergroup_ids + ), + return_exceptions=True, + ) + usergroups = dict(zip(usergroup_ids, usergroups_list)) + def unfurl_ref(match: Match[str]): if match["user"]: return unfurl_user(match["user"]) @@ -86,6 +95,14 @@ class SlackMessage: ) def unfurl_usergroup(usergroup_id: str): - return f"@{usergroup_id}" + usergroup = usergroups[usergroup_id] + return ( + with_color( + shared.config.color.usergroup_mention_color.value, + "@" + usergroup.handle(), + ) + if isinstance(usergroup, SlackUsergroup) + else f"@{usergroup_id}" + ) return re_mention.sub(unfurl_ref, message) |