Cómo crear un bot de Telegram con Python en menos de 10 minutos

Última actualización: 28/01/2026
Autor: Isaac
  • Un bot de Telegram es una aplicación que interactúa con usuarios mediante la Bot API, ideal para automatizar tareas, soporte y distribución de contenido.
  • Con Python y la librería python-telegram-bot puedes crear en minutos un bot funcional, empezando por un simple comando /start y ampliando con menús y estados.
  • La arquitectura se basa en recibir actualizaciones por polling o webhooks, pudiendo desplegar el bot en servicios en la nube como AWS para que esté disponible 24/7.
  • Aplicar buenas prácticas de seguridad, experiencia de usuario y monitorización asegura que el bot sea fiable, escalable y útil a largo plazo.

Bot de Telegram con Python

Si usas Telegram a diario, seguro que más de una vez has pensado que estaría genial tener un bot que hiciera tareas por ti. Recordar medicación, responder dudas frecuentes o mandar alertas automáticas son solo algunos ejemplos de lo que puedes automatizar sin romperte la cabeza. La buena noticia es que, con Python, puedes tener un bot funcional en cuestión de minutos.

En este artículo vas a aprender cómo crear un bot de Telegram con Python en menos de 10 minutos, empezando desde cero y entendiendo qué estás haciendo en cada paso. Veremos desde la creación del bot con BotFather, la instalación de librerías, ejemplos de código reales, hasta opciones para desplegarlo en la nube (como AWS o servicios gratuitos) para que no tengas que tener el ordenador encendido todo el día.

Qué es exactamente un bot de Telegram y por qué merece la pena crearlo

Un bot de Telegram es, en esencia, un programa que vive dentro de Telegram y responde a mensajes siguiendo unas reglas que tú mismo defines en el código. No es un usuario humano, sino una “cuenta especial” controlada por un backend que tú desarrollas, normalmente alojado en un servidor o en un servicio en la nube.

Estos bots pueden ser tan sencillos como un sistema que responde siempre con el mismo mensaje, o tan avanzados como un asistente con inteligencia artificial que entienda lenguaje natural, gestione pagos, hable varios idiomas y se conecte a servicios externos (APIs, bases de datos, sistemas IoT, etc.). Telegram ofrece una Bot API abierta y muy bien documentada que facilita muchísimo el desarrollo.

Además, los bots no están limitados a chats privados: pueden funcionar en grupos, supergrupos y canales, moderar conversaciones, enviar resúmenes, encuestas y todo tipo de contenido multimedia. Por eso se han convertido en una pieza clave para automatizar tareas, gestionar comunidades y ofrecer servicios sin sacar al usuario de la app.

Desde el punto de vista técnico, un bot se comunica con Telegram usando peticiones HTTPS a la Bot API. Tú escribes el código (por ejemplo en Python), Telegram te da un token secreto y, a partir de ahí, todo se hace intercambiando JSON entre tus scripts y los servidores de Telegram.

Ejemplo de bot de Telegram

Casos de uso reales: para qué se usan hoy los bots de Telegram

Antes de ponernos a picar código, viene bien tener claro qué tipo de problemas puedes resolver con un bot de Telegram. Esto te ayudará a diseñar mejor la lógica de tu bot y, sobre todo, a que no se quede en un simple experimento.

Muchísimas empresas usan bots como primer nivel de atención al cliente. Un bot puede contestar preguntas frecuentes, consultar el estado de un pedido, gestionar reservas o enviar enlaces de ayuda personalizados. Si la cosa se complica, puede escalar la conversación a un humano, pero de entrada te quita un montón de carga repetitiva.

Otra aplicación muy común es la distribución de contenido. Hay bots que leen feeds RSS, blogs, canales de YouTube o redes sociales y van enviando noticias, posts o vídeos a usuarios o canales en tiempo real. Esto es ideal para medios de comunicación, creadores de contenido o cualquier persona que quiera centralizar información sin cambiar de app.

A nivel personal, los bots de productividad marcan la diferencia: recordatorios, listas de tareas, avisos de eventos o alarmas inteligentes. Un bot puede entender frases del tipo “Recuérdame la medicación mañana a las 8” y programar una notificación en el momento adecuado, sin tener que abrir otra app distinta.

También hay bots orientados al ocio y a la utilidad: descarga de contenido multimedia (siempre respetando derechos de autor), gestores de viajes que recomiendan vuelos y hoteles, bots para ver mapas, gestionar finanzas personales, recibir alertas de sistemas industriales o de monitorización de servidores, etc. La combinación de disponibilidad 24/7 y facilidad de uso hace que el abanico de posibilidades sea enorme.

Cómo funciona la arquitectura de un bot de Telegram

Para entender bien lo que vas a programar, conviene tener clara la arquitectura básica. Por un lado está Telegram, con sus servidores y la Bot API, y por otro lado está tu aplicación (el código en Python, Node.js o el lenguaje que elijas) que se ejecuta en algún sitio: tu PC, una máquina virtual, un servicio serverless, un contenedor, etc.

Cuando un usuario envía un mensaje a tu bot, Telegram genera una “actualización” (update) en formato JSON. Esa actualización llega a tu programa de dos formas posibles: o bien tú la vas a buscar usando polling con el método getUpdates, o bien Telegram te la envía automáticamente mediante un webhook HTTPS que tú has configurado previamente.

En el modo de polling, tu script hace peticiones periódicas a Telegram preguntando si hay mensajes nuevos. Es perfecto para desarrollo local y pruebas rápidas, porque no necesitas exponer tu máquina a internet ni configurar certificados. Solo ejecutas el script y listo.

  Repair For Bluetooth Icon Lacking in Home windows 10

En el modo webhook, en cambio, Telegram envía las actualizaciones directamente a una URL HTTPS que tú controlas. Esto es lo más adecuado para entornos de producción, porque reduces la latencia, no estás haciendo peticiones constantes y puedes escalar la aplicación detrás de un servidor web, un proxy o un balanceador de carga. Aquí sí o sí necesitas una URL pública y un certificado SSL válido.

En ambos casos, tu bot recibe el JSON, lo procesa según la lógica que tú hayas definido y responde usando métodos de la Bot API como sendMessage, sendPhoto, answerCallbackQuery y muchos otros. Las librerías de alto nivel (como python-telegram-bot o Telegraf en Node.js) encapsulan estos detalles para que tú solo tengas que trabajar con funciones y manejadores de comandos.

Arquitectura de bot de Telegram

Requisitos previos para crear un bot con Python en pocos minutos

Para montar tu primer bot no necesitas un mega entorno corporativo, pero sí unos requisitos mínimos muy claros. Tenerlos preparados te ahorrará tiempo y errores tontos durante la configuración.

Lo básico es contar con Python 3 instalado en tu sistema. Cualquier versión moderna (3.8 en adelante) suele ser más que suficiente. Es recomendable también tener pip disponible para instalar paquetes, aunque en la mayoría de distribuciones actuales ya viene incluido con Python.

El siguiente paso consiste en instalar una librería que te simplifique el trato con la Bot API. En este caso vamos a usar python-telegram-bot, una de las más populares y mantenidas de la comunidad Python. Para instalarla, basta con ejecutar en la terminal:

pip3 install python-telegram-bot

Además del entorno técnico, necesitas registrar el propio bot en Telegram. Para ello, usarás @BotFather, el bot oficial de Telegram que actúa como panel de control de todos tus bots. Desde ahí crearás el bot, le pondrás nombre y obtendrás el token de acceso que será la clave para que tu script pueda gestionar esa cuenta.

Crear el bot en Telegram con BotFather

El punto de partida siempre es el mismo: registrar el bot y conseguir el token. Sin ese token, tu código no podrá hablar con la Bot API ni enviar mensajes a nadie, porque es lo que identifica de forma única a tu bot.

Abre Telegram y busca el usuario @BotFather. Es un bot oficial verificado, así que no tiene pérdida. Cuando lo tengas, inicia un chat con él y escribe el comando /newbot. BotFather te irá guiando paso a paso.

Primero tendrás que indicar un nombre “amigable” para tu bot, que es el que verán los usuarios (por ejemplo, “Recordatorio Medicinas”). Después te pedirá un nombre de usuario (username) que tiene que ser único y terminar en bot, como por ejemplo recordatorio_meds_bot o algo similar.

Una vez completado el proceso, BotFather te devolverá un token de API con un formato parecido a este: 123456789:ABC-DEF…. Este token es sagrado: trátalo como si fuera una contraseña muy potente. No lo publiques en GitHub, no lo copies en foros y, si alguna vez crees que se ha filtrado, puedes regenerarlo desde BotFather mediante los comandos de rotación de token.

Con eso ya tienes lo esencial: una cuenta de bot en Telegram y las credenciales para controlarla desde tu código Python. Ahora toca preparar un pequeño script que conecte las piezas.

Instalación de python-telegram-bot y preparación del entorno

Con el token en la mano, el siguiente paso es asegurarte de que tu entorno Python está listo para trabajar con la API de Telegram. Como hemos mencionado, la opción más cómoda es usar la librería python-telegram-bot, que te ofrece clases y funciones de alto nivel para definir comandos, manejar conversaciones y enviar mensajes.

Si aún no lo has hecho, instala la librería ejecutando el siguiente comando en tu terminal o consola:

pip3 install python-telegram-bot

En muchos sistemas, si solo tienes una versión de Python, también puede funcionar simplemente:

pip install python-telegram-bot

Con esto, ya puedes crear un archivo Python, por ejemplo bot_telegram.py, donde comenzarás a escribir el código de tu bot. Puedes usar cualquier editor de texto o IDE: VS Code, PyCharm, Sublime, incluso el bloc de notas si te apetece. Lo importante no es la herramienta, sino el contenido del script.

La estructura mínima de un bot con python-telegram-bot consiste en importar las clases necesarias, configurar la aplicación con tu token y definir al menos una función manejadora para el comando /start, que suele ser la puerta de entrada a cualquier bot.

Primer ejemplo: bot mínimo con comando /start

Vamos a ver un ejemplo práctico de un bot muy sencillo que responda con un mensaje básico cuando el usuario envía el comando /start. Esto te permitirá comprobar que todo está bien conectado: token correcto, librería instalada y comunicación con Telegram funcionando.

En tu archivo bot_telegram.py, puedes crear una versión moderna basada en la arquitectura actual de python-telegram-bot (asíncrona) con un código similar a este, adaptado a un estilo más reciente:

from telegram.ext import ApplicationBuilder, CommandHandler

async def start(update, context):
await update.message.reply_text(«¡Hola! Soy tu bot de ejemplo en Telegram.»)

  La forma correcta de eliminar los contactos del iPhone o iPad

TOKEN = «TU_TOKEN_AQUI»

def main():
app = ApplicationBuilder().token(TOKEN).build()
app.add_handler(CommandHandler(«start», start))
app.run_polling()

if __name__ == «__main__»:
main()

En este fragmento, ApplicationBuilder crea la aplicación principal del bot, a la que le asocias un manejador para el comando /start. La función start se encarga de responder al usuario con un texto sencillo, y run_polling() activa el modo de polling largo, de forma que el bot se mantiene preguntando a Telegram por nuevas actualizaciones.

Para ejecutarlo, basta con lanzar en la terminal:

python3 bot_telegram.py

Si todo va bien, verás mensajes por consola indicando que el bot está activo. Entra en Telegram, busca tu bot por el username que le diste en BotFather, abre el chat y envía /start. Deberías recibir el mensaje de bienvenida que has definido en el código.

Hacer el bot más útil: menús, estados y conversaciones

A partir del “hola mundo” básico, la gracia está en añadir lógica más avanzada: menús, botones, distintos flujos de conversación y gestión de estados. Aquí es donde entra en juego la potencia real de python-telegram-bot, con herramientas como ReplyKeyboardMarkup, InlineKeyboardMarkup o el ConversationHandler.

Supón que quieres crear un bot para reportar incidencias o desastres, similar a proyectos como DisAtBot. La idea sería mostrar un menú inicial con opciones como “Enviar reporte”, “Ver mapa”, “FAQ” o “Acerca de”. Para ello puedes definir un teclado personalizado con botones que el usuario pueda pulsar, en lugar de obligarle a escribir texto manualmente.

Con un teclado de respuesta rápida, defines una lista de listas en Python, donde cada sublista representa una fila de botones. Después, usas ReplyKeyboardMarkup para construir el teclado y lo pasas como argumento a reply_text o métodos similares, de forma que Telegram muestre esos botones sobre la caja de escritura.

Esta técnica viene de maravilla cuando necesitas flujos muy guiados, como formularios paso a paso, cuestionarios o procesos críticos en los que no quieres que el usuario se equivoque al escribir. Además, puedes combinarla con una máquina de estados usando ConversationHandler, donde cada estado del flujo se asocia con uno o varios manejadores distintos (por ejemplo, elegir idioma, elegir tipo de reporte, pedir geolocalización, confirmar datos, etc.).

La librería permite definir un diccionario de estados donde cada clave es un número entero (el identificador del estado) y el valor es una lista de manejadores que se activan en ese punto. De esta manera, preservas el contexto entre mensajes y puedes construir diálogos complejos sin volverte loco con if/else por todas partes.

Ejemplo práctico: bot recordatorio de medicación día sí, día no

Un caso muy concreto y útil es el de recordar la toma de medicamentos, alternando entre medicación al mediodía y en la cena, día sí y día no. El planteamiento inicial de mirar si el día del calendario es par o impar parece sencillo, pero se rompe cuando cambias de mes (30, 31 días, febrero, años bisiestos, etc.).

La forma más robusta de resolverlo es no fiarte del número del día del mes, sino de una fecha de referencia fija. Por ejemplo, puedes guardar en algún sitio (un fichero, una base de datos o incluso una variable persistente en el servidor) la fecha del primer día en que tomaste la medicación y definir que ese día fue “día de toma al mediodía”. A partir de ahí, cada día calculas cuántos días han pasado respecto a esa fecha inicial.

Con la fecha actual y la fecha de inicio, puedes calcular la diferencia en días usando las funciones de la librería estándar de Python (módulo datetime). Después, haces un módulo 2 (resto al dividir entre 2): si el resto es 0, toca un tipo de toma (por ejemplo, mediodía); si el resto es 1, toca la otra (por ejemplo, cena). Como el cálculo se hace en base al número total de días transcurridos, no te afecta el cambio de mes ni el número de días que tenga cada uno.

Tu bot, entonces, puede ejecutar un pequeño script que, cada día a una hora concreta, calcule si hoy es día de mediodía o de cena y te envíe el mensaje correspondiente. Para programar el envío automático, puedes integrar bibliotecas de planificación en Python, como schedule o apscheduler, o apoyarte en sistemas externos como cron jobs, funciones Lambda programadas o tareas programadas del servicio donde alojes el bot.

Dónde alojar tu bot: opciones gratuitas y en la nube

Una duda muy frecuente es: ¿tengo que tener mi ordenador encendido todo el día para que el bot funcione? La respuesta es que no, siempre que lo despliegues en algún servicio en la nube o plataforma online que mantenga el proceso vivo por ti.

Servicios como PythonAnywhere permiten ejecutar scripts de Python en la nube, y pueden ser una buena opción para pruebas o bots sencillos. No obstante, en planes gratuitos suele haber limitaciones de tiempo de ejecución continuo, conexiones salientes o disponibilidad. Es importante revisar sus condiciones para saber si tu bot seguirá activo sin supervisión constante.

Si quieres algo más sólido pero también con opciones muy económicas (o casi sin coste en volumen bajo), una alternativa muy interesante es usar AWS con un enfoque serverless. Por ejemplo, puedes montar tu bot con un webhook atendido por AWS Lambda, expuesto a través de Amazon API Gateway. En este modelo, tu código solo se ejecuta cuando Telegram envía una actualización, y no tienes que preocuparte por mantener un servidor encendido. Si necesitas protección adicional, considera servicios como Cloudflare.

  Minecraft: Cómo crear una puerta - ¡Es sencillo, fácil y secreto!

En este planteamiento, defines una función Lambda que recibe el JSON que Telegram envía a tu webhook, valida el token secreto, procesa el mensaje y responde llamando a la Bot API mediante peticiones HTTPS. El coste en tráfico bajo suele ser muy reducido, y no tienes que gestionar máquinas, parches ni reinicios.

Para bots más grandes, con más tráfico o dependencias más pesadas, puedes optar por contenedores en ECS Fargate junto con un Application Load Balancer. En este caso, ejecutas tu bot (por ejemplo, una aplicación FastAPI integrada con python-telegram-bot en modo webhook) dentro de un contenedor Docker, y el ALB recibe las peticiones HTTPS y las redirige a tus tareas Fargate. Es más complejo, pero también muy escalable y flexible.

Polling largo vs webhooks: cuál elegir y cuándo

Telegram soporta dos enfoques excluyentes para recibir actualizaciones: getUpdates (polling) o webhooks. No puedes usar ambos a la vez; o bien tu bot pregunta a Telegram, o bien Telegram empuja las actualizaciones hacia tu servidor.

El polling largo es la forma más sencilla de empezar. Tu código llama periódicamente a getUpdates, indicando un tiempo de espera para que la conexión se mantenga abierta hasta que haya mensajes nuevos. Es ideal para desarrollo local, porque puedes ejecutar el bot en tu portátil sin exponer puertos al exterior, y la librería python-telegram-bot se encarga de gestionar estos detalles con métodos como run_polling().

Los webhooks, en cambio, son la opción pensada para producción. Configuras una URL HTTPS (por ejemplo, un endpoint en API Gateway, un servidor Flask/FastAPI, o una ruta en un framework Node como Express o Telegraf) y llamas al método setWebhook de la Bot API indicando esa URL. Desde ese momento, cada actualización que reciba Telegram se enviará como una petición POST en formato JSON a tu endpoint.

Con webhooks puedes añadir una capa extra de seguridad usando el parámetro secret_token. Al definir el webhook, le pasas un token secreto y, después, en tu servidor validas que el encabezado X-Telegram-Bot-Api-Secret-Token coincide con el valor esperado. De esta forma, solo aceptas peticiones que realmente vengan de Telegram.

En cualquier caso, recuerda que mientras haya un webhook configurado, no podrás usar getUpdates. Si quieres volver al modo polling, primero deberás desactivar el webhook borrándolo o configurándolo en blanco, y luego ya podrás ejecutar tu bot en local con run_polling() sin conflicto.

Buenas prácticas de seguridad, UX y mantenimiento

Cuando tu bot empiece a ser usado por más gente, es importante ir más allá del experimento y tener en cuenta algunas buenas prácticas para que sea seguro, agradable de usar y fácil de mantener a largo plazo.

En el plano de la seguridad, el punto crítico es proteger el token del bot. Guárdalo siempre en variables de entorno o en gestores de secretos (como AWS Secrets Manager) y evita introducirlo duro en el código fuente, especialmente si ese código va a repositorios públicos. Si sospechas que ha podido filtrarse, regenera el token en BotFather al momento.

Si usas webhooks, aprovecha el secret_token y valida siempre el encabezado que Telegram envía. Igualmente, limita los puertos expuestos (como 443, 80, 88, 8443, que son los que soporta Telegram para webhooks) y configura las reglas de cortafuegos o grupos de seguridad de tu proveedor de nube para que solo acepten tráfico necesario.

Desde el punto de vista de experiencia de usuario, es fundamental que tu bot use comandos claros, mensajes explicativos y manejo de errores amigable. Si algo falla, no dejes al usuario con un silencio total; envía un mensaje diciendo que estás teniendo problemas y, si es posible, sugiere qué puede intentar. Los botones, teclados personalizados y menús bien diseñados hacen que la interacción sea mucho más rápida.

Por último, es recomendable monitorizar el rendimiento y registrar errores. Aprovecha los sistemas de logs de tu proveedor (CloudWatch, por ejemplo, en AWS) para detectar excepciones, tiempos de respuesta lentos o picos de tráfico. También puedes recoger feedback de los propios usuarios, con comandos como /feedback o encuestas puntuales, para ir mejorando las funciones que más se usan.

Con todo lo anterior, montar un bot de Telegram con Python en menos de 10 minutos deja de ser cosa de magia y pasa a ser un proceso claro: registras el bot con BotFather, instalas python-telegram-bot, escribes un pequeño script con /start, eliges entre polling o webhook y decides dónde alojarlo. A partir de ahí, puedes ir sumando capas: menús, estados, integraciones con APIs externas o recordatorios inteligentes como el de tu medicación, hasta acabar teniendo un asistente realmente útil adaptado a tu día a día.

Programar mensajes en Telegram-4
Artículo relacionado:
Cómo programar mensajes en Telegram: guía completa con todos los trucos