Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/erikboesen/bot-tutorial-python

An example GroupMe bot written in Python and hosted on Heroku.
https://github.com/erikboesen/bot-tutorial-python

Last synced: about 2 months ago
JSON representation

An example GroupMe bot written in Python and hosted on Heroku.

Awesome Lists containing this project

README

        

# Sample GroupMe Python Bot
**Python** | [**JavaScript**](https://github.com/groupme/bot-tutorial-nodejs)

## Introduction

A simple GroupMe bot that reacts to messages sent within a group.

## Contents

* [Quickly get our sample bot up and running in your groups](#deploy)
* Deploy the code to heroku
* Create a bot
* Configure to your bot's credentials
* [Make changes to the bot](#pull)
* Pull the code down to your local machine
* Configure the local environment variables to your bot's credentials

## Requirements:

* GroupMe account
* Heroku account
* [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli)

# Get your bot up and running

## Deploy to Heroku:

Be sure to log in to Heroku, using your Heroku credentials, then click the link below.

[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy)

You should be taken to a page that looks like this:

![Deploy to Heroku](http://i.groupme.com/837x662.png.36c63698644a4f61a9ff3d5af91caa5e)

Optionally, you can give your app a name, or instead leave it blank and let Heroku name it for you (you can change it later).

![Success](https://i.groupme.com/959x932.png.85e7959a8a9a41c6b20f5f6b50aceecb)

## Next, create a GroupMe Bot:

Go to:
https://dev.groupme.com/session/new

Use your GroupMe credentials to log into the developer site.

![Log into dev.groupme.com](https://i.groupme.com/640x292.png.38c9e590383149c1a01424fc61cdce4e)

Once you have successfully logged in, go to https://dev.groupme.com/bots/new

![Create your new bot](http://i.groupme.com/567x373.png.242d18352d7742858cf9a263f597c5d9)

Fill out the form to create your new bot:

* Select the group where you want the bot to live
* Give your bot a name
* Paste in the URL of your newly deployed Heroku app
* `http://your-app-name-here.herokuapp.com/`
* (Optional) Give your bot an avatar by providing the URL of an image
* Click submit!

## Find your Bot ID:

Go here to view all of your bots:
https://dev.groupme.com/bots

Click on the one you just created.

![Select your new bot](http://i.groupme.com/871x333.png.5a33ef2b6ab74ea59d5aaa5569aaaf23)

On your Bot's page, copy the Bot ID

![Copy your Bot ID](http://i.groupme.com/615x295.png.3256190e86ed4cd7ae6cf09899c1f9a8)

## Add your Bot ID to your Heroku app:

Go here to see all of your Heroku apps and select the one you just created before:

https://dashboard-next.heroku.com/apps

![Select your heroku app](http://i.groupme.com/920x722.png.46154d6b95f249539c594b129ddb7732)

On your app page, click settings in the top navigation:

![Go to your app's settings](http://i.groupme.com/722x127.png.27c0a2e83c524064bd41bb66df76d14c)

On your app's setting page, find the Config Vars section and click the Reveal Config Vars button:

![Reveal your environment variables](http://i.groupme.com/606x181.png.94d5157963bc419886e98e038e3195c3)

Then click edit:

![Edit your environment variables](http://i.groupme.com/796x212.png.b8979454fc4742c7bae688ac67262755)

Fill out the form to add an environment variable to your app:

* In the "key" field type: BOT_ID
* In the "value" field paste your Bot ID that you copied in the previous steps
* Click the save button

![Add the Bot ID environment variable](http://i.groupme.com/784x148.png.5790498a7acd46b289aca2be43e9c84e)

## Now go test your bot!

Go to GroupMe and type "/ping" in the group where your bot lives to see it in action.

![Test your Bot](http://i.groupme.com/821x587.png.7bcf55bed1c64acab83fa2c2ad0b0862)

# Make it your own

## Pull the code to your local machine

Within terminal, change directory to the location where you would like the files to live, then run this command:

```sh
heroku git:clone -a YOUR_APP_NAME_HERE
```

And then change directory into the new folder

```sh
cd YOUR_APP_NAME_HERE
```

## Configure your local `BOT_ID` environment variable

You will need to set the `BOT_ID` environment variable so that your bot will know where to send its messages.

If you don't know what your Bot ID is, please refer back to [this](#get-bot-id) section, where it is explained how to retrieve it.

In your terminal, run
```sh
export BOT_ID=INSERT_YOUR_BOT_ID_HERE
```
You may wish to add this to a file that runs each time you start your shell, such as `~/.bashrc`.

For Heroku, run:
```sh
heroku config:set BOT_ID=INSERT_YOUR_BOT_ID_HERE
```

## Start the server

To test your bot locally, open terminal and install dependencies:

```sh
pip3 install -r requirements.txt
```

Then start a local server.

```sh
FLASK_APP=bot.py flask run
```
or use gunicorn to imitate the production Heroku environment:
```sh
gunicorn bot:app
```

Then navigate to `http://localhost:8000` in a browser.

![Local bot](http://i.groupme.com/502x133.png.f06c630467954f5dab4c742dc67b71bf)

## All done! Go play around and make the bot your own.