Articles

¡Mejorando mi bot FPL para Reddit!



https://github.com/amosbastian/FPLbot

Después de la adición de un jugador contra jugador comparación, finalmente me configurar el bot en una gota de la semana pasada. He publicado en Reddit y como se puede ver fue muy bien recibido! Se está utilizando mucho (casi 100 comentarios al día), lo cual es genial de ver. También significa que he recibido algunos comentarios, por lo que decidí implementar rápidamente algunas de las sugerencias que recibí.

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

Cambiar la mesa jugador contra jugador

La mesa jugador contra jugador no era muy amigable para dispositivos móviles antes, algo que alguien señaló de inmediato. Sugirieron crear una mesa separada para cada jugador, y simplemente apilarlas una encima de la otra, y eso es lo que hice. Esto también permitirá una comparación de más de 2 jugadores en el futuro, que también podría implementar.

¡Mejorando las tablas!



Mejora de tablas para los porteros

también he hecho algunas otras mejoras a las tablas en general. Un problema era que comparar porteros no tenía sentido, porque las tablas solo incluían cosas como goles esperados y asistencias, lo que obviamente no es relevante para ellos. Para resolver esto, decidí crear una tabla que incluyera sus objetivos esperados en contra, sus salvados y más.



Guardar los resultados

Dado que los goles en contra esperados de un jugador no se incluyen en la información de un jugador en el Subestado, tuve que obtener esto de su propio equipo. Para hacer esto, creé otra función que guarda todos los resultados del equipo en la base de datos, y luego la uso para obtener los datos. Afortunadamente, esto fue bastante fácil de hacer con mi propio paquete Understat.



Creando la mesa de portero

Otra cosa que hice fue agregar los goles esperados en contra a la mesa de un defensor, y también los puntos que el jugador realmente anotó durante los juegos (incluidos los puntos de bonificación). Para lograr esto, lo primero que tuve que hacer fue asegurarme de que los partidos utilizados al comparar jugadores sean solo los jugados en la Premier League (ya que de eso se trata la FPL). Finalmente, necesitaba de alguna manera obtener los puntos y luego emparejar esto con los datos respectivos de Understat. Afortunadamente, podría usar el historial de un jugador incluido en la API de FPL para obtener los puntos, y todos los partidos de Understat tienen su propia identificación, por lo que simplemente podría comparar los partidos de un jugador con los partidos de la Premier League.

Es posible que haya notado que también cambié a usar tabular, que es un paquete de Python para crear tablas que encontré. Funciona bastante bien para mi caso de uso, y también limpió un poco el código.

También hice algunos otros cambios de calidad de vida en el bot, pero este post ya se está haciendo bastante largo. Si quieres leer más al respecto, puedes consultar el hilo de Reddit que he creado.

Hoja de ruta

Podría agregar la capacidad de comparar a más de 2 jugadores entre sí, pero tendré que ver. Esperamos recibir algunas sugerencias más también!

Uso & instalación

FPLbot utiliza MongoDB para almacenar reproductores en una base de datos, por lo que es necesario tener instalado MongoDB. Aparte de eso, utiliza fpl para recuperar información de la API de Fantasy Premier League, y por lo tanto requiere Python 3.6+.

git clone :amosbastian/FPLbot.gitcd FPLbotpip install -r requirements.txt



una Vez instalado, usted debe crear un config.json archivo como el ejemplo anterior, pero con los valores correctos. Una vez que haya hecho esto, puede programar un trabajo cron para ejecutar el bot cuando lo desee.

Contribuyendo



He creado un servidor de Discordia para personas interesadas en programar cosas relacionadas con FPL, por lo que si está interesado en ayudar, o simplemente quiere saber más, ¡no dude en unirse! De lo contrario, simplemente puede crear un problema en GitHub.