creacion de bot para telegram

SaasCountries_bot: Creaci贸n de un bot para Telegram paso a paso

Telegram es una de las aplicaciones de mensajer铆a instant谩nea m谩s completas de la actualidad.

Creada por los hermanos D煤rov y lanzada al mercado en el a帽o 2013, se ha caracterizado por la innovaci贸n, obligando a las aplicaciones de su tipo a introducir mejoras o quedarse en el olvido.

Con una proyecci贸n en contra de la venta de tus datos a terceros, tan com煤n hoy en d铆a en las redes sociales, se convierte en una aplicaci贸n ideal para mantener tu privacidad.

Entre sus funcionalidades m谩s 煤tiles se encuentran los canales, chats secretos, mensajes con autodestrucci贸n programada, eliminaci贸n y modificaci贸n de mensajes, ajustes amigables con tu privacidad, chats de voz grupales y el uso de bots.

Precisamente sobre los bots estaremos conversando en el art铆culo de hoy en SaasRadar.

El objetivo que perseguimos es explicar un poco de teor铆a y que cuando termines seas capaz de programar tu primer bot y dejarlo en funcionamiento en Telegram.

Vamos a partir de lo b谩sico, primeramente:

驴Qu茅 es un bot de Telegram?

Un bot de Telegram es una aplicaci贸n desarrollada por un tercero con la que puedes interactuar mediante comandos.

Telegram apost贸 casi desde sus inicios por hacer p煤blica su API para que personas e instituciones aportaran funcionalidades a trav茅s de los bots, creando un ecosistema que la convierte en mucho m谩s que una simple aplicaci贸n de mensajer铆a.

Han pasado 6 a帽os desde la incorporaci贸n de estos amigos programados, y gracias a ellos, contamos hoy con funcionalidades para todo tipo de necesidad, desde moderar grupos, interactuar con otras redes sociales, enviar o recibir email, suscribirte a RSS de tus sitios preferidos o incluso jugar desde el chat.

Utilizando la API de Telegram y con algo de conocimiento de programaci贸n, puedes crear tu propia herramienta y compartirla con el mundo.

驴Te interesa?, pues s铆guenos, ya comenzamos.

Manos a la obra

  1. Crear el bot en Telegram con BotFather.

En el primer paso debemos registrar el bot en Telegram utilizando BotFather. Este, como su nombre indica, es el padre de todos los bots.

Permite crear nuevos bots, exponiendo el token que lo identifica para realizar consultas en nuestra programaci贸n con la finalidad de recibir los comandos provenientes de los usuarios y brindarles una respuesta.

Podemos acceder a BotFather en Telegram en la direcci贸n https://t.me/BotFather. Al iniciarlo nos mostrar谩 el siguiente mensaje.

Creaci贸n de bot para Telegram. BotFather paso 1

Utilizamos el comando /newbot para crear nuestro bot, al que llamaremos en este caso SaasCountries_bot.

El proceso de creaci贸n del bot nos pide el nombre y un usuario para que pueda ser encontrado.

La regla de Telegram es que todos estos usuarios terminen con el sufijo 鈥渂ot鈥.

Una vez completado este paso, BotFather enviar谩 un mensaje con el token de acceso al bot.

Este debe guardarse cuidadosamente ya que con esta informaci贸n cualquier persona puede tomar el control del bot.

Creaci贸n de bot para Telegram. BotFather paso 2

Al terminar estos pasos ya tenemos un bot en Telegram accesible para todos los usuarios.

Tienes en tus manos muchas opciones como cambiar la imagen del bot, descripci贸n y algunos modos para el trabajo en l铆nea, pero no nos vamos a detener en estos detalles, se los dejo a tu creatividad.

A continuaci贸n, le incluiremos los comandos que estar谩n disponibles. Para esto usamos /setcommands, seleccionamos al bot con el que estamos trabajando y le pasamos los comandos en un mensaje como se muestra:

Creaci贸n de bot para Telegram. BotFather paso 3

De este modo creamos los comandos start, stop, info_pais y capital, los cuales ya se pueden ver en el bot.

Creaci贸n de bot para Telegram. Comandos

Hasta el momento tenemos el bot y los comandos, pero estos tienen implementada ninguna funcionalidad, por lo que si los utilizas no obtendr谩s resultado. Ahora nos toca programar la respuesta a cada comando.

  1. Programar las funcionalidades del bot.

Como te dec铆a al inicio del art铆culo vamos a acceder ahora a la API de Telegram para recibir los mensajes que los usuarios le han mandado a nuestro bot.

Este proceso puede implementarse pr谩cticamente en cualquier lenguaje siempre que tengamos una librer铆a para hacer peticiones a API Rest.

En nuestro caso utilizaremos el lenguaje Python 3 y la librer铆a pyTelegramBotAPI en su versi贸n 3.7.2.

El primer paso ser铆a instalar Python. Puedes descargarlo desde su web oficial:

https://www.python.org/downloads/

Luego instalamos las librer铆as que necesitemos haciendo uso de pip, ser铆a escribir en la consola el siguiente comando:

pip install pyTelegramBotAPI==3.7.2

Al terminar este paso ya estamos listos para empezar a programar.

Creamos un fichero con extensi贸n .py, en nuestro caso SaaSCountry.py donde pondremos todo el c贸digo. Comenzamos por las declaraciones iniciales:

import telebot
import requests

API_TOKEN = 'Aqu铆 especificas el token de tu bot, el que nos dio BotFather antes'

bot = telebot.TeleBot(API_TOKEN)

De este modo ya tenemos las librer铆as necesarias importadas y le hemos dicho a la librer铆a telebot cual es el token de nuestro bot para que le realice las peticiones.

Esta parte es siempre igual, solo cambian los m贸dulos que se importan, a partir de aqu铆 ya cambia seg煤n las funcionalidades que quieras agregar.

Comenzamos con las funcionalidades:

@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(
        message.chat.id,
        'Bienvenido a SaasCountries_bot \n' +
        '\n' +
        'Creado para complementar el art铆culo https://saasradar.net, que muestra el proceso de implementaci贸n de un Bot paso a paso \n' +
        '\n' +
        'Tienes a tu disposici贸n los siguientes comandos: \n' +
        '/start : Iniciar bot \n' +
        '/stop : Detener bot \n' +
        '/info_pais <pa铆s>: Devuelve informaci贸n de un pa铆s dado \n' +
        '/capital <capital>: Devuelve el pa铆s dada su capital \n'
    )

Utilizando el decorador @bot.message_handler() podemos suscribirnos a un determinado tipo de mensajes, en este caso al comando start.

A continuaci贸n, definimos la funci贸n que responder谩 a este comando, que recibe por par谩metro el mensaje que envi贸 el usuario.

El comando bot.sendmessage(id,message) recibe el id de un chat al cual mandarle el mensaje, el cual se especifica como segundo par谩metro.

馃敶 驴Eres desarrollador? Mira nuestra selecci贸n de las mejores herramientas de prueba de software

En este caso utilizamos el id del chat desde el cual nos enviaron el mensaje y le devolvemos un mensaje de bienvenida.

Ahora vamos a implementar el comando capital, el cual recibir谩 una capital y devolver谩 el pa铆s al que pertenece utilizando la API RestCountries.

@bot.message_handler(commands=['capital'])
def capital(message):
    arr = message.text.split(' ')
    capital = ''
    for word in arr:
        if (word != arr[0]):
            capital += word
            if (word != arr[-1]):
                capital += ' '
    url = 'https://restcountries.eu/rest/v2/capital/' + capital
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        bot.send_message(
            message.chat.id, data[0]['name'])
    else:
        bot.reply_to(
            message, 'No se ha podido encontrar la capital, aseg煤rese de escribirla con su nombre en ingl茅s')

En el c贸digo anterior dividimos el mensaje en 2 partes, el comando (/capital) y el par谩metro del comando que ser铆a la capital que buscaremos.

Luego buscamos la capital en la API de RestCountries y si devuelve un resultado satisfactorio (c贸digo 200) entonces convertimos la respuesta a formato json y enviamos un mensaje al chat con el nombre del pa铆s utilizando send_message.

En caso que no se encuentre en la API entonces devolvemos el mensaje correspondiente.

Pasamos ahora a la 煤ltima funcionalidad que incluiremos en el bot, el comando /info_pais.

Este comando debe devolver la informaci贸n de un pa铆s que se le especifique o de varios si el nombre es ambiguo. El c贸digo que proponemos es el siguiente:

@bot.message_handler(commands=['info_pais'])
def info_pais(message):
    arr = message.text.split(' ')
    country = ''
    for word in arr:
        if (word != arr[0]):
            country += word
            if (word != arr[-1]):
                country += ' '
    url = 'https://restcountries.eu/rest/v2/name/' + country
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        text = ''
        if (len(data) != 1):
            text += 'Se encontraron ' + \
                str(len(data))+'elementos en su b煤squeda'
        for item in data:
            text += '\n \n'
            text += 'Informaci贸n sobre ' + item['name'] + '\n'
            text += 'Poblaci贸n: ' + str(item['population']) + '\n'
            text += 'Regi贸n: ' + item['region'] + '\n'
            text += 'Subregi贸n: ' + item['subregion'] + '\n'
            text += 'Capital: ' + item['capital'] + '\n'
            text += 'Idiomas: '
            for lang in item['languages']:
                text += lang['name']
                if (lang != data[0]['languages'][-1]):
                    text += ', '

        bot.send_message(
            message.chat.id, text)
    else:
        bot.reply_to(
            message, 'No se ha podido encontrar el pa铆s, aseg煤rese de escribirlo con su nombre en ingl茅s')

En la primera parte igualmente separamos el comando del nombre del pa铆s como en el caso anterior y consultamos la API.

Convertimos el resultado a json y recorremos los resultados mostrando de cada pa铆s el nombre, su poblaci贸n, regi贸n, subregi贸n, capital y sus idiomas.

Terminamos el script con:

bot.polling()

Para continuar la ejecuci贸n del script indefinidamente esperando mensajes de los usuarios que deseen interactuar.

De este modo queda terminado nuestro bot, lo podemos ejecutar en nuestra PC local o subirlo a alg煤n hosting. El comando para ejecutarlo es:

python nombrefichero.py (En nuestro caso python SaaSCountries.py)

Puedes probar los comandos ahora desde Telegram y ver谩s los resultados que programamos en nuestro script.

En el c贸digo del bot utilizamos send_message() y reply_to() para enviar y responder mensajes respectivamente.

Ahora te muestro otras funcionalidades que pueden servirte al desarrollar tu bot:

bot.edit_message_text(texto, chat_id, message_id)
bot.forward_message(to_chat_id, from_chat_id, message_id)
bot. send_audio(chat_id, audio)
bot.send_document(chat_id, doc)
bot.send_video(chat_id, video)
bot.send_location(chat_id, lat, lon)

Te recomiendo que visites la web https://pypi.org/project/pyTelegramBotAPI/ para obtener m谩s informaci贸n sobre la librer铆a de Python con la que hemos trabajado en el d铆a de hoy.

Te dejo adem谩s el bot en l铆nea por un tiempo para que puedas probar las funcionalidades que hemos implementado paso a paso. Puedes localizarlo en https://t.me/SaaSCountries_bot

Por hoy me despido, espero que te haya resultado de utilidad el art铆culo y puedas llevar tus ideas a la pr谩ctica utilizando Telegram.

D茅janos saber tus impresiones o dudas en los comentarios.

馃敶 Tambi茅n te puede interesar leer: Las mejores alternativas a Whatsapp con sus pro y sus contra

Yasmani T谩panes
脷ltimas entradas de Yasmani T谩panes (ver todo)

2 comentarios

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende c贸mo se procesan los datos de tus comentarios.