Construir un bot de Telegram que lea y procese los mensajes de los usuarios en tiempo real es más accesible de lo que parece. Con apenas dos librerías de Python — requests y time — es posible conectarse a la API de Telegram, extraer cada mensaje entrante y mostrar datos como el nombre del usuario, su ID y el texto enviado. A continuación se desglosa paso a paso cómo lograrlo.
¿Cómo se estructura la función get updates para consultar la API de Telegram?
El punto de partida es crear un archivo llamado get_updates.py e importar las dependencias necesarias [0:18]:
python
import requests
import time
Después se define la función get_updates, que recibe el token del bot como parámetro. Este token es el identificador único que Telegram asigna a cada bot y nunca debe compartirse públicamente [0:40].
Dentro de la función se construye la URL base con formato f-string:
El parámetro offset se envía inicialmente como None. Su propósito es indicarle a Telegram cuál fue el último mensaje procesado, de modo que en la siguiente consulta solo devuelva mensajes nuevos [1:12].
Se arma un diccionario de parámetros y se realiza la petición HTTP:
La respuesta llega en formato JSON, una estructura que contiene la clave result con la lista de actualizaciones pendientes [2:08].
¿Cómo se leen e imprimen los mensajes del usuario en tiempo real?
Para consultar Telegram de forma continua se crea la función print_new_messages. Dentro de ella se ejecuta un bucle while True que, cada segundo, llama a get_updates y recorre los resultados [2:30].
python
def print_new_messages(token):
offset = None
while True:
updates = get_updates(token, offset)
if updates.get("result"):
for update in updates["result"]:
message = update["message"]
user_id = message["from"]["id"]
username = message["from"]["first_name"]
text = message["text"]
Cada objeto dentro de result contiene una clave message que agrupa toda la información relevante [3:15]:
from → id: identificador numérico único del usuario que envía el mensaje.
from → first_name: nombre configurado por el usuario en su cuenta de Telegram.
text: contenido textual del mensaje recibido.
Estos campos permiten identificar quién escribe y qué dice, datos esenciales para cualquier lógica de respuesta automática.
¿Por qué se utiliza el offset y time.sleep?
El offset se actualiza sumando +1 al update_id del último mensaje procesado [4:50]. Así se evita recibir mensajes duplicados en la siguiente iteración.
La función time.sleep(1) introduce una pausa de un segundo entre cada consulta [5:10]. Esto previene saturar la API de Telegram y es especialmente importante cuando el bot se ejecuta desde una computadora local. Si se prefiere un ritmo más relajado, el valor puede cambiarse a 2, 3 o incluso 5 segundos.
¿Cómo se ejecuta el bot de forma segura?
El token debe tratarse como información sensible. La práctica recomendada es almacenarlo como variable de entorno en lugar de escribirlo directamente en el código [5:35]:
Al correr el script, el bot comienza a escuchar mensajes entrantes y los muestra en consola con el formato definido. Si no hay errores, cada segundo se verifica si llegó algo nuevo y se imprime de inmediato.
Con esta base funcional ya es posible procesar la entrada del usuario y preparar la integración con la función principal del proyecto. ¿Qué tipo de respuestas automáticas te gustaría implementar en tu bot? Comparte tus ideas en los comentarios.