Bot de Telegram para el Exchange Bitso para Ethereum

in spanish •  7 years ago 

Bienvenidos a otro post, en esta ocasión presentaré un pequeño código, un bot para la red de telegram que nos ayuda a verificar el precio del ethereum en bitso.

https://d.tube/v/eolandro/yckle1p1

No es un bot muy extenso, a continuación se explicara el código

Lo primero es importar las bibliotecas de python, la primera linea es de python telegram bot que nos ayuda a crear los bots en telegram; la segunda es urllib para crear peticiones htttp; y la ultima para el manejo de json.

from telegram.ext import Updater, CommandHandler
from urllib import request
import json

Posteriormente creamos una función para contestar el comando por defecto en telegram start. Requiere dos parámetro el bot que lo ejecuta y el update, que tendrá la información de la respuesta.

def Saludo(bot, update):
    MSG = 'Hello {}'.format(update.message.from_user.first_name) + "."
    MSG += 'Este bot te permite consultar el precio del eth en bitso, ejecuta /eth'
    update.message.reply_text(MSG)

Las primeras dos lineas es solo para crear el mensaje y la ultima es para enviar el mensaje al usuario que lo solicitó. la siguiente función es la realizara la magia, realizara una petición a la api publica de bitso y obtendrá el precio del eth y enviara a un mensaje al usuario en cuestión.

def eth(bot, update):
    url = "https://api.bitso.com/v3/ticker/?book=eth_mxn"
    req = request.Request(url, data=None, headers={'User-Agent': 'curl/7.57.0'})
    R = request.urlopen(req)
    #De vuelve una lista
    lineas = R.readlines()
    # En la primera posicion esta la respuesta en json
    jdata = json.loads(lineas[0])
    update.message.reply_text(jdata['payload']['last'])

Dado que bitso, no acepta el User-Agent por defecto lo cambiamos al de CURL para que nos permita solicitar información, esto se realiza en la linea 2 de la función eth.
Posteriormente, ejecutamos dicha petición (linea 3) , almacenando toda la respuesta en la variable lineas (linea 5) y finalmente convertir a json dicha respuesta y enviar el precio del eth en el mensaje (lineas 6 y 7 respectivamente ).

Ya solo falta colocar la llave del botfather, y la configuración de arranque básica .

import logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',level=logging.INFO)

#                   Token del botfather
updater = Updater('LLAVE AQUI')
#                                   º       NombreComando, Funcion
updater.dispatcher.add_handler(CommandHandler('start', Saludo))
updater.dispatcher.add_handler(CommandHandler('eth', eth))

updater.start_polling()
updater.idle()

El import nos permite , verificar los errores que pueda tener el bot, pues al ser una aplicación multihilo, si una función falla, no se detendrá el bot. El Updater es objeto que nos permite verificar los cambios en la red de telegram, en el se deben registrar todos los comandos y la funciones asociadas a esos comandos, esto se realiza con el método: updater.dispatcher.add_handler. Finalmente comenzamos a ejecutar los hilos y colocamos en espera al bot (start_polling e idle )

Ya solo falta ejecutarlo en python en algún equipo, lo mas fácil es ejecutar el bot con virtualenv, aquí también deje un vídeo de como realizar ese paso.

Si alguien le interesa dejo el enlace de GitHub

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @eolandro! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

el segundo vídeo resubido.