aboutsummaryrefslogtreecommitdiffstats
path: root/typings
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2023-01-14 04:39:33 +0100
committerTrygve Aaberge <trygveaa@gmail.com>2024-02-18 11:32:53 +0100
commit9009fa39dd5d6c4101e2f339182285d23abf0cf3 (patch)
tree961c64296c614452510cc11f354deb78eec8c451 /typings
parent81e98c8b7049fd08886ba7099bba02130b6026a2 (diff)
downloadwee-slack-9009fa39dd5d6c4101e2f339182285d23abf0cf3.tar.gz
Fix typing for fetch info
Diffstat (limited to 'typings')
-rw-r--r--typings/slack_api.pyi175
1 files changed, 130 insertions, 45 deletions
diff --git a/typings/slack_api.pyi b/typings/slack_api.pyi
index 1f966e5..4842571 100644
--- a/typings/slack_api.pyi
+++ b/typings/slack_api.pyi
@@ -1,73 +1,158 @@
-from typing import TypedDict
+from __future__ import annotations
+from typing import List, Literal, TypedDict, final
+
+@final
class SlackTopic(TypedDict):
value: str
creator: str
last_set: int
+@final
class SlackPurpose(TypedDict):
value: str
creator: str
last_set: int
-class SlackConversationCommon(TypedDict):
- id: str
+@final
+class SlackBlockElement(TypedDict):
+ type: str
+ text: str
+
+@final
+class SlackBlockElementParent(TypedDict):
+ type: str
+ elements: List[SlackBlockElement]
+
+@final
+class SlackBlock(TypedDict):
+ type: str
+ block_id: str
+ elements: List[SlackBlockElementParent]
-class SlackConversationCommonNotIm(SlackConversationCommon):
+@final
+class SlackLatest(TypedDict):
+ client_msg_id: str
+ type: str
+ text: str
+ user: str
+ ts: str
+ blocks: List[SlackBlock]
+ team: str
+
+class SlackConversationInfoCommon(TypedDict):
+ id: str
created: int
- creator: str
is_archived: bool
+ is_org_shared: bool
+ context_team_id: str
+ last_read: str
+
+class SlackConversationInfoCommonNotIm(SlackConversationInfoCommon):
+ name: str
is_channel: bool
- is_ext_shared: bool
- is_general: bool
is_group: bool
- is_im: bool
- is_member: bool
- is_mpim: bool
- is_org_shared: bool
- is_pending_ext_shared: bool
- is_private: bool
- is_shared: bool
+ is_im: Literal[False]
+ is_general: bool
+ unlinked: int
name_normalized: str
- name: str
- num_members: int
+ is_shared: bool
+ is_pending_ext_shared: bool
+ pending_shared: List # pyright: ignore [reportMissingTypeArgument]
parent_conversation: None
- pending_connected_team_ids: list
- pending_shared: list
- previous_names: list[str]
- purpose: SlackPurpose
- shared_team_ids: list[str]
+ creator: str
+ is_ext_shared: bool
+ shared_team_ids: List[str]
+ pending_connected_team_ids: List # pyright: ignore [reportMissingTypeArgument]
+ is_member: bool
topic: SlackTopic
- unlinked: int
+ purpose: SlackPurpose
-class SlackConversationPublic(SlackConversationCommonNotIm):
- num_members: int
- previous_names: list[str]
+@final
+class SlackConversationInfoPublic(SlackConversationInfoCommonNotIm):
+ is_mpim: Literal[False]
+ is_private: Literal[False]
+ previous_names: List[str] # TODO: Check if private and mpim has this
-class SlackConversationPrivate(SlackConversationCommonNotIm):
- num_members: int
+@final
+class SlackConversationInfoPrivate(SlackConversationInfoCommonNotIm):
+ is_mpim: Literal[False]
+ is_private: Literal[True]
+ is_open: bool
-class SlackConversationMpim(SlackConversationCommonNotIm):
- num_members: int
+@final
+class SlackConversationInfoMpim(SlackConversationInfoCommonNotIm):
+ is_mpim: Literal[True]
+ is_private: Literal[True]
+ is_open: bool
-class SlackConversationGroup(SlackConversationCommonNotIm):
+@final
+class SlackConversationInfoIm(SlackConversationInfoCommon):
+ is_im: Literal[True]
+ user: str
+ latest: SlackLatest
+ unread_count: int
+ unread_count_display: int
is_open: bool
- last_read: str
priority: int
-class SlackConversationIm(SlackConversationCommon):
- created: int
- is_archived: bool
- is_im: bool
- is_org_shared: bool
- is_user_deleted: bool
- priority: int
- user: str
+SlackConversationInfoNotIm = (
+ SlackConversationInfoPublic
+ | SlackConversationInfoPrivate
+ | SlackConversationInfoMpim
+)
+SlackConversationInfo = SlackConversationInfoNotIm | SlackConversationInfoIm
-SlackConversationNotIm = (
- SlackConversationPublic
- | SlackConversationPrivate
- | SlackConversationMpim
- | SlackConversationGroup
+@final
+class SlackConversationInfoErrorResponse(TypedDict):
+ ok: Literal[False]
+ error: str
+
+@final
+class SlackConversationInfoPublicSuccessResponse(TypedDict):
+ ok: Literal[True]
+ channel: SlackConversationInfoPublic
+
+@final
+class SlackConversationInfoPrivateSuccessResponse(TypedDict):
+ ok: Literal[True]
+ channel: SlackConversationInfoPrivate
+
+@final
+class SlackConversationInfoMpimSuccessResponse(TypedDict):
+ ok: Literal[True]
+ channel: SlackConversationInfoMpim
+
+@final
+class SlackConversationInfoImSuccessResponse(TypedDict):
+ ok: Literal[True]
+ channel: SlackConversationInfoIm
+
+@final
+class SlackConversationInfoNotImSuccessResponse(TypedDict):
+ ok: Literal[True]
+ channel: SlackConversationInfoNotIm
+
+@final
+class SlackConversationInfoSuccessResponse(TypedDict):
+ ok: Literal[True]
+ channel: SlackConversationInfo
+
+SlackConversationInfoPublicResponse = (
+ SlackConversationInfoPublicSuccessResponse | SlackConversationInfoErrorResponse
+)
+SlackConversationInfoPrivateResponse = (
+ SlackConversationInfoPrivateSuccessResponse | SlackConversationInfoErrorResponse
+)
+SlackConversationInfoMpimResponse = (
+ SlackConversationInfoMpimSuccessResponse | SlackConversationInfoErrorResponse
+)
+SlackConversationInfoImResponse = (
+ SlackConversationInfoImSuccessResponse | SlackConversationInfoErrorResponse
+)
+SlackConversationInfoNotImResponse = (
+ SlackConversationInfoNotImSuccessResponse | SlackConversationInfoErrorResponse
+)
+SlackConversationInfoResponse = (
+ SlackConversationInfoSuccessResponse | SlackConversationInfoErrorResponse
)
-SlackConversationInfo = SlackConversationNotIm | SlackConversationIm