Cómo construir un bot básico de Telegram con Python 3

Si eres un usuario de Telegram, es probable que hayas tenido una 'conversación' con un chatbot en algún momento. Con su increíble personalización, los bots de Telegram ofrecen una variedad de ventajas, ya sea para automatizar tareas o simplemente para divertirse un poco con juegos en su grupo de chat.

Si bien algunos pueden encontrar que desarrollar un bot es una tarea abrumadora, en realidad no lo es. ¡Con la planificación correcta, puede tener un bot de Telegram en funcionamiento en menos de una hora! A continuación, se explica cómo crear un simple bot de Telegram que genere lindas imágenes de gatos de Internet cuando se le solicite.

Empezando

Para este tutorial, usaremos Python 3, la biblioteca python-telegram-bot y solicitudes , y TheCatAPI .

Cada bot en Telegram tiene un token único que lo ayuda a comunicarse con Bot API para poder usar la interfaz de mensajería de la aplicación. Bot API, una de las características más populares de Telegram entre los desarrolladores, le permite usar sus mensajes como una interfaz.

Para obtener el token, inicie una conversación con @BotFather que, como su nombre indica, es un bot oficial que le permite crear y personalizar sus propios bots. Puede acceder al bot utilizando el enlace dado o, alternativamente, buscar '@botfather' en Telegram.

Una vez en el chat, cree su bot escribiendo el comando / newbot . Continúe configurando el nombre y el nombre de usuario de su bot (decidimos nombrar el nuestro @pawsomebot). Después de esto, obtendrá un token único para su bot.

Ahora que tenemos todos los requisitos previos, ¡es hora de pasar a la parte emocionante!

Instalación de bibliotecas

Si está usando Windows, abra el símbolo del sistema y escriba los siguientes comandos:

 pip install python-telegram-bot
pip install requests

Si está usando macOS o Linux, use los siguientes comandos en su terminal. Además, en Linux, asegúrese de haber iniciado sesión como usuario con privilegios de sudo.

 pip3 install python-telegram-bot
pip3 install requests

Escribir el programa

Cree una nueva carpeta en su computadora y ábrala en su editor favorito. Cree un nuevo archivo y asígnele el nombre main.py. Este archivo contendrá el código fuente de su bot.

Ahora, importemos las bibliotecas que instalamos anteriormente junto con algunas de sus funciones integradas.

 from telegram.ext import Updater, CommandHandler
import requests
import re

El flujo del programa a partir de ahora es acceder a TheCatAPI, obtener la URL de una imagen aleatoria y enviar esa imagen al chat del usuario.

Comencemos con una función para obtener la URL de la imagen, que se puede hacer usando el módulo de solicitudes. En esta función, cargamos los datos JSON de un archivo aleatorio proporcionado por TheCatAPI y extraemos su URL para su uso posterior. Para ver el formato del objeto JSON, diríjase a https://api.thecatapi.com/v1/images/search en su navegador. Notarás algo como esto:

 [{"breeds":[],"id":"a8c","url":"url.jpg","width":800,"height":533}]

Observe que el objeto JSON es una matriz que contiene un diccionario. Este diccionario contiene la URL con la clave 'url'. Para extraer la URL, necesitamos hacer referencia al primer elemento de la matriz y luego a la clave relevante.

 def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url

A continuación, debemos enviar esta imagen al chat de un usuario. Para ello, necesitamos una URL de imagen, así como la identificación única del chat del usuario. Creemos una función contenedora para hacer esto. Primero, llamamos a getUrl () . función para obtener la URL de una imagen aleatoria — esta URL cambia cada vez que su programa itera a través de la función.

A continuación, se obtiene la ID de chat del usuario del destinatario, que define la ubicación de destino del bot para los mensajes y se analiza la URL a través de la función send_photo () incorporada de la API del bot .

 def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)

Para obtener más información sobre las diversas funciones integradas de Bot API y cómo funcionan, no dude en consultar la documentación oficial de Telegram después de este tutorial.

Finalmente, creemos una función que controle el funcionamiento general del bot. Esta función, llamada convencionalmente main (), es donde enviamos una solicitud HTTP a la API del bot utilizando el token que obtuvimos al comienzo del tutorial y luego definimos cómo será la interacción del usuario del bot. En un caso tan simple como el nuestro, esto esencialmente significa iniciar el bot y llamar a la función sendImage () cuando el usuario lo solicite.

 def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()

Su programa final debería verse así:

 from telegram.ext import Updater, CommandHandler
import requests
import re
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()

Tu propio bot de Telegram

¡Felicidades! Ha creado su propio bot para aliviar el estrés que envía imágenes de código abierto de los gatos de Internet más lindos cuando se le solicita. Intente ejecutar su programa y escriba / miau en el chat de su bot para activarlo.

Si bien este puede ser un bot simple con funcionalidad limitada, muestra cuán poderoso es el ecosistema de desarrollo de bots de Telegram. Puede agregar cualquier cantidad de subrutinas y funciones complejas para mejorar la funcionalidad de su bot, el cielo es el límite. Para obtener más información sobre los increíbles bots de Telegram que los colaboradores han creado a lo largo de los años, consulte nuestra lista de bots de Telegram útiles .

También puede encontrar una variedad de programas con licencia de código abierto para bots de Telegram en plataformas como GitHub. La mayoría de las licencias de código abierto le permiten usar, estudiar, descargar o modificar el código fuente de un programa.

Aloje su bot de Telegram en línea

Ahora que tiene su bot en funcionamiento, intente cerrar main.py en su PC y use el bot en su aplicación de mensajería Telegram. ¿Sigue respondiendo al comando / meow ? No, no es así.

Como principiante, es posible que no sepa por qué main.py en su PC debe estar en funcionamiento cuando ya ha creado un bot que se ejecuta en Internet. La razón de esto es que el programa usa su PC como servidor local para enviar solicitudes HTTP a las API utilizadas en este programa.

Como tal, tener que ejecutar el programa cada vez que desee utilizar la aplicación no es factible ni conveniente. Para resolver este problema, debemos eliminar la dependencia del bot en su dispositivo.

Una forma de hacerlo es utilizar una placa de circuito impreso (PCB) de bajo costo, como Raspberry Pi , para configurar su propio servidor web y usarlo para ejecutar su programa. Tiene los mismos beneficios que ejecutar el programa en su PC sin los costos de mantenerlo encendido todo el día y la noche, ya que los PCB tienden a tener una huella de energía significativamente menor.

Alternativamente, también puede implementar su programa en la nube. Diríjase a una plataforma de alojamiento de aplicaciones web como Heroku, AWS, Google Cloud o Microsoft Azure y elija la suscripción que mejor se adapte a sus necesidades. Recomendamos elegir una prueba o suscripción gratuita y actualizarla a medida que aumenta la escala o el alcance de su programa.