Los inline bots de Telegram o como Telegram te saca de apuros

Este es uno de los capítulos del tutorial Exprimiendo Telegram. Crea tu propio bot para Telegram.. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.

Para terminar con este tutorial sobre como sacar el máximo provecho a Telegram, Exprimiendo Telegram, vamos a darle un vistazo a los inline bots de Telegram.

Si no conoces el concepto de los inline bots de Telegram, indicarte que son aquellos bots con los que puedes interactuar, simplemente llamándolos por su nombre y escribiendo un texto.

Uno de los inline bots de Telegram mas conocido es @gif. ¿Que es lo que hace este bot? Al escribir su nombre en cualquier grupo o chat, seguido por un texto, el bot, buscará una imagen gif relacionada con el texto que has puesto. Pero no solo tienes este inline bot, existen otros muchos como @youtube, @wiki, @imdb, @pic, @foursquare, que ya de por si son autoexplicativos.

Pero, no solamente esto, sino que además si le das permisos de geolocalización, la repuesta que de el bot puede estar condicionada a la ubicación geográfica del usuario.

Veamos como podemos sacar el máximo provecho a los inline bots de Telegram…

Los inline bots de Telegram o como Telegram te saca de apuros. Portada.

Inline bots de Telegram

Exprimiendo Telegram. ¿Como te pueden ayudar los inline bots de Telegram?

Al igual que ya comentamos en el artículo anterior sobre conversar con Telegram mediante un bot, vamos a ver a continuación algunas ideas con las que podemos exprimir Telegram y orientarlo hacia nuestro negocio o necesidad.

  • En el caso de que seas una cadena de restaurante o una franquicia, además de poder ofrecerle el menú del día, ofertas, y otro tipo de promociones, con un inline bot, puedes determinar cual es el restaurante más próximo a tu ubicación.
  • Para resolver dudas sobre el funcionamiento del equipo, orientando al usuario sobre las acciones que debe tomar. Por ejemplo, ofreciendo el manual del equipo, o en concreto alguna página del manual.
  • Ayudar al usuario a localizar una ubicación, mediante el envío de fotografías.
  • Resolver determinados problemas, y mucho mas.

Pero no solo esto, también podemos crear nuestros propios bots para buscar definiciones en un diccionario, como veremos mas adelante Lo cierto, es que como hemos visto en otros capítulos de este tutorial, las posibilidades que nos ofrecen los bots para tu negocio, o para cualquier actividad que realices, son realmente espectaculares.

Nuestro propio inline bot de Telegram

Una vez que hemos comentado las posibilidades que nos ofrecen los online bots de Telegram, vamos a crear el nuestro propio.

En este caso, al igual que hemos hecho en los otros capítulos de este tutorial, se lo vamos a asignar también a @senderbot. El funcionamiento será sencillo. Tan solo tendremos que llamar al bot, seguido de la palabra que queremos buscar, y este nos dará el resultado. Por ejemplo,

@senderbot esternocleidomastoideo

Este nos arrojará el siguiente resultado

Los inline bots de Telegram o como Telegram te saca de apuros. Ejemplo.

Construyendo nuestro inline bot de Telegram

Buscando una definición

El primer paso es crear una sencilla función en Python que nos busque la palabra en un diccionario online, y nos de el resultado. En particular, he intentado utilizar el diccionario de la RAE, pero no he conseguido hacer algo que fuera medianamente funcional. En su lugar, lo he hecho con WordReference.com, implementando el código que ves a continuación,

def definition(word):
    url = 'http://www.wordreference.com/definicion/%s' % (word)
    response = requests.get(url)
    if response.status_code == 200:
        doc = lh.document_fromstring(clean_html(response.text))
        trans = doc.find_class('trans')
        if len(trans) > 0:
            trans_tmp = ''
            for t in trans:
                trans_tmp = trans_tmp + lh.tostring(t,
                                                    method='text',
                                                    encoding='utf-8').decode()
                trans_tmp = trans_tmp.replace('.  ', '.\n')
                trans_tmp = trans_tmp.replace('. ', '.\n')
            return trans_tmp
    return None

Donde utilizo la librería lxml para resolver la definición de la palabra.

InlineQueryHandler, el negociador para los inline bots de Telegram

Para trabajar con nuestro bot en el modo inline, utilizaremos el negociador InlineQueryHandler, que además permite utilizar regex.

Los resultados encontrados de la consulta planteada por el usuario se muestran en modo lista, deonde cada elemento es un objeto de la clase InlineQueryResultArticle. Esta clase permite mostrar además del contenido, un título, una descripción, una pequeña miniatura e incluso la dirección web.

De esta manera podemos mostrar varios resultados y dejar que el usuario elija el que mas le convence, o el que mejor se adapta a sus necesidades.

De esta manera, el código para nuestra función sería el siguiente,

def inline_wordreference(bot, update):
    query = update.inline_query.query
    if not query:
        return
    results = list()
    results.append(
        InlineQueryResultArticle(
            id=query,
            title='Significado en WordReference',
            input_message_content=InputTextMessageContent(
                definition(query))
        )
    )
    bot.answer_inline_query(update.inline_query.id, results)

Mientras que la definición del negociador sería tal como puedes ver en las siguientes líneas de código,

inline_wordreference_handler = InlineQueryHandler(inline_wordreference)
dispatcher.add_handler(inline_wordreference_handler)

Se puede mejorar el código, haciendo que cada resultado vaya en una InlineQueryResultArticley así está contemplado en el código que he dejado a tu disposición.

Las definiciones de WordReference en tu Telegram

Al igual que he hecho en el resto de capítulos de este tutorial, he añadido la opción de utilizar senderbot para que te ayude a encontrar definiciones y utilizarlas en tus canales. De esta forma, si lo quieres tener en instalar y tienes ppaurl y hacer clic en senderbot.

En caso de que no tengas esta utilidad, siempre puedes ejecutar las siguiente órdenes en un terminal,

sudo add-apt-repository ppa:atareao/telegram
sudo apt update
sudo apt install senderbot

Si ya lo instalaste en versiones capítulos anteriores, solo tienes que actualizar el sistema, ejecutando la orden sudo apt update.

Una vez instalado o actualizado, solo te queda ponerlo en marcha. Para ello, ejecuta la orden,

senderbot -o

Por otro lado, si quiere sacar el máximo provecho de tu Raspberry Pi, puedes instalar este bot, pero además de seguir las instrucciones que indiqué en el capítulo anterior sobre conversar con Telegram, también tienes que instalar la librería python3-lxml. Para ello, ejecuta la orden,

sudo apt install python3-lxml

Por último, indicarte que he acutalizado el el código de este bot en GitHub.

Conclusiones

En este último capítulo, del tutorial Exprimiendo Telegram, hemos visto las características mas interesantes de los bots en Telegram. Como crear nuestros propios bots, y que podemos hacer con ellos.

Por supuesto, que lo que he comentado en estos capítulos del tutorial, son ejemplos sencillos que te pueden indicar las posibilidades que te ofrecen los bots. Se pueden hacer cosas realmente complicadas, pero sobre todo útiles y productivas.

Mas adelante, publicaré un nuevo tutorial sobre los bots de pago, pero ahora te voy a dejar descansar durante unas semanas, para que puedas tomar algo de perspectiva.

Por último, indicarte que si no quieres o no sabes o no tienes ningún interés en modificar el código del bot, pero quieres que añada una funcionalidad adicional que te interese, o que modifique una parte o lo que sea, para poder utilizar tu bot en tu equipo, no tienes mas que contactar conmigo a través del formulario de contacto. Según lo que me comentes veremos que se puede hacer…


Más información