aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2023-10-15 19:19:03 +0200
committerTrygve Aaberge <trygveaa@gmail.com>2024-02-18 11:32:54 +0100
commit0e4ac01dfd41a15eeb67de08ca788e82d3736a6f (patch)
treea76e93c28d64feec685bd19da10f26b8b802a719
parent8065cf011b897de72330913c13aa11a7b3666368 (diff)
downloadwee-slack-0e4ac01dfd41a15eeb67de08ca788e82d3736a6f.tar.gz
Handle when some items are missing from the response
-rw-r--r--slack/slack_message.py22
-rw-r--r--slack/slack_workspace.py5
2 files changed, 21 insertions, 6 deletions
diff --git a/slack/slack_message.py b/slack/slack_message.py
index 4a45151..438166f 100644
--- a/slack/slack_message.py
+++ b/slack/slack_message.py
@@ -187,8 +187,13 @@ class PendingMessageItem:
try:
conversation = await self.message.workspace.conversations[self.item_id]
name = await conversation.name_with_prefix("short_name_without_padding")
- except SlackApiError as e:
- if e.response["error"] == "channel_not_found":
+ except (SlackApiError, SlackError) as e:
+ if (
+ isinstance(e, SlackApiError)
+ and e.response["error"] == "channel_not_found"
+ or isinstance(e, SlackError)
+ and e.error == "item_not_found"
+ ):
name = (
f"#{self.fallback_name}"
if self.fallback_name
@@ -207,8 +212,13 @@ class PendingMessageItem:
elif self.item_type == "user":
try:
user = await self.message.workspace.users[self.item_id]
- except SlackApiError as e:
- if e.response["error"] == "user_not_found":
+ except (SlackApiError, SlackError) as e:
+ if (
+ isinstance(e, SlackApiError)
+ and e.response["error"] == "user_not_found"
+ or isinstance(e, SlackError)
+ and e.error == "item_not_found"
+ ):
name = (
f"@{self.fallback_name}"
if self.fallback_name
@@ -235,7 +245,9 @@ class PendingMessageItem:
isinstance(e, SlackApiError)
and e.response["error"] == "invalid_auth"
or isinstance(e, SlackError)
- and e.error == "usergroup_not_found"
+ and (
+ e.error == "usergroup_not_found" or e.error == "item_not_found"
+ )
):
name = (
self.fallback_name if self.fallback_name else f"@{self.item_id}"
diff --git a/slack/slack_workspace.py b/slack/slack_workspace.py
index 0fab5b2..8c0f9a6 100644
--- a/slack/slack_workspace.py
+++ b/slack/slack_workspace.py
@@ -85,7 +85,10 @@ class SlackItem(
) -> SlackItemClass:
if items_info_task:
items_info = await items_info_task
- return self._create_item_from_info(items_info[item_id])
+ item = items_info.get(item_id)
+ if item is None:
+ raise SlackError(self.workspace, "item_not_found")
+ return self._create_item_from_info(item)
else:
return await self._item_class.create(self.workspace, item_id)