49 - Como crear tu propio bot para Telegram

49 - Como crear tu propio bot para Telegram

¿Conoces los bots para Telegram?¿Has creado ya el tuyo?¿Sabes que es realmente sencillo crear tu propio bot para Telegram? Curso de bots para Telegram.

En atareao.es puedes encontrar decenas de referencias tanto a Telegram como a los bots de Telegram. De hecho, hace algún tiempo escribí un tutorial con una decena de capítulos en los que explicaba diferentes opciones para crear tu propio bot para Telegram. Así como toda una serie de técnicas para exprimir al máximo este servicio de mensajería a través de los bots.

Todo esto, llevó a que el pasado sábado 23 de febrero de 2019, impartiera un curso sobre bots para Telegram en Linux Center, con el apoyo de Slimbook.

Algunos de los cursos y talleres que se celebran en Linux Center, se transmiten vía streaming. Sin embargo, no todos los cursos, puesto que uno de los objetivos de Linux Center, es sacarnos del mundo virtual (básicamente, despegarnos de la pantalla) y aproximarnos al mundo real. Desvirtualizarnos (o al menos yo lo veo así).

curso de bots para Telegram

Bots para Telegram

El curso sobre bots para Telegram, nos da la posibilidad de automatizar hasta el infinito y mas allá. O al menos así reza el curso.

Lo primero y principal es aclarar que es un bot. Y es que un bot no es mas que una aplicación informática. Una aplicación que corre dentro del propio Telegram. Realmente, no se ejecuta dentro de Telegram, pero si que se relaciona con este servicio de mensajería, comunicándose con él y actuando en consecuencia.

¿Que podemos hacer con un bot?

Desde el punto de vista de un usuario, tu puedes desde enviarle mensajes, tanto de texto, como audio, como vídeo y que el bot interaccione con ellos. Pero no es la única forma de interactuar con el bot. El bot también te permite comunicarte mediante órdenes o comandos, así como mediante teclados virtuales.

Seguro que si eres usuario de Telegram, conocerás decenas de bots que te ofrecen una cantidad de posibilidades increible. Empezando por lo más básico que es enviar notificiaciones y avisos, hasta integrar otros servicios como puede ser Gmail, la Wikipedia, etc.

Además, puedes encontrar todo tipo de bots que se convertirán en toda una caja de herramientas. Así, puedes encontrar bots para trabajar con markdown, para hacer votaciones, para gestionar imágenes, para modificarlas…

¿Como funcionan los bots?

Cuando un usuario envía un mensaje en un grupo donde hay un bot, se genera una actualización, un update. Nuestro bot, nuestra aplicación, debe tener información sobre esa actualización. Para ello, tiene dos mecanismos, o bien que tu bot le pregunte constantemente a Telegram si hay nuevas actualizaciones o bien, que cada vez que se produzca una nueva actualización, Telegram le avise a tu aplicación. Resumiendo,

  • getUpdates es el proceso por el cual tu aplicación le pregunta constantemente a Telegram si hay nuevas actualizaciones.
  • Webhooks es el mecanismo para que Telegram sea el que avise a tu aplicación de que hay una nueva actualización.

¿Como crear un bot?

Lo mejor es predicar con el ejemplo, y de esa forma procede Telegram. Para crear un bot, utilizarás un bot, en concreo utilizarás a BotFather. Y en particular el comando /newbot. Esto conlleva pasar dos parámetros en nombre y el nombre de usuario. Te recomiendo que le des una leída al capítulo de introducción del tutorial sobre crear tu propio bot para Telegram.

Una vez creado el bot, podrás personalizarlo, indicando una descripción del bot, un acerca de, e incluso una imagen.

Llamadas a la API del bot de Telegram

Al final toda la comunicación con Telegram se hace con llamadas a la API del bot de Telegram. En este sentido y para facilitar todo el trabajo, he utilizado Insomnia, que no es mas que un cliente REST API, altamente productivo. Por que sobre todo, te permite ordenar de una forma sencilla y clara todas las llamadas a la API de Telegram.

En particular las llamadasa a la API del bot de Telegram, están suficientemente explicadas en https://core.telegram.org/bots/api#available-methods. Son hasta 40 llamadas que te van a permitir hacer casi cualquier cosa que te puedas imaginar. Desde enviar mensajes, imágenes, audios, etc. Hasta gestionar grupos, pudiendo admitir o expulsar miembros del grupo.

getUpdates

De los dos métodos para estar informado de la que pasa en los grupos en los que está nuestro bot, el primero, getUpdates, es el que pregunta constantemente a Telegram que es lo que sucede.

Para implementarlo de una forma mas o menos sencilla, he utilizado, una librería de Python python-telegram-bot, que te va a hacer la vida muy, pero que muy sencilla.

Esta librería establece tres objetos clave,

  • Bot. El bot 😉
  • Updater. Se encarga de interactuar con el bot
  • Handler. Se encarga de interactuar con el humano

En el primer capítulo del tutorial encontrarás como enviar mensajes con Telegram. Ahí está explicado el primero de los objetos. Mientras que para ver los otros dos tienes que recurrir al tercero de los capítulos del tutorial. En este tercer capítulo te explico como crear un bot interactivo.

Handlers

En los sucesivos capítulos del tutorial encontrarás la explicación de los diferentes handlers,

  • CommandHandler. Comandos
  • MessageHandler. Mensajes
  • ConversationHandler. Conversaciones
  • CallbackQueryHandler. Respuestas

Dentro de los diferentes handler, cabe destacar el MessageHandler, que nos permite actuar en función del mensaje que envía el usuario al grupo, y para ello, se definen una serie de filtros,

  • Filters.text
  • Filters.audio
  • Filters.photo
  • Filters.document
  • Filters.command

Teclados y botones

También es posible permitir que el usuario interaccione mediante teclados y botones que tu bot generará a tal efecto. Teclados, que permitirá que el bot realice una u otra acción en función del botón pulsado.

Para esto se utilizan los objetos InlineKeyboardButton e InlineKeyboardMarkup.

Webhooks

El segundo de los procedimientos establecidos para que nuestro bot interaccione con Telegram es mediante un Webook, tal y como he indicado anteriormente. Eso si, tienes una serie de requisitos mínimos,

  • Necesitas un dominio (o ddns). Si tienes una Raspberry, es posible utilizar webhooks. Para ello, puedes pegarle un vistazo al artículo sobre una puerta abierta a tu Raspberry teniendo IP dinámica
  • Puerto abierto
    • Telegram solo trabaja con 443, 80, 88, 8443
  • Cifrado SSL/TTLS (puede ser autofirmado, también Let’s Encrypt)

¿Como establecemos y gestionamos los webhooks?

Tanto para establecer como para gesitionar los webhooks, utilizaremos tres llamadas a la API del bot de Telegram. Estas llamadas son las siguientes,

  • setWebhook. Para establecer el webhook
  • deleteWebhook. Permite borrar el webhook
  • getWebhookInfo. Te muestra información del estado del webhook.

De nuevo todas estas llamadas a la API de Telegram, las puedes realizar utilizando Insomnia.

Python

Una vez establecido el procedimiento, el lenguaje de programación que quieras utilizar para las llamadas a la API, dependen exclusivamente de ti. En particular, yo me he centrado en dos, Python y PHP.

En este primer caso, además he utilizado el framework Flask que me facilita enormemente, la creación del Webhook. Te recomiendo, en este caso, la lectura del capítulo 10 del tutorial sobre Flask, webhooks y Telegram.

PHP

La otra opción, en lo que se refiere a lenguaje de programación es PHP. Y en el caso particular, es directamente sobre WordPress, dado que permite automatizar casi cualquier proceso que tengamos en nuestra página web. Así, por ejemplo, podemos hacer, que cada vez que se publique un artículo, en nuestra página web, envie una notificación a un grupo o canal.

En este segundo caso, te recomiendo la lectura del capítulo número siete del tutorial sobre como integrar Telegram con WordPress.

Conclusión

Como ves, aquí tienes gran cantidad de documentación y posibilidades en lo que se refiere a la creación de bots para Telegram. Como verás en los diferentes ejemplos que he incluido en los diferentes capítulos del tutorial, es algo realmente sencillo de hacer. Pero, no solo esto, sino que podemos conseguir altos grados de automatización.

Mi propuesta es que lo pruebes, que te hagas tu propio bot, y que empieces a disfrutar. Seguro que te lo vas a pasar en grande. No solo eso, sino que también se te ocurrirán cientos de cosas que hacer con tu propio bot.


Mas información. Descargas,

Deja un comentario

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