Giter Club home page Giter Club logo

ff_bot's Introduction

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 or Slack chat bot to send ESPN Fantasy Football information to a GroupMe or Slack 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 IF USING GROUPME)
  • WEBHOOK_URL: This is your Webhook URL from the Slack App page (REQUIRED IF USING SLACK)
  • 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 or Slack. (2018-09-05 by default)
  • END_DATE: This is when the bot will stop paying attention and stop sending messages to GroupMe or Slack. (2018-12-26 by default)
  • LEAGUE_YEAR: ESPN League year to look at (2018 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

Use BOT_ID if using Groupme, and WEBHOOK_URL if using Slack (or both to get messages in both places)

>>> export BOT_ID=[enter your GroupMe Bot ID]
>>> export WEBHOOK_URL=[enter your Webhook URL]
>>> 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

Use BOT_ID if using Groupme, and WEBHOOK_URL if using Slack (or both to get messages in both places)

>>> export BOT_ID=[enter your GroupMe Bot ID]
>>> export WEBHOOK_URL=[enter your Webhook URL]
>>> 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 or Slack, 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

Slack setup

Go to https://slack.com/signin and sign in to the workspace the bot will be in

If you don't have one for your league already, create a new League Channel

Next we will setup the bot for Slack

Go to https://api.slack.com/apps/new

Name the app, and choose the intended workspace from the dropdown.

Select the Incoming Webhooks section on the side.

Change the toggle from Off to On.

Select Add New Webhook to Workspace

In the Post to dropdown, select the channel you want to send messages to, then select Authorize.

This page is important as you will need the "Webhook URL" on this page.

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 IF USING GROUPME)
  • WEBHOOK_URL: This is your Webhook URL from the Slack App page (REQUIRED IF USING SLACK)
  • 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 or Slack. (2018-09-05 by default)
  • END_DATE: This is when the bot will stop paying attention and stop sending messages to GroupMe or Slack. (2018-12-26 by default)
  • LEAGUE_YEAR: ESPN League year to look at (2018 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/Slack chat bot for ESPN leagues! If you have an INIT_MSG you will see it exclaimed in your GroupMe or Slack 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.

Like the bot? Consider making a donation

  • BTC: 3C8SEcDh52iDSYQY55kwELrNWoQRMkXLCR
  • ETH: 0xA098c4e8CC1c12422d5B34d6454133190CDdCAC3
  • LTC: MHx74YbrHE592ePBbdQ4cL9ZQC15xaAjtM

ff_bot's People

Contributors

dtcarls avatar inbleric avatar rbarton65 avatar

Watchers

 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.