Sign inSign up

miguelmoral/iv

By miguelmoral

•Updated over 9 years ago

proyecto de bot de telegram

Image
0

1.1K

miguelmoral/iv repository overview

⁠IV- Bot de telegram para consultar los resultados de las sesiones de moto GP

⁠Proyecto a realizar

Telegram.me Build Status Heroku Deploy Docker Azure

Se va a llevar a cabo la realización de un bot de Telegram para ver información sobre los grandes premios de Moto GP pudiendo hacer consultas de posición de los pilotos o tiempos de estos en distintos grandes premios que se hayan corrido. Para ello se hará uso del web scraping sacando de está forma los datos que nos sean útiles. La web que he elegido para coger la información es esta en concreto ya que el formato no varia, tan solo cambia para los grandes premios que se han corrido en 2016 pero ese problema se puede solucionar de forma facil ya que todos los grandes premios de 2016 tienen el mismo formato entre ellos.

⁠Servicios que se van a utilizar:

  • Herramienta beautifulsoup para escrapear los datos de la web de donde se quiere extraer la información.
  • Phyton para desarrollar el bot.
  • Servidor de base de datos sqlite.
  • Despliege en la nube.
  • Monitorización.
⁠Descripción del proyecto:

El proyecto sobre el que se van a realizar lso tests de integración continua es un bot de telegram al cuál le podremos consultar los resultados de distintas sesiones y este bot nos responderá con esta información.

⁠Integración continua:

En esta práctica he utilizado travis CI para realizar los test de integración continua, para que travis analice nuestro repositorio tendremos que incluir un fichero .travis.yml cuyo contenido ha de ser parecido al siguiente:

language: python
python:
  - "2.7"

# command to install dependencies
install: make install

# command to run tests
script: make test

Para que nos funcione tendremos que hacer un Makefile de este estilo:


install:
	pip install -r requirements.txt

test:
	cd bot_motoGP && python tests.py

ejecutar:
	cd bot_MotoGP && python bot.py

Como la aplicación utiliza un token el cuál no está incluido en el código por motivos de privacidad, tendremos que crearnos en Travis una variable de entorno con dicho token para que pueda ejecutar nuestra aplicación. Esta opción de añadir una variable de entorno la encontraremos en el apartado settings del repositorio que deseemos dentro de la web de Travis.

Una vez subamos nuestro proyecto a github y habilitemos en travis ese repositorio empezará a ejecutar los test mostrándonos la siguiente imagen, en la cuál podemos ver que se han ejecutado 3 test de forma exitosa:

imagenTravis

Si todo está correcto y se pasa el test travis nos mostrará lo siguiente

Build Status

⁠Como usar:

Para ejecutar el bot introduciremos python bot.py , una vez que el bot se está ejecutando podremos introducir los siguientes comandos:

  • /carreras #Devolverá una lista con las carreras disponibles y su correspondiente código que nos servirá para el comando /resultados
  • /resultados AÑO COD_CARRERA SESION #Con este comando el bot nos mostrará los resultados en el año y carrera seleccionados, opcionalmente se podrá pasar el argumento sesión(Q1,Q2), en caso de dejar el espacio en blando por defecto mostrará los resultados de la sesión carrera.
⁠Despliegue en un pass:

Para el despliegue me he decidido por utilizar Heroku para desplegar mi aplicación. Una vez nos registremos en la web Heroku tendremos que crear un nuevo proyecto y una base de datos asociada a este, para ello ejecutaremos los siguientes comandos, para la creación de la aplicación heroku create y para la creación de la base de datos heroku addons:create heroku-postgresql:hobby-basic . Podremos ver en la web de Heroku que tanto la aplicación como la base de datos están correctamente creadas. El siguiente paso será enlazar nuestra cuenta de github con Heroku. Para ello tan solo tendremos que acceder a account settings y activarlo

heroku-github

Una vez hecho tendremos que seleccionar el repositorio de GitHub que queremos enlazar con Heroku para que nuestra app se suba de forma correcta. Podremos gestionar la base de datos que hemos creado en Heroku desde la terminal de nuestro PC, para ello necesitaremos acceder a las credenciales de nuestra base de datos, en la sección databases podremos acceder a la información de todas las bases de datos que tengamos creadas (En caso de estar trabajando con una cuenta gratuita sin introducir tarjeta de crédito el número máximo tanto de aplicaciones como de bases de datos será 4). Esta es toda la información que nos aporta Heroku sobre las bases de datos, para conectarnos a ella tendriamos que introducir un comando especificado en las credenciales (en la captura no se muestran las credenciales por motivos de seguridad)

imagendb

En este momento tenemos nuestra aplicación de github enlazada con Heroku tan solo nos quedaría crear un archivo Procfile para la ejecución en Heroku en nuestro repositorio con el siguiente contenido:

worker: python bot_motoGP/bot.py

Además tendremos que declarar tanto en Heroku como en TravisCI las variables de entorno con el Token del bot de Telegram como el de la DATABASE_URL para poder acceder a la DB creada en Heroku que está enlazada con el proyecto de Heroku.

El último paso será configurar en Heroku que se realice el deploy tan solo cuando se pasen correctamente los test unitarios para ello nos tendremos que dirigir a la sección deploy de nuestra aplicación, una vez que la tenemos configurada correctamente debería tener un aspecto similar a este:

finalapp

Una vez que se evaluen los test unitarios de nuestra aplicación en TravisCI en mi caso veremos como nuestra aplicación se despliega en Heroku:

deployapp

En este momento nuesto bot esta desplegado y es totalmente funcional. Podemos ver los logs introduciendo en la carpeta donde se encuentre nuestro bot el comandoheroku logs --tail y podemos ver como ejecuta los comandos que queramos sin nigún problema además de estar funcionando el bot.

logs

Podremos ver que el bot funcina perfectamente hablándole (alias del bot @Prueba567_bot)

⁠Entorno de pruebas:

Para descargar el contenedor de docker tendremos que ejecutar:

  • sudo docker pull miguemoral/iv
  • sudo docker run -e "TOKENMOTOGP=INTRODUCIR_TOKEN_DEL_BOT" -e "DATABASE_URL=INTRODUCIR_URL_DE_LA_BD" -i -t miguelmoral/iv /bin/bash

Una vez estemos dentro:

  • cd IV
  • make ejecutar
⁠Despliegue en un IAAS:

Crearemos una máquina virtual para el proyecto aprovisioada con todo lo necesario gracias a un archivo ansible.yml

Comando para crear la máquina en azure utilizando vagranfile y el archivo de aprovisonamiento vagrant up --provider=azure

Comando para gestionar la máquina virtual sudo vagrant ssh

Comando para gestionar la máquina con fabric (Tras configurar correctamente el archivo fabfile.py): fab -p "contraseña" -H [email protected] comando_a_ejecutar

Comando para despliege automático: sudo ./despliege.sh

Más información en enlace⁠

Tag summary

Content type

Image

Digest

Size

233.7 MB

Last updated

over 9 years ago

docker pull miguelmoral/iv