Saltar al contenido
Guía10 min

Cómo crear un bot de Telegram con IA paso a paso (2026)

Conecta el agente de inventario de Python a un bot de Telegram privado. Incluye el archivo completo, configuración de BotFather, autorización por chat y pruebas de mensajes largos. Empieza con polling local y descubre qué falta antes de abrirlo a usuarios: cola durable, deduplicación, cuotas y gestión de errores.

Por · Reportar un error

Continúa con un curso práctico

El primer bot no necesita una cola distribuida ni atender a todo Internet. Necesita recibir tu pregunta, consultar una herramienta y responder sin gastar en mensajes de personas no autorizadas. Vamos a conectar el agente de inventario en Python a un chat privado de prueba, usando long polling. No hay pedidos reales, base de clientes ni memoria persistente.

Descarga bot_telegram.py y agente_stock.py en la misma carpeta. El bot usa la biblioteca estándar de Python para Telegram y el SDK de OpenAI para el agente. No contiene funciones ficticias pendientes de implementar.

1. Crea un bot de desarrollo

Abre el perfil oficial @BotFather desde el tutorial de Telegram, envía /newbot y elige nombre y username terminado en bot. Conserva el token como contraseña: permite controlar el bot. Usa un bot nuevo, no el que ya atiende clientes.

Envía /start a tu bot. Para conocer el ID del chat sin pegar el token en el navegador, carga la variable y ejecuta desde la carpeta descargada:

export TELEGRAM_BOT_TOKEN="token-de-BotFather"
python3 -c 'import os; from bot_telegram import telegram; print([(u.get("message", {}).get("chat", {}).get("id")) for u in telegram(os.environ["TELEGRAM_BOT_TOKEN"], "getUpdates", {})])'

Obtendrás una lista con tu ID numérico; los updates que no son mensajes pueden mostrar None. Hazlo solo con tu bot privado y no publiques el resultado junto al token. Si aparece una lista vacía, vuelve a enviar /start. Si hay un webhook configurado, getUpdates no puede funcionar simultáneamente: usa un bot separado o retira el webhook deliberadamente, nunca a ciegas.

2. Arranca el proceso local

Necesitas Python 3.10 o posterior. En una carpeta de pruebas:

python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install openai
export TELEGRAM_ALLOWED_CHAT_ID="tu-id-numerico"
export OPENAI_API_KEY="tu-clave"
export OPENAI_MODEL="modelo-con-function-calling-de-tu-cuenta"
python3 bot_telegram.py

El archivo comprueba getWebhookInfo y se detiene si hay un webhook activo. Después procesa un update cada vez. Escribe “¿Cuánto stock tiene A-100?”: la herramienta contiene 23 unidades. Una respuesta real depende de la API, sus permisos y la disponibilidad del modelo; no presentamos una conversación externa como ejecutada durante esta revisión.

Detén el proceso con Ctrl+C. Con la laptop apagada, el bot no responde. Polling también es válido en producción con un proceso supervisado: webhook no es obligatorio por ser “producción”. La decisión depende de tu hosting y del mecanismo de recuperación que mantengas.

Flujo de un mensaje de Telegram pasando por el agente, sus herramientas y la respuesta dividida en bloques

3. Qué controles tiene el ejemplo

ControlImplementaciónLímite que sigue existiendo
AccesoSolo chat.type == private y el ID autorizadoNo es un sistema de cuentas multiusuario
EntradaHasta 1000 caracteresCaracteres no equivalen a tokens
InferenciaAgente con cuatro pasos y timeout por peticiónFalta presupuesto mensual automático
ConcurrenciaUn update cada vezUna consulta lenta frena la siguiente
SalidaBloques de 1800 caracteres Python, texto planoFalta reintento durable ante un envío fallido
ContextoUna pregunta por ejecución del agenteNo recuerda lo hablado antes

La Bot API limita sendMessage a 4096 caracteres después del procesamiento de entidades. El ejemplo evita parse_mode y usa fragmentos conservadores; no envía Markdown generado por el modelo como si fuera formato confiable. La pausa entre fragmentos reduce ráfagas, pero no sustituye un manejo completo de retry_after.

4. Comprueba el adaptador antes de abrirlo

Estas pruebas no requieren llamar a la API:

python3 -c 'from bot_telegram import partes; s="😀"*5000; p=partes(s); assert "".join(p)==s; assert all(len(x.encode("utf-16-le"))//2 <= 4096 for x in p); print("fragmentos OK")'
python3 -m unittest -v test_agente_stock.py

Para la segunda descarga también test_agente_stock.py. Después, con credenciales de desarrollo y presupuesto limitado, haz las pruebas de integración:

  1. Tu chat autorizado obtiene una respuesta de stock.
  2. Otro chat y un grupo no disparan llamadas al modelo.
  3. Un mensaje largo recibe el aviso de tamaño sin consumir inferencia.
  4. Pedir una reserva no produce una compra ni una confirmación inventada.
  5. Una clave incorrecta produce un fallo visible en terminal sin imprimir secretos.

La prueba de fragmentación y las pruebas del agente son locales; las cinco comprobaciones de red las debe completar quien conecte sus cuentas.

5. Qué cambiar para usuarios reales

Checklist de producción para un bot de Telegram con IA: token seguro, memoria acotada, rate limits y comandos registrados

El offset del ejemplo vive en RAM y avanza antes de ejecutar el agente. Si una consulta falla, no se reintenta durante esa ejecución; si el proceso cae, no existe una garantía de entrega ni de ejecución única. Para tareas con efectos externos, guarda el update en una cola durable y aplica idempotencia por update_id antes de cobrar, crear pedidos o enviar correos.

Con webhook, valida X-Telegram-Bot-Api-Secret-Token, persiste el trabajo y solo entonces confirma recepción. No confundas “responder 200” con “el usuario ya recibió su respuesta”. Añade cuotas por cuenta, tratamiento de 429, alertas, trazas minimizadas y una vía de atención humana. Un chat ID es un identificador, no un secreto ni una autorización suficiente para acceder a otros sistemas.

La Bot API básica no cobra por cada respuesta habitual, pero inferencia, almacenamiento y operación sí cuestan; funciones opcionales como difusión de pago tienen condiciones propias. No prometas que todo servidor o canal será gratuito. Presupuesta con coste por tarea y elige hosting con la guía de despliegue.

Si tus clientes necesitan WhatsApp, estudia sus plantillas, consentimiento y ventana de atención. Si prefieres configurar un runtime existente, sigue la lección de Telegram de OpenClaw. Son alternativas al ejemplo Python, no dependencias de él.

De la guía a la práctica

Bot de catálogo con Python: datos, pruebas y mensajería

Primero prueba un bot de catálogo en local; después explora su adaptador opcional de Telegram.

Ver el curso gratis

Contenido gratis, sin registro. Los servicios externos pueden tener costos.

Avisos cuando actualicemos cursos y guías

Recibe actualizaciones por correo. Es opcional: puedes seguir leyendo y abrir cualquier curso sin suscribirte.

Al suscribirte, solicitas avisos editoriales. Consulta la política de privacidad. Puedes pedir la baja en contacto.