From 81b2624c1a33766bfe0a80c216d4800b11113f57 Mon Sep 17 00:00:00 2001 From: Renato Byrro Date: Wed, 19 Mar 2025 21:45:03 -0300 Subject: [PATCH] Fix Slack bug when sending msg to a private channel (#313) --- toolkits/slack/arcade_slack/tools/chat.py | 24 ++--------------------- toolkits/slack/pyproject.toml | 2 +- toolkits/slack/tests/test_chat.py | 2 +- 3 files changed, 4 insertions(+), 24 deletions(-) diff --git a/toolkits/slack/arcade_slack/tools/chat.py b/toolkits/slack/arcade_slack/tools/chat.py index 3ce610ec..bd1a446f 100644 --- a/toolkits/slack/arcade_slack/tools/chat.py +++ b/toolkits/slack/arcade_slack/tools/chat.py @@ -25,7 +25,6 @@ from arcade_slack.utils import ( convert_relative_datetime_to_unix_timestamp, enrich_message_datetime, extract_conversation_metadata, - format_conversations_as_csv, format_users, get_user_by_username, retrieve_conversations_by_user_ids, @@ -120,28 +119,9 @@ async def send_message_to_channel( else "" ) - # Step 1: Retrieve the list of channels - channels_response = await slackClient.conversations_list() - channel_id = None - for channel in channels_response["channels"]: - response_channel_name = ( - "" if not isinstance(channel.get("name"), str) else channel["name"].lower() - ) - if response_channel_name == channel_name.lower(): - channel_id = channel["id"] - break + channel = await get_channel_metadata_by_name(context=context, channel_name=channel_name) + channel_id = channel["id"] - if not channel_id: - raise RetryableToolError( - "Channel not found", - developer_message=f"Channel with name '{channel_name}' not found.", - additional_prompt_content=format_conversations_as_csv({ - "channels": channels_response["channels"], - }), - retry_after_ms=500, # Play nice with Slack API rate limits - ) - - # Step 2: Send the message to the channel response = await slackClient.chat_postMessage(channel=channel_id, text=message) except SlackApiError as e: diff --git a/toolkits/slack/pyproject.toml b/toolkits/slack/pyproject.toml index 2bf9b8fb..d317acef 100644 --- a/toolkits/slack/pyproject.toml +++ b/toolkits/slack/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "arcade_slack" -version = "0.4.0" +version = "0.4.1" description = "Slack tools for LLMs" authors = ["Arcade "] diff --git a/toolkits/slack/tests/test_chat.py b/toolkits/slack/tests/test_chat.py index 07f8b166..afb0a53f 100644 --- a/toolkits/slack/tests/test_chat.py +++ b/toolkits/slack/tests/test_chat.py @@ -82,7 +82,7 @@ async def test_send_dm_to_inexistent_user(mock_context, mock_chat_slack_client): async def test_send_message_to_channel(mock_context, mock_chat_slack_client): mock_chat_slack_client.conversations_list.return_value = { "ok": True, - "channels": [{"id": "C12345", "name": "general"}], + "channels": [{"id": "C12345", "name": "general", "is_member": True, "is_group": True}], } mock_slack_response = Mock(spec=AsyncSlackResponse) mock_slack_response.data = {"ok": True}