Migliorare il mio bot FPL per Reddit!
https://github.com/amosbastian/FPLbot
Dopo aver aggiunto un confronto tra giocatore e giocatore, ho finalmente impostato il bot su droplet la scorsa settimana. Ho postato su di esso su Reddit e come si può vedere è stato molto ben accolto! Viene utilizzato molto (quasi 100 commenti al giorno), il che è bello da vedere. Significa anche che ho ricevuto un feedback, e così ho deciso di implementare rapidamente alcuni dei suggerimenti che ho ricevuto!
https://github.com/amosbastian/FPLbot/pull/6
https://github.com/amosbastian/FPLbot/pull/7
https://github.com/amosbastian/FPLbot/pull/9
https://www.reddit.com/user/FantasyPL_bot
Cambiare il player vs player da tavolo
Il player vs player da tavolo non era molto amichevole mobile di prima, che qualcuno ha sottolineato immediatamente. Hanno suggerito di creare una tabella separata per ogni giocatore, e semplicemente impilarli uno sopra l’altro, e così è quello che ho fatto. Ciò consentirà anche un confronto di più di 2 giocatori in futuro, che potrei implementare pure.
Migliorare le tabelle!
Tabelle migliorate per i portieri
Ho anche apportato alcuni altri miglioramenti alle tabelle in generale. Un problema era che confrontare i portieri era inutile, perché le tabelle includevano solo cose come obiettivi e assist attesi, che ovviamente non sono rilevanti per loro. Per risolvere questo ho deciso di creare una tabella che includeva i loro obiettivi previsti contro, i loro salvataggi e altro ancora.
Salvare i risultati
Poiché gli obiettivi previsti di un giocatore contro non sono inclusi nelle informazioni di un giocatore su Understat, ho dovuto ottenere questo dalla loro squadra stessa. Per fare ciò, ho creato un’altra funzione che salva tutti i risultati del team nel database e quindi la uso per ottenere i dati. Fortunatamente questo è stato abbastanza facile da fare usando il mio pacchetto Understat!
Creare il tavolo dei portieri
Un’altra cosa che ho fatto è stata aggiungere gli obiettivi previsti contro il tavolo di un difensore, e anche i punti che il giocatore ha effettivamente segnato durante le partite (inclusi i punti bonus). Per fare questo, la prima cosa che ho dovuto fare è stato assicurarsi che le partite utilizzate quando si confrontano i giocatori sono solo quelli giocati in Premier League (dal momento che è quello che FPL è di circa). Alla fine avevo bisogno di ottenere in qualche modo i punti e quindi abbinare questo ai rispettivi dati da Understat. Fortunatamente potrei semplicemente usare la cronologia di un giocatore inclusa nell’API FPL per ottenere i punti, e tutti gli infissi su Understat hanno il loro ID, quindi potrei semplicemente confrontare gli infissi di un giocatore con gli infissi della Premier League.
Potresti aver notato che sono passato anche a usare tabulate, che è un pacchetto Python per la creazione di tabelle che ho trovato. Funziona abbastanza bene per il mio caso d’uso e ha anche ripulito leggermente il codice.
Ho anche apportato alcune altre modifiche QoL al bot, ma questo post sta già diventando piuttosto lungo. Se vuoi saperne di più, puoi controllare il thread Reddit che ho creato.
Roadmap
Potrei aggiungere la possibilità di confrontare più di 2 giocatori tra loro, ma dovrò vedere. Si spera di ricevere alcuni suggerimenti più pure!
Utilizzo&installazione
FPLbot utilizza MongoDB per memorizzare i giocatori in un database, e quindi è necessario avere MongoDB installato. Oltre a questo, utilizza fpl per recuperare informazioni dall’API di Fantasy Premier League, e quindi richiede Python 3.6+.
git clone :amosbastian/FPLbot.gitcd FPLbotpip install -r requirements.txt
una Volta installato, si dovrebbe creare un config.json
file come nell’esempio qui sopra, ma con i valori corretti. Una volta fatto questo, è possibile pianificare un lavoro cron per eseguire il bot ogni volta che vuoi!
Contribuendo
ho creato una Discordia server per le persone interessate in programmazione FPL ha collegato le cose, quindi se siete interessati ad aiutare, o semplicemente vuoi saperne di più, quindi non esitate ad entrare! Altrimenti puoi semplicemente creare un problema su GitHub.