The Slack Web API allows you to build applications that interact with Slack in more complex ways than the integrations we provide out of the box.
This package is a modular wrapper designed to make Slack `Web API`_ calls simpler and easier for your app. Provided below are examples of how to interact with commonly used API endpoints, but this is by no means a complete list. Review the full list of available methods here.
See :ref:`Tokens & Authentication <handling-tokens>` for API token handling best practices.
The primary use of Slack is sending messages. Whether you're sending a message to a user or to a channel, this method handles both.
To send a message to a channel, use the channel's ID. For IMs, use the user's ID.
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)
sc.api_call(
"chat.postMessage",
channel="#python",
text="Hello from Python! :tada:"
)There are some unique options specific to sending IMs, so be sure to read the channels section of the chat.postMessage page for a full list of formatting and authorship options.
Let's say you have a bot which posts the status of a request. When that request is updated, you'll want to update the message to reflect it's state. Or your user might want to fix a typo or change some wording. This is how you'll make those changes.
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)
sc.api_call(
"chat.update",
ts="1476746830.000003",
channel="C0XXXXXX",
text="Hello from Python! :tada:"
)See chat.update for formatting options and some special considerations when calling this with a bot user.
Sometimes you need to delete things.
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)
sc.api_call(
"chat.delete",
channel="C0XXXXXX",
ts="1476745373.000002"
)See chat.delete for more info.
You can quickly respond to any message on Slack with an emoji reaction. Reactions can be used for any purpose: voting, checking off to-do items, showing excitement — and just for fun.
This method adds a reaction (emoji) to an item (file, file comment, channel message, group message, or direct message). One of file, file_comment, or the combination of channel and timestamp must be specified.
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)
sc.api_call(
"reactions.add",
channel="C0XXXXXXX",
name="thumbsup",
timestamp="1234567890.123456"
)Removing an emoji reaction is basically the same format, but you'll use reactions.remove instead of reactions.add
sc.api_call(
"reactions.remove",
channel="C0XXXXXXX",
name="thumbsup",
timestamp="1234567890.123456"
)See reactions.add and reactions.remove for more info.
At some point, you'll want to find out what channels are available to your app. This is how you get that list.
Note: This call requires the channels:read scope.
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)
sc.api_call("channels.list")Archived channels are included by default. You can exclude them by passing exclude_archived=1 to your request.
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)
sc.api_call(
"channels.list",
exclude_archived=1
)See channels.list for more info.
Once you have the ID for a specific channel, you can fetch information about that channel.
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)
sc.api_call(
"channels.info",
channel="C0XXXXXXX"
)See channels.info for more info.
Channels are the social hub of most Slack teams. Here's how you hop into one:
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)
sc.api_call(
"channels.join",
channel="C0XXXXXXY"
)If you are already in the channel, the response is slightly different.
already_in_channel will be true, and a limited channel object will be returned. Bot users cannot join a channel on their own, they need to be invited by another user.
See channels.join for more info.
Maybe you've finished up all the business you had in a channel, or maybe you joined one by accident. This is how you leave a channel.
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)
sc.api_call(
"channels.leave",
channel="C0XXXXXXX"
)See channels.leave for more info.
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)
sc.api_call("users.list")See users.list for more info.