Muchos usuarios de Telegram, tarde o temprano se plantean crear su propio bot para automatizar tareas, responder mensajes o simplemente trastear con código. La buena noticia es que no necesitas ser ingeniero, ni tener un mega servidor en casa. Crear un bot de Telegram con Python solo requiere un poco de paciencia y dedicación.
En esta guía vas a aprender cómo crear un bot de Telegram con Python paso a paso desde cero. Repasamos qué es exactamente un bot, cómo conseguir el famoso token con BotFather, cómo montar el entorno en tu ordenador, cómo hacer que tu bot envíe su primer mensaje, cómo programar comandos o incluso cómo extraer datos en tiempo real (por ejemplo, el precio de Bitcoin) y mandarlos de forma automática a tu chat cada día.
Qué es un bot de Telegram y qué tipos existen
Un bot de Telegram es, básicamente, una cuenta especial controlada por un programa en lugar de por una persona. Ese programa se conecta a los servidores de Telegram a través de su API y es capaz de leer lo que se escribe en los chats donde está presente y responder con mensajes, botones, encuestas, archivos o cualquier acción que tengas programada.
La idea es que el bot pueda reaccionar a comandos o mensajes y ejecutar tareas concretas sin intervención humana: mandar recordatorios, mostrar información de una base de datos, gestionar reservas, moderar grupos, jugar con gifs, controlar luces inteligentes o hacer de asistente 24/7 para un negocio online.
En Telegram hay dos formas principales de interacción con bots que te interesa conocer:
- Bots “normales” por comandos. El usuario escribe órdenes que empiezan por “/”, como
/start,/helpo/list_languages, y el bot responde con una acción concreta. Son perfectos para menús, FAQs, sistemas de reservas o cualquier flujo guiado. - Bots inline. En lugar de usar “/”, el usuario escribe
@nombre_del_botdirectamente en cualquier chat, seguido de un texto. El bot responde “en línea” sugiriendo resultados, por ejemplo, @gif para buscar gifs animados relacionados con una palabra clave.
Además de estos, también puedes tener bots que reaccionan de forma “espontánea” a lo que se escribe en un grupo. Por ejemplo detectando insultos para hacer de anti-spam, saludando a nuevos miembros o aplicando reglas de moderación sin que nadie escriba un comando explícito.

Por qué los bots de Telegram se han vuelto tan populares
Uno de los motivos por los que los bots de Telegram se han disparado es que la plataforma ofrece una API muy abierta y sin apenas restricciones para desarrolladores. No tienes que pedir permisos especiales ni pasar revisiones eternas como en otras apps de mensajería. Simplemente hablas con BotFather, creas tu bot y en segundos tienes un token listo para trabajar.
Esa libertad ha permitido que florezcan bots para casi todo: gestionar grupos y canales, lanzar encuestas, controlar procesos de e‑commerce, conectar con servicios externos, recibir datos en tiempo real o hasta manejar tareas internas de empresas (onboarding, avisos a equipos, flujos de soporte, etc.).
También ayuda que la API de bots sea muy sencilla de entender. Puedes trabajar a bajo nivel usando peticiones HTTPS a https://api.telegram.org/botTOKEN/METHOD_NAME o apoyarte en librerías como python-telegram-bot, pyTelegramBotAPI o librerías similares en Node.js que te abstraen mucha complejidad.
En el mundo real, esto se traduce en usos muy variados. Desde bots de clima o del precio de criptomonedas, hasta sistemas completos de atención al cliente, bots educativos, notificaciones de bolsa o integraciones con herramientas como Google Calendar, Trello, CRM corporativos y un largo etcétera.
Crear un bot con BotFather y conseguir el token
Antes de tocar una sola línea de código, hay que conseguir que Telegram “sepa” que tu bot existe. Para ello se usa @BotFather, que es el bot oficial de Telegram para registrar y configurar bots. Todo el proceso se hace desde la propia app. Tanto en móvil como en escritorio.
Los pasos básicos para dar de alta tu bot son muy sencillos y siempre pasan por esta secuencia de mensajes con BotFather, que se manejan como si estuvieras chateando con un usuario más:
- Abre Telegram, escribe en el buscador @BotFather y entra en la conversación verificada (tiene una marca azul).
- Pulsa en “Start” o escribe
/startpara ver la lista de comandos disponibles. - Lanza el comando
/newbot. BotFather te pedirá primero un nombre visible (lo que verán los usuarios en el perfil) y después un nombre de usuario que debe acabar enboty no puede comenzar por número.
Por ejemplo, podrías poner como nombre “Btc Price” y como username algo como btc_daily_update_bot. Cuando completes los pasos, BotFather te enviará un mensaje con varias recomendaciones, la URL t.me/tu_usuario_bot y, sobre todo, un token de acceso a la API.
Ese token tiene un formato del estilo 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw y es la clave que permite a tu código hacerse pasar por tu bot ante los servidores de Telegram, así que trátalo como un secreto: no lo publiques en GitHub ni lo compartas por ahí.
Desde BotFather también puedes personalizar tu bot con otros comandos útiles:
/setdescriptionpara añadir una descripción corta que se verá al abrir el chat del bot./setabouttextpara la biografía visible en el perfil./setuserpicpara subir una foto de perfil y que no se vea tan soso./mybotspara ver todos los bots que has creado y editarlos./setcommandso “Edit Commands” para definir la lista de comandos que entenderá tu bot (por ejemplo,start - Inicia la conversación).
Con esto ya tienes la “carcasa” creada. E bot existe en Telegram, tiene nombre, descripción, imagen y, lo más importante, un token único para conectarte desde tu código. El siguiente paso es darle vida con Python.
Preparar el entorno en Python y crear el proyecto
Aunque puedes programar bots de Telegram con muchos lenguajes, Python es una de las opciones más cómodas gracias a su sintaxis sencilla y a la cantidad de librerías disponibles. Para seguir este tutorial necesitas tener instalado Python 3 en tu equipo y, por supuesto, la aplicación de Telegram (en móvil o en escritorio).
Como buena práctica, lo ideal es trabajar siempre dentro de un entorno virtual (venv). Así no mezclas dependencias entre proyectos. Desde la carpeta donde vayas a crear tu bot, puedes hacer algo como esto en Windows:
py -m venv venv
.\venv\Scripts\activate
En macOS o Linux el comando de activación cambia ligeramente, pero la idea es la misma: crear una burbuja aislada donde instalar solo las librerías que usará tu bot. Una vez activado el entorno, toca instalar los paquetes necesarios con pip.
Dependiendo del enfoque que quieras, hay dos caminos bastante habituales al empezar con bots de Telegram en Python y que conviene conocer para elegir el que mejor se adapta a tu proyecto:
- Trabajar directamente con requests y la API HTTP. Tú construyes manualmente las URLs del tipo
https://api.telegram.org/botTOKEN/sendMessage, envías peticiones GET o POST conrequestsy procesas las respuestas en JSON. - Usar una librería como python-telegram-bot. Esta librería abstrae la API y te da objetos de alto nivel como
Updater,Dispatcher,CommandHandleroCallbackContextpara trabajar con comandos y mensajes de forma mucho más ordenada.
Si quieres un bot más estructurado con comandos tipo /start y un diseño escalable, te conviene añadir también la librería python-telegram-bot, que se instala con un simple:
pip install python-telegram-bot
Hacer que el bot envíe su primer mensaje con la API de Telegram
Vamos a empezar por la base: conseguir que tu bot envíe un mensaje a tu propio chat de Telegram usando directamente la API HTTP. Esto te ayudará a entender cómo se construyen las peticiones antes de complicarlo con más funcionalidades.
Para que el bot pueda escribirte necesita dos cosas clave: el token que te dio BotFather y tu chat ID. Obtener el chat ID es muy sencillo si sigues este proceso con calma:
- Abre en Telegram el chat con tu bot a través del enlace
t.me/tu_usuario_boto buscándolo por su username. - Escríbele el comando
/startpara que haya al menos un mensaje en el historial. - En el navegador, entra a la URL:
https://api.telegram.org/botTU_TOKEN/getUpdates
Al acceder a esa dirección, la API te devolverá un JSON con los últimos mensajes asociados a tu bot. Dentro verás campos como "update_id", "message_id" y, muy importante, el campo "chat" con su "id". Ese número (algo del estilo 68xxxxxxx) es tu chat ID privado, que es el que usaremos para enviar mensajes directamente a tu conversación.
Con el token y el chat ID en la mano, puedes definir en tu archivo .py una función mínima que construya la URL adecuada y lance la petición con requests.get. El método que vamos a llamar en la API de Telegram es sendMessage, que acepta parámetros como chat_id, text y el modo de formato (por ejemplo, parse_mode=Markdown).
La estructura típica de esa función, simplificada, sería algo como esto, donde se ve claramente cómo se monta la URL y se realiza la llamada a la API con los datos necesarios:
def bot_send_text(bot_message):
bot_token = 'YOUR_TOKEN'
bot_chatID = 'YOUR_CHAT_ID'
send_text = 'https://api.telegram.org/bot' + bot_token + '/sendMessage?chat_id=' + bot_chatID + '&parse_mode=Markdown&text=' + bot_message
response = requests.get(send_text)
return response
Fuera de la función, puedes probar a mandar un mensaje de prueba creando una variable y ejecutando el archivo con Python. Si todo está bien configurado, verás aparecer un mensaje tipo “¡Hola, Telegram!” en el chat de tu bot en cuestión de segundos.
test_bot = bot_send_text('¡Hola, Telegram!')
Programar mensajes recurrentes con schedule
Lo siguiente que seguramente quieras hacer es automatizar el envío de ese informe para que llegue cada día a una hora fija sin tener que ejecutar nada a mano. Para eso resulta muy cómoda la librería schedule, que te permite planificar tareas de una forma muy legible.
Con schedule puedes decirle a tu script cosas como “ejecuta la función report una vez al día a las 08:00” y luego dejar un bucle infinito que vaya comprobando si hay tareas pendientes. Mientras el programa siga corriendo, tu bot actuará a la hora indicada.
El típico bloque de entrada al script, utilizando el patrón if __name__ == '__main__', quedaría de este estilo para mantener el bot encendido y atento a las tareas programadas:
if __name__ == '__main__':
schedule.every().day.at("08:00").do(report)
while True:
schedule.run_pending()
Es importante que uses este tipo de automatización con cierto sentido común para no abusar de la web de la que haces scraping. No tiene ningún sentido hacer peticiones cada segundo para un dato que se podría consultar, por ejemplo, una vez al día o incluso cada hora. Si saturas el servidor de destino, acabarás bloqueado.
Ten en cuenta que, trabajando así, tu bot funcionará mientras tengas el script en ejecución en tu propio ordenador. Si cierras la terminal o apagas el equipo, el bot dejará de mandar mensajes programados. Para tenerlo activo 24/7 lo ideal es subir el código a un servidor o a algún servicio en la nube.
Diseñar un bot estructurado con la librería python-telegram-bot
Cuando tu proyecto empieza a crecer, trabajar solo con peticiones HTTP puede volverse algo caótico. Aquí es donde entra en juego la librería python-telegram-bot, que organiza el código en torno a objetos y manejadores de comandos y te hace la vida mucho más fácil.
Esta librería se basa en un par de conceptos clave: el objeto Updater, que se encarga de comunicarse con los servidores de Telegram y mandar respuestas, y el dispatcher, que sería algo así como la “oreja” del bot, siempre escuchando los mensajes que llegan y decidiendo qué función ejecutar cuando entra un comando o un texto concreto.
La forma más limpia de trabajar con tu token es aislarlo en un módulo de configuración, por ejemplo en un paquete llamado config donde guardes un archivo auth.py con una variable token. De esta forma, no subes el token al repositorio y puedes añadir el archivo a tu .gitignore para evitar sustos.
Un primer esqueleto muy mínimo de tu archivo bot.py, usando la librería, podría ser algo como lo siguiente, donde se ve claramente la creación del Updater y cómo se obtiene el dispatcher asociado:
from telegram.ext import Updater
from config.auth import token
if __name__ == ‘__main__’:
updater = Updater(token=token, use_context=True)
dispatcher = updater.dispatcher
Si ejecutas ese archivo tal cual, verás que el script simplemente termina sin errores, pero todavía no hace nada útil porque no le has dicho cómo reaccionar a los mensajes. El siguiente paso es añadir registro de eventos con logging y definir funciones que actúen como “handlers” para los comandos que quieras soportar, empezando normalmente por /start.
La librería estándar de Python logging te permite tener un control detallado de lo que está pasando dentro de tu bot: qué comandos se reciben, si ocurre algún error, etc. Configurarla es tan sencillo como definir un formato de salida y un nivel mínimo de gravedad para los mensajes:
import logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger('MiPrimerBot')
Con esa configuración indicarás que quieres ver por pantalla mensajes de nivel INFO en adelante (INFO, WARNING, ERROR, CRITICAL) y que cada línea lleve la fecha, el nombre del logger, el nivel y el texto explicativo del evento que estás registrando.
Responder al comando /start con un handler personalizado
Para que tu bot empiece a ser algo más que una figura decorativa, necesitas definir funciones que se ejecuten cuando llega un comando concreto. A estas funciones se las llama “handlers” y siempre reciben como argumentos un objeto update y un context.
El parámetro update representa el mensaje que ha llegado (ya sea un comando, un texto normal, etc.) e incluye datos como el chat, el usuario o el contenido del mensaje. El parámetro context representa al propio bot, con métodos para responder, enviar fotos, etc. Lo habitual es registrar un log cuando se recibe un comando y responder con un mensaje de texto.
Un ejemplo muy sencillo de handler para el comando /start sería algo del estilo, donde se deja constancia en los logs de que se ha recibido el comando y se responde al mismo chat desde el que se envió:
from telegram.ext import CallbackContext
def start(update: Updater, context: CallbackContext):
logger.info(‘He recibido un comando start’)
context.bot.send_message(
chat_id=update.message.chat_id,
text=»Soy de Jerez de la Frontera, cuna del fino, de los caballos cartujanos y Capital Mundial del Motociclismo»
)
Ahora que tienes definida la función, debes decirle al dispatcher que la utilice cuando llegue el comando /start. Para eso se usa el objeto CommandHandler, que mapea un texto de comando (sin la barra) a la función encargada de gestionarlo.
El alta en el dispatcher se hace de forma muy directa y legible: “cuando recibas el comando start, ejecuta la función start”. El código necesario para registrar ese comportamiento sería algo así dentro del bloque principal:
from telegram.ext import CommandHandler
if __name__ == ‘__main__’:
updater = Updater(token=token, use_context=True)
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler(‘start’, start))
updater.start_polling()
updater.idle()
Las dos últimas líneas son importantísimas: start_polling() hace que el bot empiece a preguntar regularmente a los servidores de Telegram si hay nuevos mensajes (método conocido como polling), y idle() mantiene el programa corriendo hasta que lo detengas de forma manual con un Ctrl+C en la consola.
Si ahora ejecutas python bot.py y en Telegram escribes /start a tu bot, deberías ver aparecer el mensaje que has programado en el handler, además de las correspondientes entradas en el log por cada comando recibido.
Opciones para alojar y ejecutar tu bot 24/7
Un detalle importante que muchas veces se pasa por alto es que Telegram no ejecuta tu código. Sus servidores solo almacenan mensajes y ofrecen la API, pero el programa que controla tu bot tiene que correr en alguna parte, ya sea tu propio ordenador, un VPS o un servicio de hosting en la nube.
Si solo estás haciendo pruebas, puedes mantener el bot corriendo en tu equipo local mientras tengas la consola abierta. Pero si quieres que esté disponible 24/7 para usuarios, tarde o temprano tendrás que subirlo a un entorno que esté siempre encendido y con buena conectividad.
Entre las opciones más frecuentes para proyectos pequeños y medianos encontrarás plataformas como Replit, Render o DigitalOcean, cada una con sus ventajas en cuanto a facilidad de uso y coste. A grandes rasgos, puedes encontrarte con un panorama similar a este:
| Replit | Sí | Sencillo, es genial para principiantes |
| Render | Sí | Media |
| DigitalOcean | No | Sencillo, es potente y espable |
Para bots sencillos y de aprendizaje, las capas gratuitas de algunos servicios suelen ser suficientes, aunque conviene vigilar limitaciones de tiempo de ejecución, consumo de CPU o conexiones salientes para que el bot no se caiga sin que te des cuenta.
A nivel de stack tecnológico, lo normal es optar por Python con librerías como python-telegram-bot si prefieres claridad y mucha documentación, o por Node.js con soluciones como Telegraf.js o node-telegram-bot-api si ya vienes del mundo JavaScript y quieres integrarte con otros proyectos en ese ecosistema.
Alternativas sin código y usos profesionales de los bots
Si lo tuyo no es programar o simplemente quieres montar un bot funcional a toda velocidad para validar una idea, tienes a tu alcance varias plataformas no-code que permiten crear flujos conversacionales con bloques visuales sin tocar ni una línea de Python.
Herramientas como Manybot, Chatfuel, Tars, Make (antes Integromat), n8n o integraciones con Google Sheets y Airtable te permiten definir lógicas de preguntas y respuestas, formularios, menús de navegación o conexiones con otros servicios usando interfaces gráficas. Son perfectas para MVPs, pruebas rápidas o proyectos donde el bot no tenga que hacer cosas demasiado avanzadas.
La gran diferencia frente a desarrollar con código propio es que, con estas soluciones, tú sacrificas algo de flexibilidad a cambio de velocidad y sencillez. Cuando necesitas funcionalidades más complejas, integraciones muy específicas o un control total sobre la lógica, lo normal es dar el salto a un bot programado en serio.
A nivel empresarial, un bot de Telegram puede convertirse en una pieza clave para atender a clientes 24/7, automatizar procesos repetitivos o recoger datos estructurados sin saturar al equipo humano. Piensa en funciones como responder FAQs, gestionar el seguimiento de pedidos, lanzar encuestas de satisfacción, hacer onboarding de nuevos alumnos en una academia online o manejar reservas en un restaurante.
También puedes explorar modelos de negocio en torno a bots: accesos premium a ciertas funciones por suscripción, bots educativos de pago, contenido exclusivo, integración con e‑commerce o recomendaciones de afiliados con enlaces de seguimiento, siempre respetando la normativa de protección de datos y los términos de uso de Telegram.

