diff options
author | Trygve Aaberge <trygveaa@gmail.com> | 2023-01-15 02:51:03 +0100 |
---|---|---|
committer | Trygve Aaberge <trygveaa@gmail.com> | 2024-02-18 11:32:53 +0100 |
commit | 0f891a587492d46ffe13ce950350ff6324b64ddf (patch) | |
tree | 42f96f50fb9cf0e6f76361cb807f5287cf5d337b | |
parent | 38d2e4154b31d1a95084c53eabf09af03c323a19 (diff) | |
download | wee-slack-0f891a587492d46ffe13ce950350ff6324b64ddf.tar.gz |
Use display name or real name
-rw-r--r-- | slack/config.py | 12 | ||||
-rw-r--r-- | slack/slack_user.py | 12 | ||||
-rw-r--r-- | typings/slack_api/slack_users_info.pyi | 44 |
3 files changed, 44 insertions, 24 deletions
diff --git a/slack/config.py b/slack/config.py index a1ab999..d4a36bd 100644 --- a/slack/config.py +++ b/slack/config.py @@ -38,8 +38,8 @@ class SlackConfigSectionColor: self.reaction_suffix = WeeChatOption( self._section, "reaction_suffix", - "text color for the [:wave:(@user)] suffix on messages that have " - "reactions attached to them.", + "text color for the [:wave:(@user)] suffix on messages that have" + " reactions attached to them.", WeeChatColor("darkgray"), ) @@ -79,6 +79,14 @@ class SlackConfigSectionWorkspace: 30, ) + self.use_real_names = self._create_option( + "use_real_names", + "use real names as the nicks for all users. When this is" + " false, display names will be used if set, with a fallback" + " to the real name if display name is not set", + False, + ) + def _create_option( self, name: str, diff --git a/slack/slack_user.py b/slack/slack_user.py index 8fcd445..e5d066b 100644 --- a/slack/slack_user.py +++ b/slack/slack_user.py @@ -16,8 +16,9 @@ class SlackUser: return self.workspace.api @property - def nick(self): - return self._info["name"] + def nick(self) -> str: + nick = self._nick_from_profile() + return nick.replace(" ", "") async def init(self): info = await self._api.fetch_users_info(self) @@ -25,3 +26,10 @@ class SlackUser: # TODO: Handle error raise Exception("Failed fetching user info") self._info = info["user"] + + def _nick_from_profile(self) -> str: + if self.workspace.config.use_real_names.value: + return self._info["real_name"] + + display_name = self._info["profile"].get("display_name") + return display_name or self._info["real_name"] diff --git a/typings/slack_api/slack_users_info.pyi b/typings/slack_api/slack_users_info.pyi index 433255e..59057e2 100644 --- a/typings/slack_api/slack_users_info.pyi +++ b/typings/slack_api/slack_users_info.pyi @@ -1,43 +1,47 @@ from __future__ import annotations -from typing import Dict, Generic, List, Literal, TypedDict, TypeVar, final +from typing import Dict, Generic, List, Literal, Optional, TypedDict, TypeVar, final + +from typing_extensions import NotRequired T = TypeVar("T") class SlackProfileCommon(TypedDict): - title: str - phone: str - skype: str - real_name: str - real_name_normalized: str - display_name: str - display_name_normalized: str - fields: Dict # pyright: ignore [reportMissingTypeArgument] - status_text: str - status_emoji: str - status_emoji_display_info: List # pyright: ignore [reportMissingTypeArgument] - status_expiration: int - avatar_hash: str + title: NotRequired[Optional[str]] + phone: NotRequired[Optional[str]] + skype: NotRequired[Optional[str]] + real_name: NotRequired[Optional[str]] + real_name_normalized: NotRequired[Optional[str]] + display_name: NotRequired[Optional[str]] + display_name_normalized: NotRequired[Optional[str]] + # fields: NotRequired[Optional[Dict]] # pyright: ignore [reportMissingTypeArgument] + status_text: NotRequired[Optional[str]] + status_emoji: NotRequired[Optional[str]] + # status_emoji_display_info: NotRequired[ + # Optional[List] # pyright: ignore [reportMissingTypeArgument] + # ] + status_expiration: NotRequired[Optional[int]] + avatar_hash: NotRequired[Optional[str]] image_24: str image_32: str image_48: str image_72: str image_192: str image_512: str - status_text_canonical: str + status_text_canonical: NotRequired[Optional[str]] team: str @final class SlackProfilePerson(SlackProfileCommon): - email: str + email: NotRequired[Optional[str]] @final class SlackProfileBot(SlackProfileCommon): - api_app_id: str - always_active: bool + api_app_id: NotRequired[Optional[str]] + always_active: NotRequired[Optional[bool]] image_original: str - is_custom_image: bool - bot_id: str + is_custom_image: NotRequired[Optional[bool]] + bot_id: NotRequired[Optional[str]] image_1024: str class SlackUsersInfoCommon(TypedDict): |