Skip to content

A GroupMe bot for auto posting upcoming soccer matches in a chat

License

Notifications You must be signed in to change notification settings

noahbass/soccer-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ebc6011 · Oct 17, 2017

History

57 Commits
Aug 20, 2016
Nov 13, 2016
Aug 20, 2016
Aug 20, 2016
Aug 8, 2016
Aug 13, 2016
Aug 12, 2017
Oct 9, 2017
Aug 12, 2016
Jun 4, 2016
Aug 12, 2017
Oct 7, 2017
Oct 17, 2017
Oct 7, 2017
Oct 17, 2017

Repository files navigation

Soccer Bot

MIT license Build Status dependencies Status devDependencies Status

A GroupMe bot for auto posting upcoming soccer matches in a chat

Made to work with api.football-data.org for data on the english premier league, but can be expanded to other competitions covered by the api. Works as a command line interface or serverless service.

Quick Start

  • Make sure all dependencies are installed with npm install
  • Create a .env in the root of the project and include variables from .env.example. A bot id can be generated from the groupme dev site. A key for the football api can be found at api.football-data.org
    • Using multiple competitions: include two or more urls to api.football-data.org separated by commas (no spaces). Ex: FOOTBALL_API_URL="https://api.football-data.org/v1/competitions/426/fixtures,https://api.football-data.org/v1/competitions/430/fixtures"
  • Start mongodb and specify a MONGODB_URI key in .env
  • Do a first time setup with node bot.js setup
  • Run the bot with node bot.js run

Commands

  • node bot.js run looks for upcoming matches and posts them to the group chat
  • node bot.js setup is a first time command to get a most up to date fixture list for the local database
  • node bot.js update updates the dates in the local database to that of the dates in the football api (for fixtures that have a date/time change since node bot.js setup was called)
  • node bot.js clean removes everything in the local database
  • node bot.js list -h [name] -a [name] finds and lists out those fixtures from the local database. Each option is optional. Given no options, every fixture will be listed

On Production

Make sure NODE_ENV="production" in the .env.

Logging

Logging on production logs to logger.log. In addition, all errors on production will be emailed. See .env.example for example setup with a smtp host (ex: mailgun) and copy these to .env for usage.

Cron Jobs

To automatically update the fixture list every day and look for matches to be posted in groupme all the time, a cron job can be used. A sample cron job to update every night and check for matches every five minutes:

0 0 * * * node bot.js update >/dev/null 2>&1
*/5 * * * * node bot.js run >/dev/null 2>&1

Serverless Service

handler.js is ready for serverless functionality with soccer-bot. Install serverless with npm install -g serverless. Use serverless deploy --aws-profile [PROFILE] to deploy (where [PROFILE] is your aws profile). See the serverless cheat sheet for quick, useful commands.

Example commands:

  • Deploy: serverless deploy --aws-profile [PROFILE]
  • Deploy individual function: serverless deploy function -f [FUNCTION NAME] -s [STAGE NAME] -r [REGION NAME] --aws-profile [PROFILE]
  • Clean fixtures: serverless invoke -f clean -s [STAGE] -r [REGION] -l --aws-profile [PROFILE]
  • Setup fixtures: serverless invoke -f setup -s [STAGE] -r [REGION] -l --aws-profile [PROFILE]

Like the cli, the serverless service requires a MongoDB connection string in the MONGODB_URI environment variable.

Tests

Make sure dev packages are installed with npm install --dev. Run tests with npm test.

To test the app with a specific date, simply set a date for CUSTOM_DATE in your .env equal to some unix timestamp. An example of this CUSTOM_DATE environment variable can be found in .env.example. To run with a specific date, use node bot.js run --dev.

License

MIT License

About

A GroupMe bot for auto posting upcoming soccer matches in a chat

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published