Paolo Joaquin Pinto Perez
Patricio Sánchez Fernández
Excelente, Paolo, gracias por compartir.
Carlos Julian Penagos
Gracias!
Procesar mensajes de Telegram con Python te permite leer en tiempo real lo que escriben los usuarios a tu bot y reaccionar desde tu propio código. Aquí aprendes a construir la función get_updates con la librería requests, iterar la respuesta JSON y extraer datos como el username, el id y el texto del mensaje.
Cómo configuro la función getUpdates en Python
La idea es sencilla: pides a la API de Telegram las actualizaciones más recientes y las imprimes cada cierto tiempo. Para eso necesitas un archivo nuevo y dos librerías muy ligeras.
Dentro de Visual Studio Code crea el archivo get_updates.py e importa al inicio requests y time. La primera te permite hacer peticiones HTTP a la API de Telegram. La segunda controla la pausa entre cada consulta para no saturar el servicio.
La estructura base de la función queda así:
python import requests import time
def get_updates(token, offset=None): url = f"https://api.telegram.org/bot{token}/getUpdates" params = {"offset": offset} if offset else {} response = requests.get(url, params=params) return response.json()
El endpoint getUpdates es el método oficial de Telegram para recibir mensajes nuevos. Cada token está asociado a un bot distinto, así que esa cadena identifica a quién pertenece la conversación. El parámetro offset lo dejas en None al principio porque aún no sabes desde qué mensaje retomar.
¿Qué hace getUpdates en Telegram? Es un método de la Bot API que devuelve un JSON con los mensajes recientes enviados a tu bot. Lo consultas por HTTP usando tu token como identificador.
Cómo leer e iterar la respuesta JSON de Telegram
La respuesta de Telegram llega como un JSON con una clave result que contiene una lista de actualizaciones. Cada actualización trae el mensaje, el remitente y un update_id único.
Para consultar de forma continua creas una segunda función con un ciclo while True y una pausa de un segundo entre llamadas. Si quieres consultar con menos frecuencia, puedes usar dos, tres o cinco segundos.
python def print_new_messages(token): offset = None while True: updates = get_updates(token, offset) if "result" in updates: for update in updates["result"]: message = update["message"] id = message["from"]["id"] username = message["from"]["first_name"] text = message["text"] print(f"Usuario: {username} ({id})") print(f"Mensaje: {text}") print("---") offset = update["update_id"] + 1 time.sleep(1)
Dentro del bucle iteras cada update dentro de result y accedes a tres datos clave del objeto message:
from.id: el identificador único del usuario que envió el mensaje.from.first_name: el nombre que la persona configuró al crear su cuenta de Telegram.text: el contenido literal que escribió al bot.Después imprimes esos valores con print y un f-string para que cada mensaje aparezca con formato claro de usuario, id y texto.
Por qué necesito el offset y la variable de entorno
El offset evita que leas el mismo mensaje dos veces. Cada update trae un update_id y, al sumarle uno, le dices a Telegram que la próxima consulta empiece desde el siguiente mensaje pendiente.
Sin esa actualización, el bucle imprimiría una y otra vez el mismo contenido. Por eso, justo antes de cerrar el for, asignas offset = update["update_id"] + 1.
¿Para qué sirve el offset en getUpdates? Marca el punto desde el que Telegram debe entregarte mensajes nuevos. Al pasar
update_id + 1evitas duplicados en cada consulta.
El token, por su parte, es información privada. Si lo expones, cualquiera puede controlar tu bot. La buena práctica es guardarlo como variable de entorno, por ejemplo TELEGRAM_TOKEN, y leerla desde Python con os.environ. Al final del script llamas print_new_messages(token) pasando esa variable para arrancar la escucha en vivo.
¿Por qué usar variables de entorno para el token? Porque el token identifica a tu bot y permite enviar o leer mensajes en su nombre. Mantenerlo fuera del código evita filtraciones al subirlo a un repositorio.
Con esta base ya tienes el procesamiento de entrada resuelto: capturas el usuario, su id y el texto cada segundo, listos para alimentar la lógica de tu bot. ¿Cómo conectarías esta función con la lógica principal de tu proyecto? Cuéntame en los comentarios qué tipo de bot quieres construir.
Paolo Joaquin Pinto Perez
Patricio Sánchez Fernández
Excelente, Paolo, gracias por compartir.
Carlos Julian Penagos
Gracias!
Diego Jurado
Que tal la opción de ver primero el resultado final para ir entendiendo mejor lo que se esta haciendo en cada línea de código?
Orlando castellanos
por que telegram y no whatapp? ,nos guste o no la mayoria de la gente usa whatapp ahi estan los clientes
Nelson Andrés Loyola Salas
yo estaba esperando que el curso estuviera enfocado whatsapp, realmente los usuarios finales no usan tanto telegram como si lo hacen con whatsapp. 😅
Diego Alejandro Lesmes
mm quizas con lo compleja que es la api de WA, da para un curso completo, por su parte TG es un tema de 3 clases :sunglasses:
Leonardo Zadyt Molina Renteria
message = update['result'] #me marca un error de clave, lo resolví así: message = update['message']
walter Jorge
Gracias por el aporte me sirvió.
andres peralta
¿Cómo protejo mi token de Telegram?
Escribir tu token directamente en el código (hardcoding) es el equivalente digital a dejar las llaves de tu casa en la puerta. Si subes ese archivo a un repositorio público como GitHub, cualquier persona o bot automatizado podrá tomar control total de tu bot de Telegram, enviar spam en tu nombre o acceder a los mensajes de tus usuarios.
La mejor práctica es utilizar variables de entorno. Puedes crear un archivo oculto llamado .env en la raíz de tu proyecto y agregar tu token allí. Luego, asegúrate de incluir este archivo en tu .gitignore para que nunca se suba a internet.
Dentro de Python, puedes usar la librería nativa os junto con herramientas como python-dotenv para leer este valor de forma segura usando os.getenv('TELEGRAM_TOKEN'). Así, tu código fuente permanece limpio, seguro y listo para compartirse sin comprometer tus credenciales.
Arístides Pérez Hernández
¿Por qué el usuario debe terminar en bot?
Telegram impone esta regla por motivos de transparencia y seguridad. Al obligar a que el identificador termine con la palabra bot (como asistente_bot o VentasBot), los usuarios humanos saben inmediatamente que están interactuando con un programa automatizado y no con una persona real. Esto ayuda a gestionar las expectativas sobre la fluidez de la conversación y previene engaños o suplantaciones de identidad en la plataforma. Además, a nivel técnico, permite que la arquitectura de Telegram clasifique y enrute correctamente los mensajes hacia la API de bots en lugar de los servidores de mensajería estándar para usuarios humanos. Si intentas registrar un nombre sin este sufijo, el sistema simplemente lo rechazará y te pedirá que intentes de nuevo.
Arístides Pérez Hernández
¿Cuándo debo configurar los comandos personalizados?
Lo ideal es configurar los comandos personalizados antes de lanzar tu bot al público, justo después de obtener tu token. Los comandos (como /ayuda, /iniciar o /comprar) actúan como el menú de navegación principal de tu aplicación. Al definirlos tempranamente a través de BotFather (usando el comando /setcommands), Telegram mostrará un botón de menú interactivo junto a la barra de texto del usuario. Esto mejora drásticamente la experiencia del usuario (UX), ya que las personas no tendrán que adivinar qué palabras clave entiende tu bot; simplemente tocarán el menú y verán una lista clara de las acciones disponibles. Es una forma excelente de guiar la interacción y asegurar que los usuarios descubran todas las funcionalidades que has programado.
Arístides Pérez Hernández
¿Puedo usar esto para un bot empresarial?
¡Absolutamente! La infraestructura de Telegram es extremadamente robusta y es utilizada por miles de empresas para atención al cliente, automatización de ventas y notificaciones internas. Una vez que creas la base del bot, puedes conectarlo a un servidor (usando Python, Node.js, etc.) y vincularlo con bases de datos de tu empresa, CRMs o incluso modelos de inteligencia artificial avanzados como los de OpenAI. Además, Telegram permite integrar botones interactivos, menús desplegables y pasarelas de pago directamente en el chat. Esto significa que un usuario podría consultar el catálogo de tu empresa, hacer preguntas frecuentes y completar una compra sin salir de la aplicación de mensajería, convirtiendo tu bot en una poderosa herramienta comercial.
Rommer Batista
Comprender cómo usar requests y time es clave para la comunicación con la API de Telegram, recordar manejar el token de forma segura es fundamental para el funcionamiento y seguridad de nuestro bot.
Brandom Cárdenas
Hola, ¿hay algún curso o clase que enseñe como crear las variables de entorno ?
Miguel Torres
¡Hola, BrandomC!
En esta clase puedes ver cómo se hace: https://platzi.com/clases/2292-terminal/37350-variables-de-entorno/
✨🤓🧠
Preparando la entry del user
Dejo mi codigo con comentarios si alguien se perdio po que significa cada linea:
import requests import time def get_updates(token, offset=None): # definimos url url = f"https://api.telegram.org/bot{token}/getUpdates" # asignamos params desde offset params = {"offset": offset} if offset else {} # obtenemos la respuesta http GET response = request.get(url,params =params) # devolvemos en un JSON return response.json() def print_new_messages(token): # el siguiente por default no existe offset = None # Para que haga peticiones siempre while True: # obtenemos respuestas updates = get_updates(token,offset) # validamos que hayan resultados desde http GET if "result" in updates: #imprimimos todas las respuestas for update in updates["result"]: message = update["result"] id = message["from"]["id"] username = message['from']["first_name"] text = message.get("text") print(f"Usuario: {username}({id})") print(f"Mensaje: {text}") print("-"*20) # Pasar al siguiente offset = update["update_id"]+1 time.sleep(1) token = "TELEGRAM_TOKEN" print_new_messages(token)