aboutsummaryrefslogtreecommitdiffstats
path: root/slack/slack_message.py
diff options
context:
space:
mode:
Diffstat (limited to 'slack/slack_message.py')
-rw-r--r--slack/slack_message.py26
1 files changed, 16 insertions, 10 deletions
diff --git a/slack/slack_message.py b/slack/slack_message.py
index 3c5383b..0757761 100644
--- a/slack/slack_message.py
+++ b/slack/slack_message.py
@@ -1,7 +1,7 @@
from __future__ import annotations
import re
-from typing import TYPE_CHECKING, List
+from typing import TYPE_CHECKING, List, Optional
from slack.slack_user import format_bot_nick
from slack.task import gather
@@ -23,26 +23,32 @@ class SlackMessage:
def workspace(self) -> SlackWorkspace:
return self.conversation.workspace
- async def render_message(self):
+ @property
+ def sender_user_id(self) -> Optional[str]:
+ return self._message_json.get("user")
+
+ async def render_message(self) -> str:
+ prefix_coro = self._prefix()
+ message_coro = self._unfurl_refs(self._message_json["text"])
+ prefix, message = await gather(prefix_coro, message_coro)
+ return f"{prefix}\t{message}"
+
+ async def _prefix(self) -> str:
if (
"subtype" in self._message_json
and self._message_json["subtype"] == "bot_message"
):
username = self._message_json.get("username")
if username:
- prefix = format_bot_nick(username, colorize=True)
+ return format_bot_nick(username, colorize=True)
else:
bot = await self.workspace.bots[self._message_json["bot_id"]]
- prefix = bot.nick(colorize=True)
+ return bot.nick(colorize=True)
else:
user = await self.workspace.users[self._message_json["user"]]
- prefix = user.nick(colorize=True)
-
- message = await self._unfurl_refs(self._message_json["text"])
-
- return f"{prefix}\t{message}"
+ return user.nick(colorize=True)
- async def _unfurl_refs(self, message: str):
+ async def _unfurl_refs(self, message: str) -> str:
re_user = re.compile("<@([^>]+)>")
user_ids: List[str] = re_user.findall(message)
users_list = await gather(