aboutsummaryrefslogtreecommitdiffstats
path: root/slack/slack_message.py
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2023-01-28 23:40:56 +0100
committerTrygve Aaberge <trygveaa@gmail.com>2024-02-18 11:32:53 +0100
commit633c881c3b8732dddc5b4abdbe111769b72137e3 (patch)
tree4fe5726f9c6fd09678ae76ccb023852715ebbe2a /slack/slack_message.py
parent2ba6473b41a9a742d4611a8f1259aa36a769ed7e (diff)
downloadwee-slack-633c881c3b8732dddc5b4abdbe111769b72137e3.tar.gz
Support unfurling usergroup names
Diffstat (limited to 'slack/slack_message.py')
-rw-r--r--slack/slack_message.py27
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)