
    dhG                        S SK Jr  S SKJrJr  S SKJr  S SKJr  S SK	J
r
Jr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  \(       a  S SKJr  O S SKJr   " S S\5      rg! \ a     Nf = f)    )annotations)TYPE_CHECKINGList)BaseTool)BaseToolkit)
ConfigDictField)SlackGetChannel)SlackGetMessage)SlackScheduleMessage)SlackSendMessage)login)	WebClientc                  F    \ rS rSr% Sr\" \S9rS\S'   \	" SS9r
SS jrS	rg
)SlackToolkit   a  Toolkit for interacting with Slack.

Parameters:
    client: The Slack client.

Setup:
    Install ``slack_sdk`` and set environment variable ``SLACK_USER_TOKEN``.

    .. code-block:: bash

        pip install -U slack_sdk
        export SLACK_USER_TOKEN="your-user-token"

Key init args:
    client: slack_sdk.WebClient
        The Slack client.

Instantiate:
    .. code-block:: python

        from langchain_community.agent_toolkits import SlackToolkit

        toolkit = SlackToolkit()

Tools:
    .. code-block:: python

        tools = toolkit.get_tools()
        tools

    .. code-block:: none

        [SlackGetChannel(client=<slack_sdk.web.client.WebClient object at 0x113caa8c0>),
        SlackGetMessage(client=<slack_sdk.web.client.WebClient object at 0x113caa4d0>),
        SlackScheduleMessage(client=<slack_sdk.web.client.WebClient object at 0x113caa440>),
        SlackSendMessage(client=<slack_sdk.web.client.WebClient object at 0x113caa410>)]

Use within an agent:
    .. code-block:: python

        from langchain_openai import ChatOpenAI
        from langgraph.prebuilt import create_react_agent

        llm = ChatOpenAI(model="gpt-4o-mini")
        agent_executor = create_react_agent(llm, tools)

        example_query = "When was the #general channel created?"

        events = agent_executor.stream(
            {"messages": [("user", example_query)]},
            stream_mode="values",
        )
        for event in events:
            message = event["messages"][-1]
            if message.type != "tool":  # mask sensitive information
                event["messages"][-1].pretty_print()

    .. code-block:: none

         ================================[1m Human Message [0m=================================

        When was the #general channel created?
        ==================================[1m Ai Message [0m==================================
        Tool Calls:
        get_channelid_name_dict (call_NXDkALjoOx97uF1v0CoZTqtJ)
        Call ID: call_NXDkALjoOx97uF1v0CoZTqtJ
        Args:
        ==================================[1m Ai Message [0m==================================

        The #general channel was created on timestamp 1671043305.
)default_factoryr   clientT)arbitrary_types_allowedc                N    [        5       [        5       [        5       [        5       /$ )zGet the tools in the toolkit.)r
   r   r   r   )selfs    h/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/agent_toolkits/slack/toolkit.py	get_toolsSlackToolkit.get_toolsi   s&      "	
 	
     N)returnzList[BaseTool])__name__
__module____qualname____firstlineno____doc__r	   r   r   __annotations__r   model_configr   __static_attributes__r   r   r   r   r      s,    FP e4FI4 $L
r   r   N)
__future__r   typingr   r   langchain_core.toolsr   langchain_core.tools.baser   pydanticr   r	   +langchain_community.tools.slack.get_channelr
   +langchain_community.tools.slack.get_messager   0langchain_community.tools.slack.schedule_messager   ,langchain_community.tools.slack.send_messager   %langchain_community.tools.slack.utilsr   	slack_sdkr   ImportErrorr   r   r   r   <module>r2      sS    " & ) 1 & G G Q I 7#'
V
; V
	  s   A" "A+*A+