Giter Club home page Giter Club logo

starter-python-bot's Introduction

starter-python-bot

Overview

A simple starting point for creating a Beep Boop hostable, Python based Slack bot.

Visit Beep Boop to get the scoop on the the Beep Boop hosting platform. The Slack API documentation can be found here.

Assumptions

  • You have already signed up with Beep Boop and have a local fork of this project.
  • You have sufficient rights in your Slack team to configure a bot and generate/access a Slack API token.

Usage

Run locally

Install dependencies (virtualenv is recommended.)

pip install -r requirements.txt
export SLACK_TOKEN=<YOUR SLACK TOKEN>; python ./bot/app.py

Things are looking good if the console prints something like:

Connected <your bot name> to <your slack team> team at https://<your slack team>.slack.com.

If you want change the logging level, prepend export LOG_LEVEL=<your level>; to the python ./bot/app.py command.

Run locally in Docker

docker build -t starter-python-bot .
docker run --rm -it -e SLACK_TOKEN=<YOUR SLACK API TOKEN> starter-python-bot

Run in BeepBoop

If you have linked your local repo with the Beep Boop service (check here), changes pushed to the remote master branch will automatically deploy.

First Conversations

When you go through the Add your App to Slack flow, you'll setup a new Bot User and give them a handle (like @python-rtmbot).

Here is an example interaction dialog that works with this bot:

Joe Dev [3:29 PM]
hi @python-rtmbot

Slacks PythonBot BOT [3:29 PM]
Nice to meet you, @randall.barnhart!

Joe Dev [3:30 PM]
help @python-rtmbot

Slacks PythonBot BOT [3:30 PM]
I'm your friendly Slack bot written in Python.  I'll ​*​_respond_​*​ to the following commands:
>`hi @python-rtmbot` - I'll respond with a randomized greeting mentioning your user. :wave:
> `@python-rtmbot joke` - I'll tell you one of my finest jokes, with a typing pause for effect. :laughing:
> `@python-rtmbot attachment` - I'll demo a post with an attachment using the Web API. :paperclip:

Joe Dev [3:31 PM]
@python-rtmbot: joke

Slacks PythonBot BOT [3:31 PM]
Why did the python cross the road?

[3:31]
To eat the chicken on the other side! :laughing:

Code Organization

If you want to add or change an event that the bot responds (e.g. when the bot is mentioned, when the bot joins a channel, when a user types a message, etc.), you can modify the _handle_by_type method in event_handler.py.

If you want to change the responses, then you can modify the messenger.py class, and make the corresponding invocation in event_handler.py.

The slack_clients.py module provides a facade of two different Slack API clients which can be enriched to access data from Slack that is needed by your Bot:

  1. slackclient - Realtime Messaging (RTM) API to Slack via a websocket connection.
  2. slacker - Web API to Slack via RESTful methods.

The slack_bot.py module implements and interface that is needed to run a multi-team bot using the Beep Boop Resource API client, by implementing an interface that includes start() and stop() methods and a function that spawns new instances of your bot: spawn_bot. It is the main run loop of your bot instance that will listen to a particular Slack team's RTM events, and dispatch them to the event_handler.

License

See the LICENSE file for license rights and limitations (MIT).

starter-python-bot's People

Contributors

dvanduzer avatar jubriledu avatar mbrevoort avatar randompi avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.