An updated version of this tutorial can now be found in the Python Slack SDK

pythOnBoarding Bot

Building a simple bot using Slack's Events API in Python

This bot is an example implementation of building a Slack App with Slack's Python SDK, python-slackclient. We'll cover all the basic steps you'll need to create and configure your first Slack App in python.

PythOnBoarding Bot is designed to greet new users on your team and introduce them to some nifty features in Slack.

onboarding

Let's go write some code. You got this! :sparkles:

The first thing you'll need to do is make a local copy of this git repository. If you are familiar with git you can use:

git clone https://github.com/slackapi/Slack-Python-Onboarding-Tutorial.git

Otherwise you can download and unzip the project.

Technical Requirements

This example uses Python, specifically version 2.7 so you'll need to make sure you are using the correct version of Python. We'll also use a number of python packages you can install through pip.

Here's a list of what we'll need:

Once you've installed Python, pip and virtualenv, you can install all additional dependent libraries using pip and the requirements.txt file included in this project, including Flask, a web development micro framework for Python and python-slackclient, a Slack client for Python. :snake:

After you've cloned this repository locally, you'll want to create a virtual environment to keep the dependencies for this project isolated from any other project you may be working on.

If you're using virtualenv run the following commands from the root of your project directory:

virtualenv env

Then activate your new virtual environment:

source env/bin/activate

After that, you can install all the Python packages this project will need with this command:

pip install -r requirements.txt
Server Requirements

Slack will be delivering events to your app's server so your server needs to be able to receive incoming HTTPS traffic from Slack.

If you are running this project locally, you'll need to set up tunnels for Slack to connect to your endpoints. Ngrok is an easy to use tunneling tool that supports HTTPS, which is required by Slack.

You'll likely want to test events coming to your server without going through the actions on your Slack team. Postman is a useful tool you can use to recreate requests sent from Slack to your server. This is especially helpful for events like user join, where the workflow to recreate the event requires quite a bit of set up.

Let's get started :tada:

Further Reading and Getting Help

Documentation

Slack Documentation
Documentation for Tools

Where to Find Help

Wondering what to do if you can't get this dang tutorial to work for you? The Slack Developer community is an awesome place to get help when you're confused or stuck. We have an excellent 'search first' culture and Slack is committed to improving our tutorials and documentation based on your feedback. If you've checked the Slack API documentation, reached the end of your google patience and found StackOverflow to be unhelpful, try asking for help in the Dev4Slack Slack team.

Feedback

I'd love to improve this project, so if you've got some ideas :bulb:, feedback :raising_hand: or praise :love_letter: please file an issue, submit a PR or reach out to me through Github or on Twitter!