Skip to content

Commit f60e37c

Browse files
feat(web-api): add chat_{appendStream|startStream|stopStream} methods (#1745)
Co-authored-by: William Bergamin <wbergamin@salesforce.com>
1 parent ed1893d commit f60e37c

File tree

4 files changed

+299
-80
lines changed

4 files changed

+299
-80
lines changed

slack_sdk/web/async_client.py

Lines changed: 95 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2620,6 +2620,26 @@ async def channels_unarchive(
26202620

26212621
# --------------------------
26222622

2623+
async def chat_appendStream(
2624+
self,
2625+
*,
2626+
channel: str,
2627+
ts: str,
2628+
markdown_text: str,
2629+
**kwargs,
2630+
) -> AsyncSlackResponse:
2631+
"""Appends text to an existing streaming conversation.
2632+
https://api.slack.com/methods/chat.appendStream
2633+
"""
2634+
kwargs.update(
2635+
{
2636+
"channel": channel,
2637+
"ts": ts,
2638+
"markdown_text": markdown_text,
2639+
}
2640+
)
2641+
return await self.api_call("chat.appendStream", params=kwargs)
2642+
26232643
async def chat_delete(
26242644
self,
26252645
*,
@@ -2824,6 +2844,81 @@ async def chat_scheduleMessage(
28242844
# NOTE: intentionally using json over params for the API methods using blocks/attachments
28252845
return await self.api_call("chat.scheduleMessage", json=kwargs)
28262846

2847+
async def chat_scheduledMessages_list(
2848+
self,
2849+
*,
2850+
channel: Optional[str] = None,
2851+
cursor: Optional[str] = None,
2852+
latest: Optional[str] = None,
2853+
limit: Optional[int] = None,
2854+
oldest: Optional[str] = None,
2855+
team_id: Optional[str] = None,
2856+
**kwargs,
2857+
) -> AsyncSlackResponse:
2858+
"""Lists all scheduled messages.
2859+
https://api.slack.com/methods/chat.scheduledMessages.list
2860+
"""
2861+
kwargs.update(
2862+
{
2863+
"channel": channel,
2864+
"cursor": cursor,
2865+
"latest": latest,
2866+
"limit": limit,
2867+
"oldest": oldest,
2868+
"team_id": team_id,
2869+
}
2870+
)
2871+
return await self.api_call("chat.scheduledMessages.list", params=kwargs)
2872+
2873+
async def chat_startStream(
2874+
self,
2875+
*,
2876+
channel: str,
2877+
thread_ts: Optional[str] = None,
2878+
markdown_text: Optional[str] = None,
2879+
unfurl_links: Optional[bool] = None,
2880+
unfurl_media: Optional[bool] = None,
2881+
**kwargs,
2882+
) -> AsyncSlackResponse:
2883+
"""Starts a new streaming conversation.
2884+
https://api.slack.com/methods/chat.startStream
2885+
"""
2886+
kwargs.update(
2887+
{
2888+
"channel": channel,
2889+
"thread_ts": thread_ts,
2890+
"markdown_text": markdown_text,
2891+
"unfurl_links": unfurl_links,
2892+
"unfurl_media": unfurl_media,
2893+
}
2894+
)
2895+
return await self.api_call("chat.startStream", params=kwargs)
2896+
2897+
async def chat_stopStream(
2898+
self,
2899+
*,
2900+
channel: str,
2901+
ts: str,
2902+
markdown_text: Optional[str] = None,
2903+
blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None,
2904+
metadata: Optional[Union[Dict, Metadata]] = None,
2905+
**kwargs,
2906+
) -> AsyncSlackResponse:
2907+
"""Stops a streaming conversation.
2908+
https://api.slack.com/methods/chat.stopStream
2909+
"""
2910+
kwargs.update(
2911+
{
2912+
"channel": channel,
2913+
"ts": ts,
2914+
"markdown_text": markdown_text,
2915+
"blocks": blocks,
2916+
"metadata": metadata,
2917+
}
2918+
)
2919+
_parse_web_class_objects(kwargs)
2920+
return await self.api_call("chat.stopStream", params=kwargs)
2921+
28272922
async def chat_unfurl(
28282923
self,
28292924
*,
@@ -2904,32 +2999,6 @@ async def chat_update(
29042999
# NOTE: intentionally using json over params for API methods using blocks/attachments
29053000
return await self.api_call("chat.update", json=kwargs)
29063001

2907-
async def chat_scheduledMessages_list(
2908-
self,
2909-
*,
2910-
channel: Optional[str] = None,
2911-
cursor: Optional[str] = None,
2912-
latest: Optional[str] = None,
2913-
limit: Optional[int] = None,
2914-
oldest: Optional[str] = None,
2915-
team_id: Optional[str] = None,
2916-
**kwargs,
2917-
) -> AsyncSlackResponse:
2918-
"""Lists all scheduled messages.
2919-
https://api.slack.com/methods/chat.scheduledMessages.list
2920-
"""
2921-
kwargs.update(
2922-
{
2923-
"channel": channel,
2924-
"cursor": cursor,
2925-
"latest": latest,
2926-
"limit": limit,
2927-
"oldest": oldest,
2928-
"team_id": team_id,
2929-
}
2930-
)
2931-
return await self.api_call("chat.scheduledMessages.list", params=kwargs)
2932-
29333002
async def conversations_acceptSharedInvite(
29343003
self,
29353004
*,

slack_sdk/web/client.py

Lines changed: 95 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2610,6 +2610,26 @@ def channels_unarchive(
26102610

26112611
# --------------------------
26122612

2613+
def chat_appendStream(
2614+
self,
2615+
*,
2616+
channel: str,
2617+
ts: str,
2618+
markdown_text: str,
2619+
**kwargs,
2620+
) -> SlackResponse:
2621+
"""Appends text to an existing streaming conversation.
2622+
https://api.slack.com/methods/chat.appendStream
2623+
"""
2624+
kwargs.update(
2625+
{
2626+
"channel": channel,
2627+
"ts": ts,
2628+
"markdown_text": markdown_text,
2629+
}
2630+
)
2631+
return self.api_call("chat.appendStream", params=kwargs)
2632+
26132633
def chat_delete(
26142634
self,
26152635
*,
@@ -2814,6 +2834,81 @@ def chat_scheduleMessage(
28142834
# NOTE: intentionally using json over params for the API methods using blocks/attachments
28152835
return self.api_call("chat.scheduleMessage", json=kwargs)
28162836

2837+
def chat_scheduledMessages_list(
2838+
self,
2839+
*,
2840+
channel: Optional[str] = None,
2841+
cursor: Optional[str] = None,
2842+
latest: Optional[str] = None,
2843+
limit: Optional[int] = None,
2844+
oldest: Optional[str] = None,
2845+
team_id: Optional[str] = None,
2846+
**kwargs,
2847+
) -> SlackResponse:
2848+
"""Lists all scheduled messages.
2849+
https://api.slack.com/methods/chat.scheduledMessages.list
2850+
"""
2851+
kwargs.update(
2852+
{
2853+
"channel": channel,
2854+
"cursor": cursor,
2855+
"latest": latest,
2856+
"limit": limit,
2857+
"oldest": oldest,
2858+
"team_id": team_id,
2859+
}
2860+
)
2861+
return self.api_call("chat.scheduledMessages.list", params=kwargs)
2862+
2863+
def chat_startStream(
2864+
self,
2865+
*,
2866+
channel: str,
2867+
thread_ts: Optional[str] = None,
2868+
markdown_text: Optional[str] = None,
2869+
unfurl_links: Optional[bool] = None,
2870+
unfurl_media: Optional[bool] = None,
2871+
**kwargs,
2872+
) -> SlackResponse:
2873+
"""Starts a new streaming conversation.
2874+
https://api.slack.com/methods/chat.startStream
2875+
"""
2876+
kwargs.update(
2877+
{
2878+
"channel": channel,
2879+
"thread_ts": thread_ts,
2880+
"markdown_text": markdown_text,
2881+
"unfurl_links": unfurl_links,
2882+
"unfurl_media": unfurl_media,
2883+
}
2884+
)
2885+
return self.api_call("chat.startStream", params=kwargs)
2886+
2887+
def chat_stopStream(
2888+
self,
2889+
*,
2890+
channel: str,
2891+
ts: str,
2892+
markdown_text: Optional[str] = None,
2893+
blocks: Optional[Union[str, Sequence[Union[Dict, Block]]]] = None,
2894+
metadata: Optional[Union[Dict, Metadata]] = None,
2895+
**kwargs,
2896+
) -> SlackResponse:
2897+
"""Stops a streaming conversation.
2898+
https://api.slack.com/methods/chat.stopStream
2899+
"""
2900+
kwargs.update(
2901+
{
2902+
"channel": channel,
2903+
"ts": ts,
2904+
"markdown_text": markdown_text,
2905+
"blocks": blocks,
2906+
"metadata": metadata,
2907+
}
2908+
)
2909+
_parse_web_class_objects(kwargs)
2910+
return self.api_call("chat.stopStream", params=kwargs)
2911+
28172912
def chat_unfurl(
28182913
self,
28192914
*,
@@ -2894,32 +2989,6 @@ def chat_update(
28942989
# NOTE: intentionally using json over params for API methods using blocks/attachments
28952990
return self.api_call("chat.update", json=kwargs)
28962991

2897-
def chat_scheduledMessages_list(
2898-
self,
2899-
*,
2900-
channel: Optional[str] = None,
2901-
cursor: Optional[str] = None,
2902-
latest: Optional[str] = None,
2903-
limit: Optional[int] = None,
2904-
oldest: Optional[str] = None,
2905-
team_id: Optional[str] = None,
2906-
**kwargs,
2907-
) -> SlackResponse:
2908-
"""Lists all scheduled messages.
2909-
https://api.slack.com/methods/chat.scheduledMessages.list
2910-
"""
2911-
kwargs.update(
2912-
{
2913-
"channel": channel,
2914-
"cursor": cursor,
2915-
"latest": latest,
2916-
"limit": limit,
2917-
"oldest": oldest,
2918-
"team_id": team_id,
2919-
}
2920-
)
2921-
return self.api_call("chat.scheduledMessages.list", params=kwargs)
2922-
29232992
def conversations_acceptSharedInvite(
29242993
self,
29252994
*,

0 commit comments

Comments
 (0)