Git Product home page Git Product logo

amazonshopping_bot's Introduction

Hackathon bot

Ejemplo de bot desplegado en Heroku para el hackathon del Aula de Software Libre.

Instalación en el servidor

Es imprescindible tener cuenta en Heroku para acelerar la instalación. Para desplegar la aplicación en heroku pulse el siguiente botón:

Deploy

Cuando Heroku se lo solicite indique el token de su bot. El nombre de la aplicación debe coincidir con el dato solicitado en HEROKU_APP_NAME.

Una vez Heroku termine de desplegar la aplicación, el bot estaré listo para ser usado.

Instalación en local

Si bien podemos tener el entorno de producción en Heroku, también tendremos un entorno de desarrollo donde ir probando nuestro bot. Es importante no compartir el mismo token del bot de producción con el que se tenga en desarrollo. Se recomienda que cada miembro del equipo se cree un bot de desarrollo propio.

Configuración

Dentro del archivo __application/__init.py__ se inicializan las variables necesarias para que el bot funcione.

Este archivo exporta principalmente dos variables:

  • bot: Se debe importar en todos los archivos que quieran hacer uso de la API que ofrece la librería de pyTelegramBotAPI.
  • app: Se debe importar en todos los archivos que quieran hacer uso de la API que ofrece la librería de Flask.

Para configurar las variables que necesitamos en local copiar el archivo siguiente:

cp .env.dist .env

Editar el archivo .env y configuramos el token de nuestro bot. El resto de variables se puede dejar como están.

Ejecución

En local

Para instalarlo en local es necesario tener instalado python2.7 o python3.x y virtualenv. Python viene instalado por defecto en cualquier distribución, pero virtualenv es probable que no.

Para instalar virtualenv en Debian/Ubuntu hacemos lo siguiente:

sudo apt-get install virtualenv

Una vez instalados vamos a instalar las dependencias e iniciar el entorno virtual de python:

virtualenv venv
source venv/bin/activate
pip install -r requirements.txt

Ahora para iniciar el bot, todo lo que debemos hace es ejecutar el archivo main.py.

python main.py

Siempre debemos hacerlo en una consola con el entorno virtual cargado.

Funciones

Dentro del directorio application se pueden añadir nuevas funciones, ya sea en los archivos existentes o en archivos nuevos.

Las funciones de Telegram, ya sean comandos o expresiones regulares, irán con la anotación correspondiente que permite la librería pyTelegramBotAPI.

Para más información, leed la documentación de pyTelegramBotAPI.

Un template para un nuevo archivo de funciones es el siguiente:

# coding=utf-8
from application import bot


@bot.message_handler(commands=['test'])
def test(message):
    bot.reply_to(message, "Prueba")

Es necesario importar ese nuevo fichero en application/__init__.py donde se indica (al final del archivo). El orden es importante, porque la primera orden que coincida es la que se ejecuta.

Base de datos

En local se crea un archivo en /tmp/flask_app.db con la base de datos en sqlite. En remoto, se crea en una base de datos de postgresql proporcionada por Heroku.

Esquema

Dentro del directorio model se ha creado una clase dentro del archivo chat.py que sirve de ejemplo para crear tablas dentro de la aplicación.

Para más información, leed la documentación de Flask-SQLAlchemy

Un template para una nueva clase es el siguiente:

from model import db

class Tabla(db.Model):
    ___table__name = 'tabla'
    id = db.Column(db.Integer, primary_key=True)
    
    # Métodos get/set

Es necesario importar el fichero en model/__init__.py donde se indica.

Clase Chat

Se adjunta una clase Chat que permite almacenar valores en una tabla. Se puede indicar el chat asociado al dato (chat), el nombre del dato (key) y su valor (value). Si se quiere un dato que exista para cualquier chat se puede usar como identificador de chat el 0 (cero).

Un ejemplo de uso se encuentra en application/db.py.

## Referencias

Para obtener APIs abiertas podeís consultar el siguiente repositorio de Github:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.