FPLbot is a bot made for the subreddit /r/FantasyPL. It can also be used for other subreddits by changing the values in the configuration file.
Its current features are:
- Posting the price changes of Fantasy Premier League players
- Comparing the performance of a player vs. a team
- Comparing the performance of a player vs. another player
FPLbot uses MongoDB to store players in a database, and so it is required to have MongoDB installed. Other than that, it uses fpl to retrieve information from Fantasy Premier League's API, and thus requires Python 3.6+.
git clone git@github.com:amosbastian/FPLbot.git
cd FPLbot
pip install -r requirements.txt
To initialise the database with text indexes you should do the following:
python FPLbot/init.py
Once this has been done, you should create your own config.json
with the correct values (see configuration).
With this filled in, you can run the bot using
python FPLbot/bot.py
As for the price changes, you should schedule a cron job, like this for example:
25 1 * * * /home/amos/FPLbot/venv/bin/python /home/amos/FPLbot/FPLbot/price_changes.py
The bot can be called on /r/FantasyPL using the following two commands:
!fplbot <player_name> vs. <team_name> <optional: number of fixtures>
!fplbot <player_name> vs. <player_name> <optional: number of fixtures>
The bot uses text indexes to search for the player(s) and using a manually created mapping (so you don't have to use e.g. "man utd" exactly, but other variations are fine as well, like "man u" or "manchester united"). The number of fixtures is completely optional, and if not specified, it simply uses all fixtures that are considered relevant. All the data is taken from FPL's API & Understat. Here are two examples:
!fplbot heung-min son vs. mane 5
xA | A | xG | G | MP | Fixture | Fixture | MP | G | xG | A | xA |
---|---|---|---|---|---|---|---|---|---|---|---|
0.13 | 0 | 0.42 | 1 | 90 | Spurs 3-1 Leicester | Liverpool 3-0 Bournemouth | 89 | 1 | 0.58 | 0 | 0.12 |
0.70 | 0 | 0.19 | 1 | 90 | Spurs 1-0 Newcastle United | West Ham 1-1 Liverpool | 90 | 1 | 0.64 | 0 | 0.00 |
0.00 | 0 | 0.20 | 1 | 90 | Spurs 2-1 Watford | Liverpool 1-1 Leicester | 90 | 1 | 0.18 | 0 | 0.10 |
0.38 | 0 | 0.05 | 0 | 90 | Spurs 0-1 Man Utd | Liverpool 4-3 Crystal Palace | 90 | 1 | 0.47 | 0 | 0.01 |
0.08 | 1 | 0.50 | 1 | 77 | Cardiff 0-3 Spurs | Brighton 0-1 Liverpool | 90 | 0 | 0.10 | 0 | 0.10 |
1.29 | 1 | 1.36 | 4 | 437 | 449 | 4 | 1.97 | 0 | 0.34 |
!fplbot rashford vs. liverpool
Fixture | Date | MP | G | xG | A | xA | NPG | NPxG | KP |
---|---|---|---|---|---|---|---|---|---|
Liverpool 3-1 Man Utd | 2018-12-16 | 90 | 0 | 0.02 | 0 | 0.00 | 0 | 0.02 | 0 |
Man Utd 2-1 Liverpool | 2018-03-10 | 72 | 2 | 0.17 | 0 | 0.00 | 2 | 0.17 | 0 |
Liverpool 0-0 Man Utd | 2017-10-14 | 24 | 0 | 0.00 | 0 | 0.00 | 0 | 0.00 | 0 |
Liverpool 0-0 Man Utd | 2016-10-17 | 78 | 0 | 0.00 | 0 | 0.00 | 0 | 0.00 | 0 |
264 | 2 | 0.19 | 0 | 0.00 | 2.0 | 0.19 | 0 |
Option | Value |
---|---|
USERNAME | The bot's username |
PASSWORD | The bot's password |
CLIENT_ID | The bot's client ID |
CLIENT_SECRET | The bot's client secret |
USER_AGENT | A unique identifier that helps Reddit determine the source of network requests |
SUBREDDIT | The subreddit the bot will post to |
BOT_PREFIX | The prefix used to call the bot, e.g.: "!fplbot" |
For more information about how to set up a bot see Reddit's guide.