Cómo crear un bot de Telegram básico

 

Contexto

Cuando se busca transmitir y comunicar información con tusclientes, es necesario ponerte en su lugar y, a la vez, en el tuyo propio. Dime, cuando contactas con una empresa, ¿Qué medio utilizas? ¿Y cuál, para ti,es el medio más efectivo como usuario?

Seguramente estés pensando en lo que tenga el mayor contacto humano posible, sin embargo indudablemente en esta vida cada vez más aceleradase nos hace imprescindible algún medio de comunicación a distancia, inmediato y eficaz.

Y dime ahora, cuando contactas con tu familia, tus amigos y conocidos, olvidando por un momento el ámbito profesional, ¿Qué medio te resulta más cómodo?

Según un estudio realizado en 2016 (puedes imaginarte qué resultados seobtendrían hoy):

Un 91,6% usa la mensajería, incluso por encima de la comunicación en persona.”

Ya sea para transmitir información directa, que utilicen tus servicios u ofrecer asistencia, el mercado está evolucionando en un mismo sentido.

En este último caso, se espera que en 2020 el 33% de los contactos por necesidad de asistencia inmediata sean a través de chat (aunque yo apostaría incluso más alto), mientras que a la hora de hacer llegar contenido directo, los chats disponen de una envidiable tasa de distribución del 100% frente a sus principales competidores como son las redes sociales.

Requisitos

Y aunque podría pasar horas describiendo las ventajas del chat sobre cualquier negocio, mi objetivo de hoy es, una vez que tengas claro que quieres seguir este camino, enseñarte a crear tu primer bot de Telegram totalmente funcional.

Carlos, yo no sé programar…

Tranquil@. Para crear un bot de Telegram conmigo solo necesitarás:

  • Un equipo/ordenador.
  • Ganas de aprender y de mejorar tu negocio.

 

Si bien es cierto que lo programaremos, te explicaré elcódigo de manera que sólo tengas que modificar puntos clave para personalizarlo y, por supuesto, al final del artículo tendrás todo el código disponible y listo para descargar y ejecutar.

¡Así sí! Ahora voy a descargármelo y me olvido de leerme toda tu parrafada.

¡EH, EH, ALTO! Tú mismo, pero si no tienes experiencia en programación o en el desarrollo de bots para Telegram y no quieres pegarte toda una tarde dando cabezazos contra el teclado para averiguar qué hace cada línea de código, te recomiendo que sigas leyendo. Estoy aquí para ayudarte (:

tunuevodiosTu nuevo Dios

Como en todo, empecemos por los orígenes. Y es que todo Bot de Telegram tiene su origen en @BotFather, el padre de los bots. Hablando con él podrás crearlos, modificar sus datos básicos y asignarle los comandos o acciones principales.

¡No te cortes, habla con él y crea tu primer bot!

 

Como ves, tienes montones de comandos para gestionar tus bots. Pero los esenciales son los que verás a continuación.

 

 

/newbot

———————–>

Ten en cuenta quecuando te pregunta por el nombre se refiere al nombre que aparecerá arriba cuando hables con él, mientras que el nombre de usuario es el que utilizarás para mencionarle: @PasionSeoBot

 

¡IMPORTANTE!: BotFather te habrá dado un TOKEN (una frase aparentemente aleatoria de números y caracteres como esta 551463355:ABHIhZ33hDacsWV8a6Z6kYbBqLGqi3e-AP). Guárdala bien y no la compartas con nadie. Esta es la llave de acceso que permitirá que el código que escribas, al ejecutarlo, funcione en tu bot. Por eso es importante que nunca la pierdas y que nadie la sepa, si no cualquiera podría ejecutar cualquier código sobre tu bot.

 

 

Sí, lo hemos creado. ¡Pero sin configurarlo y programarlo poco podrá hacer por nosotros!

 

/setuserpic

/setabouttext

/setdescription

 

Como has podido ver, aunque puedes programar el bot para hablar libremente con él, los comandos son la manera más sencilla e intuitiva de utilizarlos, facilitando al usuario un enlace directo a las funcionalidades principales.

/setcommands

———————–>

 

 

¡Ya lo sé! Tú lo que quieres es que te responda… ¡Vamos a por ello!

 

Manos a la obra

Esto es lo mínimo e indispensable que necesitas para programar tu bot (y lo resaltado en blanco, lo único que tendrías que modificar para personalizarlo):

 

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import telegram

import telegram.ext

def start(bot, update):

    update.message.reply_text("Hola, ¿En qué puedo ayudarte? 😀")

def main():

    updater = telegram.ext.Updater("512361253:AABCjU33hDwcsWV8n6Z9kYbBqLGhi3e-APc")
    dp = updater.dispatcher

    dp.add_handler(telegram.ext.CommandHandler("start", start))
    updater.start_polling()
    updater.idle()
if __name__ == '__main__':
    main()

 

 

¡Ha cobrado vida!

 

¡Carlos espera, no entiendo nada! ¿Qué es eso que has escrito? ¿Y cómo hago para que se ejecute?

En la descarga que encontrarás al final del artículo, verás un archivo llamado “PasionSeoBot.py” (guarda todos los archivos y carpetas en un mismo sitio, tal y como vienen), luego solo tendrás que editarlo, cambiar el TOKEN por el que te dio BotFather, guardar los cambios y ejecutarlo con Python.

Ehm… ¿Py-Qué?

Python es un lenguaje de programación. Para usarlo primero deberás instalarlo, luego abrir una consola/terminal con tu Windows, Mac o Linux y por último ejecutar el archivo de tu bot. ¡Sigue las instrucciones de esos enlaces y si tienes alguna duda no dudes en preguntarme en los comentarios!

Si te fijas bien en cómo está configurado el comando /starten el código, para introducir otro comando solo tendrías que hacer 2 modificaciones. Veámoslo configurando el comando /ayuda (lo resaltado en verde sería lo único a añadir, mientras que lo blanco, como siempre, es lo único que habría que modificar para personalizarlo a tus necesidades):

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import telegram

import telegram.ext

def start(bot, update):

    update.message.reply_text("Hola, ¿En qué puedo ayudarte? 😀")

def ayuda(bot, update):

    update.message.reply_text("""Aprende los mejores trucos SEO con PasionSeo.

Aprende un nuevo consejo con el comando /consejo o un sitio con Dofollow con el comando /dofollow.

¡Y si quieres estar al día con articulos del sector, visita www.pasionseo.com!""")

def main():

    updater = telegram.ext.Updater("512361253:AABCjU33hDwcsWV8n6Z9kYbBqLGhi3e-APc")
    dp = updater.dispatcher

    dp.add_handler(telegram.ext.CommandHandler("start", start))
    dp.add_handler(telegram.ext.CommandHandler("ayuda", ayuda))
    updater.start_polling()
    updater.idle()
if __name__ == '__main__':
    main()

 

 

Y así podrías configurar cualquier comando informativo o de respuesta simple, es decir, que devuelva un texto preestablecido.

Habrás notado que esta vez el texto de respuesta está envuelto en 3 comillas dobles en el código (“””), esto simplemente nos permite escribir un texto con varios párrafos, o lo que es lo mismo, con saltos de línea.

 

Veamos ahora cómo configurar un comando que devuelva una frase aleatoriamente de entre una lista de frases preestablecida por nosotros. Para ello configuraremos el comando /consejo:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import telegram
import telegram.ext
import random

def start(bot, update):
    update.message.reply_text("Hola, ¿En qué puedo ayudarte? 😀")

def ayuda(bot, update):
    update.message.reply_text("""Aprende los mejores trucos SEO con PasionSeo.

Aprende un nuevo consejo con el comando /consejo o un sitio con Dofollow con el comando /dofollow.

¡Y si quieres estar al día con articulos del sector, visita www.pasionseo.com!""")

def consejo(bot, update):
    lista = [
        "Si lo que tienes es un negocio local, puede interesarte la aplicación Foursquare, con ella podrás recompensar a los clientes que acuden frecuentemente a tu establecimiento; El Corte Inglés, Jimmy Choo, Dominios pizza, Telepizza, Danone, Pepsi, Lufthansa,… y muchas otras marcas han hecho sorteos, retos y gynkanas maravillosas con esta aplicación y, a su vez, haciendo ruido en las redes sociales.", 
        "No me pongas un código QR enorme si después de molestarme en echar la foto me vas a llevar a tu HOME. ERROR. 7 de cada 10 personas que han abierto un QR afirman que no mereció la pena.", 
        "Para que la experiencia de compra sea única, debemos centrarnos previamente en entender el comportamiento del cliente o consumidor. Y luego, darle paso a la tecnología.",
        "El Email Marketing es una de las acciones mas rápidas de realizar,  reduciendo el tiempo y el esfuerzo en enviar las novedades de una web, tanto si es información o productos para un e-commerce.",
        "El Email Marketing es fácilmente medible en repercusión y efectividad. Mensajes enviados, recibidos, abiertos, geolocalizados (y un largo etc.)",
        "En cuanto a la publicación de fotos en Instagram y la utilización de tu perfil como escaparate para las marcas, realmente está demostrado que esta clase de marketing de contenidos funciona y muy bien.",
        "La inyeccion de Likes en las publicaciones o reproduccion en el caso de los videos, se utiliza para nivelar la balanza de las continuas restriucciones de algoritmo de Instagram, el mismo que hemos sufrido en Facebook.",
    ]
    update.message.reply_text(random.choice(lista))

def main():
    updater = telegram.ext.Updater("512361253:AABCjU33hDwcsWV8n6Z9kYbBqLGhi3e-APc")
    dp = updater.dispatcher

    dp.add_handler(telegram.ext.CommandHandler("start", start))
    dp.add_handler(telegram.ext.CommandHandler("ayuda", ayuda))
    dp.add_handler(telegram.ext.CommandHandler("consejo", consejo))

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

 

 

¡Listo! Si es que lo que no aprendas en PasionSeo…

 

¿Y qué pasa si quieres acompañar al texto de una imagen? ¡Veámoslo en la práctica con el comando /dofollow!:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import telegram
import telegram.ext
import random

def start(bot, update):
    update.message.reply_text("Hola, ¿En qué puedo ayudarte? 😀")

def ayuda(bot, update):
    update.message.reply_text("""Aprende los mejores trucos SEO con PasionSeo.

Aprende un nuevo consejo con el comando /consejo o un sitio con Dofollow con el comando /dofollow.

¡Y si quieres estar al día con articulos del sector, visita www.pasionseo.com!""")

def consejo(bot, update):
    lista = [
        "Si lo que tienes es un negocio local, puede interesarte la aplicación Foursquare, con ella podrás recompensar a los clientes que acuden frecuentemente a tu establecimiento; El Corte Inglés, Jimmy Choo, Dominios pizza, Telepizza, Danone, Pepsi, Lufthansa,… y muchas otras marcas han hecho sorteos, retos y gynkanas maravillosas con esta aplicación y, a su vez, haciendo ruido en las redes sociales.", 
        "No me pongas un código QR enorme si después de molestarme en echar la foto me vas a llevar a tu HOME. ERROR. 7 de cada 10 personas que han abierto un QR afirman que no mereció la pena.", 
        "Para que la experiencia de compra sea única, debemos centrarnos previamente en entender el comportamiento del cliente o consumidor. Y luego, darle paso a la tecnología.",
        "El Email Marketing es una de las acciones mas rápidas de realizar,  reduciendo el tiempo y el esfuerzo en enviar las novedades de una web, tanto si es información o productos para un e-commerce.",
        "El Email Marketing es fácilmente medible en repercusión y efectividad. Mensajes enviados, recibidos, abiertos, geolocalizados (y un largo etc.)",
        "En cuanto a la publicación de fotos en Instagram y la utilización de tu perfil como escaparate para las marcas, realmente está demostrado que esta clase de marketing de contenidos funciona y muy bien.",
        "La inyeccion de Likes en las publicaciones o reproduccion en el caso de los videos, se utiliza para nivelar la balanza de las continuas restriucciones de algoritmo de Instagram, el mismo que hemos sufrido en Facebook.",
    ]
    update.message.reply_text(random.choice(lista))

def dofollow(bot, update):
    chat_id = update.message.chat_id
    lista = [
        ("http://os.dotq.org/", "dofollow1.png"),
        ("http://www.internetmarketing-tipps.de/", "dofollow2.png"),
        ("http://www.repossessedcars2009.com/", "dofollow3.png"),
        ("http://prohumorist.com/", "dofollow4.png"),
    ]
    choice = random.choice(lista)
    bot.send_photo(chat_id=chat_id, photo=open("imagenes/{}".format(choice[1]), 'rb'))
    update.message.reply_text(choice[0])

def main():
    updater = telegram.ext.Updater("512361253:AABCjU33hDwcsWV8n6Z9kYbBqLGhi3e-APc")
    dp = updater.dispatcher

    dp.add_handler(telegram.ext.CommandHandler("start", start))
    dp.add_handler(telegram.ext.CommandHandler("ayuda", ayuda))
    dp.add_handler(telegram.ext.CommandHandler("consejo", consejo))
    dp.add_handler(telegram.ext.CommandHandler("dofollow", dofollow))

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

 

 

Mucho mejor, ¿no?

En este caso debes tener en cuenta que tus imágenes deben encontrarse en la carpeta “imagenes” que hay junto al archivo de tu bot y no en otro sitio.

 

¡Y esto es todo por hoy! Pronto me veréis de nuevo por aquí con nuevos artículos para hacer un bot más avanzado (incluyendo botones y teclados personalizados y pudiendo mantener una conversación guiada con ellos). Y si encima os gusta el tema y queréis tener uno corriendo 24/7 en un servidor… ¡No os lo podéis perder!

 

 

 Carlos A. MATA – Ingeniero de Software

 

 Apasionado de 10 cosas: la tecnología y la música. Dirijo, diseño y desarrollo proyectos software de la oficina a mi casa.

 Encuéntranos en:  

 

¿Por qué un bot de Telegram y no de Whatsapp, Facebook Messenger, etc.? ¿Por qué debería elegir el uso de bots en vez de crear una App para mi negocio? ¿Y si quiero enviar imágenes a través de una URL en vez de que estés guardadas? Si te surge una de estas dudas o cualquier otra, ¡No dudes en preguntarme en los comentarios! Estaré encantado de ofreceros mi opinión, conocimiento y debatir con vosotros (:

 

 

suscribete a los comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *