🐍📓 Mi agenda Python: #1 Telepot

in #steemstem6 years ago (edited)

🐍📓 Mi agenda Python: #1 Telepot


Por Enio...


Saludos estimados steemianos y lectores de #STEM-Espanol, #SteemSTEM, #Curie, #Utopian-io y demás comunidades de Steemit.

Para esta ocasión les presento una nueva serie de posts en la cual abordaremos distintas herramientas de programación relacionadas con el lenguaje de programación Python, el cual es mi favorito y cuya aplicación ha sido demostrada por mí en algunas ocasiones durante mi blogging aquí en Steemit. Esta serie se reconocerá fácilmente por el prefijo con el cual la bautizo y que usaré en el título de sus respectivos posts: Mi agenda Python.

En esta serie hablaremos sobre snippets, scripts, bibliotecas (‘librerías’), frameworks, programas de aplicación, etc., todo lo cual estará basado en Python, y son distintas herramientas que pueden utilizar los programadores como piezas clave en el desarrollo de una solución informática, algunas que son todo un clásico, otras más recientes, algunas muy famosas y una que otra interesante joya por conocer.

El contenido a abordar en esta serie no será ni pretenderá ser exhaustivo; no será una guía de consulta técnica, pues para eso están las documentaciones oficiales que bien serán referidas. La intención es dar a conocer aspectos de herramientas en Python que pueden ser muy útiles y que personalmente me parecen interesantes. Algunas de ellas las he utilizado y otras están en mi ruta de aprendizaje. Además, también se pretende aportar valor didáctico y dar ejemplos personalizados.

Procuraré hacer esta serie tomando en cuenta dos tipos de audiencia: los especialistas y los no-especialistas. De esta manera, los lectores programadores podrán beneficiarse de los aspectos técnicos abordados, pues al fin y al cabo mi área es la tecnología informática. No obstante, si bien gran parte del contenido requiere conocimientos previos en términos de desarrollo de software, también se incluirán comentarios o secciones donde se explicarán conceptos que ayuden al lector promedio a asimilar aspectos del contenido y apreciar su pertinencia y aplicación, como también a ampliar su cultura informática.

Espero les guste.


Nombre del Recurso

Telepot


Aclarando conceptos...



Ya en pasadas ocasiones hemos hablado de los bots y de lo que son capaces de hacer. De hecho, hemos desarrollado algunas aplicaciones chatbots y las hemos implementado como soluciones informáticas para problemas tanto hipotéticos como reales. También hemos hablado recientemente sobre el web scraping, que es una técnica de programación que funge de base para la programación de muchos bots, especialmente los de tipo web crawler, esto es, programas que realizan tareas automatizadas y ‘ejecutivas’ en la red sin prestar servicio directo al cliente humano.

Con ello, entonces, podemos introducir una forma de clasificación de los bots en función de su interacción con un usuario humano: aquellos que interactúan con seres humanos y aquellos que no. Un ejemplo de estos últimos son ciertos programas rastreadores los cuales apenas notaríamos si no fuese porque porque de vez en cuando tenemos que toparnos con un captcha y porque algunos navegadores webs están incorporando funciones para bloquearlos a voluntad del usuario. Esos bots no interactúan con usted para brindarle un servicio, o por lo menos no tienen una interfaz de usuario con esa intencionalidad, sino que están conectados o vinculados a sitios web para extraer información, trabajando de manera oculta para nosotros.

El otro tipo de bots seguramente ya lo conocemos y pueden ser referidos en ocasiones como chatbots, en mérito de que pueden entablar una especie de ‘conversación’ (chat) con el usuario humano, por lo cual estos bots sí prestan un servicio directo al usuario final con distintos niveles de amigabilidad en su interfaz. Los ejemplos de este tipo de bot sobran y, como he mencionado, ya nos hemos topados con ellos. Están disponibles para plataformas como Telegram, Discord, Facebook, Twitter y hasta en la misma red social Steemit podemos encontrar bots capaces de interactuar con los humanos.

A la hora de programarlos los desarrolladores recurren a bibliotecas o a frameworks. Para explicar qué es un framework sería justo dedicarle un artículo completo, más sin embargo, se puede concebir como una pieza de software incompleta que se descarga de internet y que debe ser completada y configurada por el equipo de desarrollo para hacerla totalmente funcional y que cumpla lo la meta propuesta.

De esta manera, los programadores no tienen que empezar desde cero sus proyectos sino que los construyen basándose en proyectos de software ya existente, tales como los científicos recurren construyen teorías sobre la base de otras ya consolidadas. Esto nos permite introducir la herramienta de Python de esta edición de Mi agenda Python.


Descripción

Telepot es un framework para el desarrollo de bots de Telegram desarrollado Nickoala como proyecto de software libre y código abierto y mantenido por él y varios contribuyentes.

Este framework facilita grandemente la labor de los programadores en todo el proceso de desarrollo del bot, pues soporta casi todos los métodos de la API RESTful de Telegram (el mecanismo que dispone Telegram para que los programadores creen aplicaciones que funcionen a través de su servicio) de una manera pythoniana, es decir, implementadas en lenguaje Python y siguiendo su expresividad.

Además, Telepot incopora una serie de funciones que no están en la API y sirven para enriquecer las potenciales características del bot y facilitar su desarrollo, y es muy útil para hacer experimentación y testing, ya que puede ser importado en una sesión de intérprete interactivo de Python.


Algunas características

  • Es distribuido bajo licencia MIT (de Massachusetts Institute of Technology).
  • Tiene versiones para Python 2.7 y Python 3.
  • Sus versiones más recientes están basadas en la versión 3.6 de la API de Bots de Telegram, por lo que está algo desactualizado (tener precauciones si se necesita implementar métodos más recientes).
  • Soporta async (programación asincrónica) en caso de Python 3.5.
  • Posee una extensa documentación con varios ejemplos de uso.
  • Está disponible en PyPI (directorio de recursos de Python) y se puede instalar fácilmente con: $ pip install telepot

Sitio web o repositorio

https://github.com/nickoala/telepot

Ejemplo de uso

Para poder experimentar con Telepot tenemos que tener una cuenta de bot en Telegram, por lo cual debemos hablar con el @BotFather, crear una y obtener su token, esto es, un código bastante similar a nuestras claves privadas de Steem y su papel es autenticar las peticiones de la aplicación. En mi caso, como ya he desarrollado varios bots en Telegram, tengo unos cuantos tokens ya disponibles.

Podemos ahora abrir una sesión interactiva de Python:

import telepot
mi_bot = telepot.Bot("463827309:Kr-JYEcg9DWtYMnpBDk0bVd8Oo2DLAcTJ7G")


El código que se envía a la clase Bot es uno de mis tokens de Telegram, fictíceo, claro está. Con ello se ha creado un objeto Bot llamado mi_bot. Ahora podemos probar la conexión solicitando información de la cuenta de bot con el método getMe.

import pprint
pprint.pprint(mi_bot.getMe())
{'first_name': 'Mi bot de pruebas',
 'id': 111111111,
 'is_bot': True,
 'username': 'mibotdepruebas'}


Con ello obtenemos la información sobre la cuenta que se muestra, tal como su nombre first_name, su id (id), su condición (bot o no is_bot) y su nombre de usuario username. Lógicamente, he ocultado los valores reales por cuestiones de privacidad.

Algo que también notamos aquí es el antemencionado método getMe que originalmente es un endpoint de la API de Bot de Telegram, al cual los creadores del framework han decidido llamarlo exactamente de ese modo (usando mayúsculas o estilo camelcase) a pesar de que ello contradice el estilo convencional de Python. No obstante, la idea es transmitir la impresión de estar utilizando la API de Bot de Telegram siguiendo la notación manejada en su documentación oficial.

En general, mostraré a continuación un script de aplicación de este framework al programar un bot que diga la fecha y hora cuando se usa el comando tiempo (ver imágenes 1 y 2).


⬆️ Imagen 1: script programando un bot con Telepot. Autor: @Eniolw Licencia: CC BY 2.0



⬆️ Imagen 2: ejecución del bot. Autor: @Eniolw Licencia: CC BY 2.0

Si has tenido experiencia programando, seguramente te parecerá entendible el script mostrado. Básicamente importa telepot y la clase MessageLoop (líneas 3 y 4), la cual se encargará de hacer que el bot entre en un loop o ciclo, haciendo peticiones constantemente a la API de Bots de Telegram. Luego se declara un manejador (handler) que es requerido por la clase MessageLoop (línea 25). En el manejador se definen las instrucciones de lo que hará el bot, primero determinando qué dijo el usuario (línea 11) y en caso de que haya sido un comando (línea 13), calcular y formatear la hora y envíarsela al usuario (líneas 14-19). En este framework, se arranca el bot en un hilo independiente (línea 25) y se retiene el hilo principal con un bucle infinito (líneas 27-28). Los resultados se muestran en la imagen 2, donde cada vez que el usuario ingresa el comando "/tiempo" el bot responderá con la fecha y hora.


En resumen

Telepot es una opción si se quieren desarrollar bots de Telegram en el lenguaje de programación Python. Está hecho como software libre y código abierto, y está alojado públicamente en GitHub. Además, posee una extensa documentación con varios ejemplos. Como contraparte hay que mencionar que su comunidad no ha podido mantener el ritmo de desarrollo acorde a las novedades de la Telegram Bot API, por lo cual la herramienta está algo desactualizada. Una alternativa actualizada para el mismo cometido es la biblioteca python-telegram-bot que ya hemos aplicado anteriormente y quizá la reseñemos en el futuro nuevamente como parte de Mi agenda Python.

Si tienes alguna duda o aporte no dudes en hacerlo saber. Nos vemos.



Si estás interesado en más temas sobre Ciencia, Tecnología, Ingeniería y Matemáticas (STEM, siglas en inglés), consulta las etiquetas #STEM-Espanol y #SteemSTEM, donde puedes encontrar más contenido de calidad y también hacer tus aportes. Puedes unirte al servidor de Discord de STEM-Espanol para participar aún más en nuestra comunidad y consultar los reportes semanales publicados por @STEM-Espanol.



Créditos: @IAmPhysical

Créditos: @Eniolw


NOTAS ACLARATORIAS

  • La imagen de pie es de @CarlosERP-2000 y @IAmPhysical y es de dominio público.
  • A menos que haya sido indicado lo contrario, las imágenes de esta publicación han sido elaboradas por el autor, lo que incluye la imagen de banner, creada con base en imágenes de dominio público y en un logo de Python adaptado por Rocket000 y otros (fuente).
imagen de pie
Sort:  





This post has been voted on by the SteemSTEM curation team and voting trail in collaboration with @utopian-io and @curie.


If you appreciate the work we are doing then consider voting all three projects for witness by selecting stem.witness, utopian-io and curie!


For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Awesome, thanks!

muy buen post y excelente cita!!!

Gracias, @Jarbelo45 👍

Telegram es sin duda una herramienta mucho mas potente que whatsapp, sin embargo paga la consecuencia de no llegar primero. Ya de por si sus funciones de grupo y chats y posibilidades de bots como se ve en este post, fue el primero que tomo con seriedad la seguridad del usuario, pero que difícil es convencer a los usuarios que cambien de una plataforma a otra.

Hola, @UbaldoNet. Yo no estaría tan seguro si es por no llegar primero, pues ha habido otras experiencias que contradicen eso, como el de Facebook que superó a Myspace a pesar de que este último fue el primero de los dos. Definitivamente tiene menos mercado que WhatsApp, pero creo que tiene un bun ritmo de adopción. Es más favorable para gestionar grupos de criptomonedas y divisas así que por ello sospecho que en Venezuela tiene mayor adopción que en otras regiones de Latinoamerica. En algunos casos es sorprendente la cantidad de contactos relevantes para uno y que están en Telegram. Saludos y gracias por leer.

Hi @eniolw!

Your post was upvoted by Utopian.io in cooperation with @steemstem - supporting knowledge, innovation and technological advancement on the Steem Blockchain.

Contribute to Open Source with utopian.io

Learn how to contribute on our website and join the new open source economy.

Want to chat? Join the Utopian Community on Discord https://discord.gg/h52nFrV

Thank you!

Excelente artículo @eniolw. Me incluyo entre la audiencia no especialista, pero me resulta interesante que exista este tipo de herramientas que puedan aprovechar los programadores, como dices, para no empezar un proyecto desde cero. También es interesante resaltar la versatilidad de telegram, también soy de los que no le saca provecho, pero que se puedan desarrollar bots para esta aplicación es genial, voy a empezar a considerarla más, ¿por qué crees que no se ha podido mantener actualizada la herramienta, siendo tan útil desde lo que puedo percibir?

Me alegra te haya gustado el artículo, @EmilioMoron.

"¿por qué crees que no se ha podido mantener actualizada la herramienta, siendo tan útil desde lo que puedo percibir?"

La verdad no sé aunque es posible que no puedan competir con la otra herramienta para lo mismo (python-telegram-bot).

Saludos y gracias por leer!

Congratulations @eniolw! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made more than 800 comments. Your next target is to reach 900 comments.

Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Support SteemitBoard's project! Vote for its witness and get one more award!

Thanks!

Es interesante que hayas comentado la relevancia de los bots en telegram y las criptomonedas. Yo apenas descubrí ese mundo a mediados del 2018. Mi pregunta es, en base a esto, se crean todos los bots de minería de todas criptomonedas?

Saludos @eniolw

Hola, @djredimi2. Los bots de Telegram con Telepot no son para trabajo de mineria, sino para interactuar con usuarios, ofreciendo servicios. Sin embargo, se puede programar bots así que trasfondo estén asociados con otros programas independientes que sí hagan minería de criptomonedas. También hay bots que hacen "minería de datos", que es algo similar al web scraping del que hablé la última vez, pero eso es otra cosa no relacionada a las criptomonedas. Saludos y gracias por la visita!

Saludos @eniolw, excelente herramienta la que nos presenta y me gusta mucho porque es realmente muy práctica. Éxitos

Gracias, @Felix. Saludos.

Hola @eniolw, eso de hablar con los bots suena cómico, pero en efecto hay que acostumbrarse a estos manejos que desarrollan los programadores, que definitivamente vienen a prestar ayuda a usuarios, como yo, que no tenemos mucho conocimiento en estas áreas de tecnología. En efecto sé que existe Telegram y que muchas personas lo usan. No obstante, al parecer no es tan popular ¿quizás es que su manejo es menos amigable?

Hola doctora, qué agradable visita. Telegram es muy amigable en realidad, pero es difícil a ciencia cierta decir la causa de su menor adopción en comparación con WhatsApp en el sentido de que no conozco un estudio que lo explique. Sin embargo, con base en lo que hemos considerado en mis artículos previos, tiene que ver con la adopción de la tecnología de consumo, y seguramente el hábito y la dependencia a las relaciones existentes (como los grupos de trabajo, familia, etc.) son factores concretos que podrían explicar esa menor adopción. Saludos!

Congratulations @eniolw! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!

Hehe, thanks!