aboutsummaryrefslogtreecommitdiffstats
path: root/slack/slack_workspace.py
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2023-01-14 07:08:09 +0100
committerTrygve Aaberge <trygveaa@gmail.com>2024-02-18 11:32:53 +0100
commitada362c5ff8d844c06c79bc98338d5aab7de9c8b (patch)
treeb6dfcb7abd38fd63ca4f06f9a88690aaa1d659f1 /slack/slack_workspace.py
parent78e551804dfd1784f10c627dd4c8d019214b66a1 (diff)
downloadwee-slack-ada362c5ff8d844c06c79bc98338d5aab7de9c8b.tar.gz
Get user from dict instead of by function
Diffstat (limited to 'slack/slack_workspace.py')
-rw-r--r--slack/slack_workspace.py29
1 files changed, 16 insertions, 13 deletions
diff --git a/slack/slack_workspace.py b/slack/slack_workspace.py
index df99f94..5651f4a 100644
--- a/slack/slack_workspace.py
+++ b/slack/slack_workspace.py
@@ -50,6 +50,21 @@ class SlackApi:
return response
+class SlackUsers(Dict[str, Future[SlackUser]]):
+ def __init__(self, workspace: SlackWorkspace):
+ super().__init__()
+ self.workspace = workspace
+
+ def __missing__(self, key: str):
+ self[key] = create_task(self._create_user(key))
+ return self[key]
+
+ async def _create_user(self, user_id: str) -> SlackUser:
+ user = SlackUser(self.workspace, user_id)
+ await user.init()
+ return user
+
+
class SlackWorkspace:
def __init__(self, name: str):
self.name = name
@@ -57,8 +72,7 @@ class SlackWorkspace:
self.api = SlackApi(self)
self.is_connected = False
self.nick = "TODO"
- # Maybe make private, so you have to use get_user? Maybe make get_user a getter, though don't know if that's a problem since it's async
- self.users: Dict[str, Future[SlackUser]] = {}
+ self.users = SlackUsers(self)
self.conversations: Dict[str, SlackConversation] = {}
async def connect(self):
@@ -85,14 +99,3 @@ class SlackWorkspace:
# print([c["name"] for c in user_channels])
self.is_connected = True
weechat.bar_item_update("input_text")
-
- async def create_user(self, id: str) -> SlackUser:
- user = SlackUser(self, id)
- await user.init()
- return user
-
- async def get_user(self, id: str) -> SlackUser:
- if id in self.users:
- return await self.users[id]
- self.users[id] = create_task(self.create_user(id))
- return await self.users[id]