Fantasy Football Chat Bot

by dtcarls

GitHub Readme.md

Shoutout to /u/rbart65 on reddit and rbarton65 on github for creating the original version of the chatbot and the ESPN FF API

Build Status Come join the chat Test Coverage Status Codacy Badge

Deploy

ESPN Fantasy Football GroupMe Bot

This package creates a docker container that runs a GroupMe chat bot to send ESPN Fantasy Football information to a GroupMe chat room.

What does this do?

  • Sends out the following messages on this schedule:
  • Power rankings - tue -18:30
  • Matchups - thu - 19:30 (Just upcoming matchups)
  • Close Scores - mon - 18:30 (Games that are within 16 points of eachother to keep an eye on during the Monday night game)
  • Trophies- tue - 7:30 (High score, low score, biggest win, closest win)
  • Scoreboard - fri,mon,tue - 7:30 (Current ESPN fantasy scoreboard)
  • Scoreboard - sun - 16:30, 20:30 (Current ESPN fantasy scoreboard)

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Installing

With Docker:

git clone https://github.com/dtcarls/ff_bot

cd ff_bot

docker build -t ff_bot .

Without Docker:

git clone https://github.com/dtcarls/ff_bot

cd ff_bot

python3 setup.py install

Basic Usage

This gives an overview of all the features of ff_bot

Environment Variables

  • BOT_ID: This is your Bot ID from the GroupMe developers page (REQUIRED)
  • LEAGUE_ID: This is your ESPN league id (REQUIRED)
  • START_DATE: This is when the bot will start paying attention and sending messages to GroupMe. (2017-09-05 by default)
  • END_DATE: This is when the bot will stop paying attention and stop sending messages to GroupMe. (2017-12-26 by default)
  • LEAGUE_YEAR: ESPN League year to look at (2017 by default)
  • TIMEZONE: The timezone that the messages will look to send in. (America/New_York by default)
  • INIT_MSG: The message that the bot will say when it is started (“Hai” by default, can be blank for no message)

Running with Docker

>>> export BOT_ID=[enter your GroupMe Bot ID]
>>> export LEAGUE_ID=[enter ESPN league ID]
>>> export LEAGUE_YEAR=[enter league year]
>>> cd ff_bot
>>> docker run --rm=True \
-e BOT_ID=$BOT_ID \
-e LEAGUE_ID=$LEAGUE_ID \
-e LEAGUE_YEAR=$LEAGUE_YEAR \
ff_bot

Running without Docker

>>> export BOT_ID=[enter your GroupMe Bot ID]
>>> export LEAGUE_ID=[enter ESPN league ID]
>>> export LEAGUE_YEAR=[enter league year]
>>> cd ff_bot
>>> python3 ff_bot/ff_bot.py

Running the tests

Automated tests for this package are included in the tests directory. After installation, you can run these tests by changing the directory to the ff_bot directory and running the following:

python3 setup.py test

Setting up GroupMe, and deploying app in Heroku

Do not deploy 2 of the same bot in the same chat. In general, you should let your commissioner do the setup

GroupMe Setup

Go to www.groupme.com and sign up or login

If you don't have one for your league already, create a new "Group Chat"

Next we will setup the bot for GroupMe

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

Click "Create Bot"

Create your bot. GroupMe does a good job explaining what each thing is.

After you have created your bot you will see something similar to this. Click "Edit"

This page is important as you will need the "Bot ID" on this page.You can also send a test message with the text box to be sure it is connected to your chat room. Side note: If you use the bot id depicted in the page you will spam an empty chat room so not worth the effort

Heroku setup

Heroku is what we will be using to host the chat bot (for free)

You should not need to enter credit card information for this hosting service for our needs. You may run out of free hours without a credit card linked. If you decide to link your credit card you will have enough free hours for the month for a single application since this more than doubles your available hours. We are not responsible for any charges associated with Heroku.

Go to https://id.heroku.com/login and sign up or login

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Click this handy button: Deploy

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Go to your dashboard (https://dashboard.heroku.com/apps) Now you will need to setup your environment variables so that it works for your league. Click Settings at your dashboard. Then click "Reveal Config Vars" button and you will see something like this.

Now we will need to edit these variables (click the pencil to the right of the variable to modify) Note: App will restart when you change any variable so your chat room may be semi-spammed with the init message of "Hai" you can change the INIT_MSG variable to be blank to have no init message. It should also be noted that Heroku seems to restart the app about once a day

  • BOT_ID: This is your Bot ID from the GroupMe developers page (REQUIRED)
  • LEAGUE_ID: This is your ESPN league id (REQUIRED)
  • START_DATE: This is when the bot will start paying attention and sending messages to GroupMe. (2017-09-05 by default)
  • END_DATE: This is when the bot will stop paying attention and stop sending messages to GroupMe. (2017-12-26 by default)
  • LEAGUE_YEAR: ESPN League year to look at (2017 by default)
  • TIMEZONE: The timezone that the messages will look to send in. (America/New_York by default)
  • INIT_MSG: The message that the bot will say when it is started (“Hai” by default, can be blank for no message)

After you have setup your variables you will need to turn it on. Navigate to the "Resources" tab of your Heroku app Dashboard. You should see something like below. Click the pencil on the right and toggle the buton so it is blue like depicted and click "Confirm."

You're done! You now have a fully featured GroupMe chat bot for ESPN leagues! If you have an INIT_MSG you will see it exclaimed in your GroupMe chat room.

Unfortunately to do auto deploys of the latest version you need admin access to the repository on git. You can check for updates on the github page (https://github.com/dtcarls/ff_bot/commits/master) and click the deploy button again; however, this will deploy a new instance and the variables will need to be edited again.