diff --git a/docs/reference/async_app.html b/docs/reference/async_app.html
index ad9192253..9a87b0f32 100644
--- a/docs/reference/async_app.html
+++ b/docs/reference/async_app.html
@@ -5248,11 +5248,18 @@
Class variables
self.channel_id = channel_id
self.thread_ts = thread_ts
- async def __call__(self, status: str) -> AsyncSlackResponse:
+ async def __call__(
+ self,
+ status: str,
+ loading_messages: Optional[List[str]] = None,
+ **kwargs,
+ ) -> AsyncSlackResponse:
return await self.client.assistant_threads_setStatus(
- status=status,
channel_id=self.channel_id,
thread_ts=self.thread_ts,
+ status=status,
+ loading_messages=loading_messages,
+ **kwargs,
)
diff --git a/docs/reference/context/set_status/async_set_status.html b/docs/reference/context/set_status/async_set_status.html
index 6a15d70ae..06efd6447 100644
--- a/docs/reference/context/set_status/async_set_status.html
+++ b/docs/reference/context/set_status/async_set_status.html
@@ -70,11 +70,18 @@
self.channel_id = channel_id
self.thread_ts = thread_ts
- async def __call__(self, status: str) -> AsyncSlackResponse:
+ async def __call__(
+ self,
+ status: str,
+ loading_messages: Optional[List[str]] = None,
+ **kwargs,
+ ) -> AsyncSlackResponse:
return await self.client.assistant_threads_setStatus(
- status=status,
channel_id=self.channel_id,
thread_ts=self.thread_ts,
+ status=status,
+ loading_messages=loading_messages,
+ **kwargs,
)
diff --git a/docs/reference/context/set_status/index.html b/docs/reference/context/set_status/index.html
index 9e53da9a5..aa11815e3 100644
--- a/docs/reference/context/set_status/index.html
+++ b/docs/reference/context/set_status/index.html
@@ -81,11 +81,18 @@
self.channel_id = channel_id
self.thread_ts = thread_ts
- def __call__(self, status: str) -> SlackResponse:
+ def __call__(
+ self,
+ status: str,
+ loading_messages: Optional[List[str]] = None,
+ **kwargs,
+ ) -> SlackResponse:
return self.client.assistant_threads_setStatus(
- status=status,
channel_id=self.channel_id,
thread_ts=self.thread_ts,
+ status=status,
+ loading_messages=loading_messages,
+ **kwargs,
)
diff --git a/docs/reference/context/set_status/set_status.html b/docs/reference/context/set_status/set_status.html
index 0ec8df5da..e4d839f64 100644
--- a/docs/reference/context/set_status/set_status.html
+++ b/docs/reference/context/set_status/set_status.html
@@ -70,11 +70,18 @@
self.channel_id = channel_id
self.thread_ts = thread_ts
- def __call__(self, status: str) -> SlackResponse:
+ def __call__(
+ self,
+ status: str,
+ loading_messages: Optional[List[str]] = None,
+ **kwargs,
+ ) -> SlackResponse:
return self.client.assistant_threads_setStatus(
- status=status,
channel_id=self.channel_id,
thread_ts=self.thread_ts,
+ status=status,
+ loading_messages=loading_messages,
+ **kwargs,
)
diff --git a/docs/reference/index.html b/docs/reference/index.html
index 430e36813..e3a2b1169 100644
--- a/docs/reference/index.html
+++ b/docs/reference/index.html
@@ -5786,11 +5786,18 @@ Class variables
self.channel_id = channel_id
self.thread_ts = thread_ts
- def __call__(self, status: str) -> SlackResponse:
+ def __call__(
+ self,
+ status: str,
+ loading_messages: Optional[List[str]] = None,
+ **kwargs,
+ ) -> SlackResponse:
return self.client.assistant_threads_setStatus(
- status=status,
channel_id=self.channel_id,
thread_ts=self.thread_ts,
+ status=status,
+ loading_messages=loading_messages,
+ **kwargs,
)
diff --git a/slack_bolt/context/set_status/async_set_status.py b/slack_bolt/context/set_status/async_set_status.py
index 926ec6de8..e2c451f46 100644
--- a/slack_bolt/context/set_status/async_set_status.py
+++ b/slack_bolt/context/set_status/async_set_status.py
@@ -1,3 +1,5 @@
+from typing import List, Optional
+
from slack_sdk.web.async_client import AsyncWebClient
from slack_sdk.web.async_slack_response import AsyncSlackResponse
@@ -17,9 +19,16 @@ def __init__(
self.channel_id = channel_id
self.thread_ts = thread_ts
- async def __call__(self, status: str) -> AsyncSlackResponse:
+ async def __call__(
+ self,
+ status: str,
+ loading_messages: Optional[List[str]] = None,
+ **kwargs,
+ ) -> AsyncSlackResponse:
return await self.client.assistant_threads_setStatus(
- status=status,
channel_id=self.channel_id,
thread_ts=self.thread_ts,
+ status=status,
+ loading_messages=loading_messages,
+ **kwargs,
)
diff --git a/slack_bolt/context/set_status/set_status.py b/slack_bolt/context/set_status/set_status.py
index 8df0d49a7..0ed612e16 100644
--- a/slack_bolt/context/set_status/set_status.py
+++ b/slack_bolt/context/set_status/set_status.py
@@ -1,3 +1,5 @@
+from typing import List, Optional
+
from slack_sdk import WebClient
from slack_sdk.web import SlackResponse
@@ -17,9 +19,16 @@ def __init__(
self.channel_id = channel_id
self.thread_ts = thread_ts
- def __call__(self, status: str) -> SlackResponse:
+ def __call__(
+ self,
+ status: str,
+ loading_messages: Optional[List[str]] = None,
+ **kwargs,
+ ) -> SlackResponse:
return self.client.assistant_threads_setStatus(
- status=status,
channel_id=self.channel_id,
thread_ts=self.thread_ts,
+ status=status,
+ loading_messages=loading_messages,
+ **kwargs,
)
diff --git a/tests/slack_bolt/context/test_set_status.py b/tests/slack_bolt/context/test_set_status.py
new file mode 100644
index 000000000..fe998df5e
--- /dev/null
+++ b/tests/slack_bolt/context/test_set_status.py
@@ -0,0 +1,38 @@
+import pytest
+from slack_sdk import WebClient
+from slack_sdk.web import SlackResponse
+
+from slack_bolt.context.set_status import SetStatus
+from tests.mock_web_api_server import cleanup_mock_web_api_server, setup_mock_web_api_server
+
+
+class TestSetStatus:
+ def setup_method(self):
+ setup_mock_web_api_server(self)
+ valid_token = "xoxb-valid"
+ mock_api_server_base_url = "http://localhost:8888"
+ self.web_client = WebClient(token=valid_token, base_url=mock_api_server_base_url)
+
+ def teardown_method(self):
+ cleanup_mock_web_api_server(self)
+
+ def test_set_status(self):
+ set_status = SetStatus(client=self.web_client, channel_id="C111", thread_ts="123.123")
+ response: SlackResponse = set_status("Thinking...")
+ assert response.status_code == 200
+
+ def test_set_status_loading_messages(self):
+ set_status = SetStatus(client=self.web_client, channel_id="C111", thread_ts="123.123")
+ response: SlackResponse = set_status(
+ status="Thinking...",
+ loading_messages=[
+ "Sitting...",
+ "Waiting...",
+ ],
+ )
+ assert response.status_code == 200
+
+ def test_set_status_invalid(self):
+ set_status = SetStatus(client=self.web_client, channel_id="C111", thread_ts="123.123")
+ with pytest.raises(TypeError):
+ set_status()
diff --git a/tests/slack_bolt_async/context/test_async_set_status.py b/tests/slack_bolt_async/context/test_async_set_status.py
new file mode 100644
index 000000000..8df34171f
--- /dev/null
+++ b/tests/slack_bolt_async/context/test_async_set_status.py
@@ -0,0 +1,45 @@
+import pytest
+from slack_sdk.web.async_client import AsyncWebClient
+from slack_sdk.web.async_slack_response import AsyncSlackResponse
+
+from slack_bolt.context.set_status.async_set_status import AsyncSetStatus
+from tests.mock_web_api_server import cleanup_mock_web_api_server_async, setup_mock_web_api_server_async
+from tests.utils import get_event_loop
+
+
+class TestAsyncSetStatus:
+ @pytest.fixture
+ def event_loop(self):
+ setup_mock_web_api_server_async(self)
+ valid_token = "xoxb-valid"
+ mock_api_server_base_url = "http://localhost:8888"
+ self.web_client = AsyncWebClient(token=valid_token, base_url=mock_api_server_base_url)
+
+ loop = get_event_loop()
+ yield loop
+ loop.close()
+ cleanup_mock_web_api_server_async(self)
+
+ @pytest.mark.asyncio
+ async def test_set_status(self):
+ set_status = AsyncSetStatus(client=self.web_client, channel_id="C111", thread_ts="123.123")
+ response: AsyncSlackResponse = await set_status("Thinking...")
+ assert response.status_code == 200
+
+ @pytest.mark.asyncio
+ async def test_set_status_loading_messages(self):
+ set_status = AsyncSetStatus(client=self.web_client, channel_id="C111", thread_ts="123.123")
+ response: AsyncSlackResponse = await set_status(
+ status="Thinking...",
+ loading_messages=[
+ "Sitting...",
+ "Waiting...",
+ ],
+ )
+ assert response.status_code == 200
+
+ @pytest.mark.asyncio
+ async def test_set_status_invalid(self):
+ set_status = AsyncSetStatus(client=self.web_client, channel_id="C111", thread_ts="123.123")
+ with pytest.raises(TypeError):
+ await set_status()