¿Cómo se crea un bot en Telegram desde cero?
Crear un bot en Telegram es el primer paso para automatizar tareas, ofrecer servicios o interactuar con usuarios de forma programática. La plataforma ofrece una API robusta y gratuita, y el proceso comienza con un diálogo simple con BotFather, el bot oficial que gestiona todos los bots en Telegram. En esta guía recorreremos cada etapa: desde el registro inicial hasta la configuración de comandos personalizados y la conexión mediante webhooks, explicando no solo el cómo sino también el por qué de cada decisión.
A diferencia de otras plataformas, Telegram no requiere aprobación previa ni costos para crear un bot. Cualquier usuario con una cuenta activa puede generar un token de API en minutos. Eso sí, el mantenimiento y la escalabilidad dependen del desarrollador: el bot necesita un servidor (o un servicio serverless) para ejecutar su lógica. A lo largo del artículo veremos las opciones más comunes y sus compensaciones.
Requisitos previos
Antes de comenzar, necesitas tres cosas: una cuenta de Telegram activa, acceso a un editor de texto o IDE, y un entorno donde alojar el código (puede ser tu propio ordenador para pruebas, un servidor VPS, o una plataforma serverless como AWS Lambda o Cloudflare Workers). No es necesario tener conocimientos profundos de programación, pero sí familiaridad con algún lenguaje como Python, Node.js o PHP, ya que la API se consume mediante peticiones HTTP. Si nunca has usado la API de Telegram, te recomendamos tener a mano la documentación oficial. Aunque esta guía es autocontenida, consultar la referencia te ayudará a entender los límites y posibilidades reales.
Paso 1: Registrar un nuevo bot con BotFather
Todo comienza con @BotFather. Busca este bot en Telegram e inicia una conversación; es el único bot oficial para crear y gestionar bots. El proceso es completamente conversacional y guiado.
Envía el comando /newbot. BotFather te pedirá un nombre para tu bot (el que verán los usuarios) y después un username único que termine en “bot” (por ejemplo, MiSuperBot o mi_super_bot). El username debe estar disponible y solo puede contener caracteres latinos, números y guiones bajos.
Al completar estos pasos, BotFather te entregará un token de API (una cadena larga como 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11). Este token es la llave maestra de tu bot: con él puedes enviar mensajes, recibir actualizaciones y configurar todo. Nunca lo compartas públicamente; si se filtra, revócalo y genera uno nuevo con /revoke en BotFather.
Configuración inicial opcional
Después de crear el bot, puedes personalizar su perfil: foto de perfil, descripción y mensaje de bienvenida. Usa /setuserpic, /setdescription y /setabouttext respectivamente. Estos detalles mejoran la experiencia del usuario, pero no afectan la funcionalidad técnica.
Paso 2: Entender la API de bots
La API de Telegram se basa en peticiones HTTPS simples. Tu bot envía solicitudes a https://api.telegram.org/bot<TOKEN>/<METODO> y recibe respuestas en JSON. Por ejemplo, para obtener información del bot, haces una petición GET a getMe.
Existen dos mecanismos para recibir mensajes de los usuarios: long polling y webhooks. El polling implica que tu servidor consulta periódicamente la API por nuevas actualizaciones usando el método getUpdates. Los webhooks, en cambio, hacen que Telegram envíe automáticamente una petición HTTPS a una URL pública cada vez que ocurre un evento. Los webhooks son más eficientes y rápidos, pero requieren un servidor accesible desde internet con un certificado SSL válido. Para desarrollo local, el polling es más sencillo; para producción, los webhooks son la opción recomendada. Telegram exige que la URL del webhook use HTTPS (puede ser autofirmado solo en pruebas, pero no en producción).
Paso 3: Escribir el código básico del bot
Vamos a crear un bot mínimo en Python que responda al comando /start y al comando /help. Usaremos la biblioteca python-telegram-bot, una de las más populares y bien mantenidas.
Con polling
import logging
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
# Configurar logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text('¡Hola! Soy un bot de ejemplo.')
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text('Comandos disponibles: /start, /help')
def main():
# Reemplaza con tu token real
application = Application.builder().token('AQUI_TU_TOKEN').build()
application.add_handler(CommandHandler('start', start))
application.add_handler(CommandHandler('help', help_command))
# Iniciar polling
application.run_polling()
if __name__ == '__main__':
main()
Este script inicia un bucle infinito que consulta nuevas actualizaciones cada cierto intervalo (por defecto, 0.1 segundos). Al recibir un mensaje, busca un manejador para el comando y ejecuta la función asociada. Puedes probarlo localmente: instala la librería con pip install python-telegram-bot, ejecuta el script y envía /start a tu bot desde Telegram.
Con webhooks (para producción)
Para usar webhooks, necesitas un servidor público con HTTPS. En el código, en lugar de run_polling(), configuras el webhook apuntando a tu dominio. Con python-telegram-bot, puedes usar application.run_webhook(). Debes especificar la URL pública, el puerto y el certificado SSL.
application.run_webhook(
listen='0.0.0.0',
port=8443,
url_path='AQUI_TU_TOKEN',
webhook_url='https://tudominio.com/AQUI_TU_TOKEN'
)
Es importante que url_path coincida con el token para evitar que terceros envíen actualizaciones falsas. Telegram verificará que el certificado SSL sea válido; puedes usar Let's Encrypt para obtener uno gratuito.
⚠️ Advertencia:
Nunca expongas tu token en repositorios públicos. Usa variables de entorno o servicios de gestión de secretos. Si tu token se filtra, revócalo inmediatamente con /revoke en BotFather.
Paso 4: Configurar comandos personalizados
Los comandos son la forma principal de interacción con un bot. Se definen en dos lugares: en el código (para que el bot los procese) y opcionalmente en BotFather (para que aparezcan en el menú del chat).
Para que los comandos aparezcan sugeridos al escribir / en el chat, debes registrarlos con BotFather usando /setcommands. Se envía una lista en formato comando - descripción. Por ejemplo:
start - Inicia la conversación help - Muestra ayuda info - Obtén información del bot
Desde el código, los manejadores se asocian con CommandHandler('comando', funcion). Puedes tener tantos comandos como necesites, pero Telegram recomienda no superar los 100 comandos listados en el menú para no abrumar al usuario. Los comandos que no estén registrados en BotFather igual funcionan si están implementados en el código, pero no aparecerán en el menú predictivo.
Parámetros en comandos
Los usuarios pueden enviar argumentos después del comando, por ejemplo /buscar inteligencia artificial. En el manejador, puedes acceder a los argumentos mediante context.args. Aquí un ejemplo:
async def buscar(update: Update, context: ContextTypes.DEFAULT_TYPE):
query = ' '.join(context.args)
if not query:
await update.message.reply_text('Por favor, proporciona un término de búsqueda.')
return
# Lógica de búsqueda...
await update.message.reply_text(f'Buscando: {query}')
Webhooks vs Polling: cuándo usar cada uno
La elección entre webhooks y polling depende del entorno y los requisitos de escalabilidad. A continuación, una comparación cualitativa basada en observaciones empíricas y documentación oficial:
| Aspecto | Polling | Webhook |
|---|---|---|
| Configuración | Simple, sin necesidad de servidor público | Requiere dominio HTTPS y certificado SSL válido |
| Latencia | Depende del intervalo de polling (típicamente 0.1–2 segundos) | Casi instantánea (Telegram envía la actualización en el momento) |
| Escalabilidad | Aceptable para bots de bajo tráfico | Recomendado para bots con alta concurrencia |
| Costo de servidor | Puede ejecutarse en una máquina local o VPS barato | Requiere un servidor accesible 24/7 (o serverless con función pública) |
Para desarrollo y pruebas, el polling es la vía más rápida. Para bots en producción que manejan decenas de miles de usuarios diarios, los webhooks reducen la carga en tu servidor y mejoran la experiencia. Telegram recomienda webhooks siempre que sea posible.
Solución de problemas comunes
Incluso con una configuración correcta, pueden surgir problemas. Aquí algunos de los más frecuentes y cómo resolverlos:
El bot no responde
Causa posible: el token es incorrecto, el servidor no está corriendo, o hay un firewall bloqueando las conexiones. Verifica el token con getMe usando curl: curl https://api.telegram.org/bot<TOKEN>/getMe. Si recibes un JSON con "ok": true, el token es válido. Si no, revísalo o regenéralo.
Error de webhook: “Conflict: can't use getUpdates and webhook simultaneously”
Telegram no permite usar ambos métodos al mismo tiempo. Si antes usaste polling y ahora configuras un webhook, primero debes eliminar el webhook con /deleteWebhook o llamando a https://api.telegram.org/bot<TOKEN>/deleteWebhook. Luego configura el webhook nuevo.
El webhook no recibe actualizaciones
Verifica que tu servidor sea accesible desde internet y que el puerto esté abierto. Telegram espera una respuesta en menos de 2 segundos; si tu lógica es lenta, responde con un 200 inmediatamente y procesa en segundo plano. También revisa los logs del servidor y la respuesta de getWebhookInfo para ver el estado.
Mejores prácticas para bots en Telegram
Después de tener el bot funcionando, considera estas recomendaciones para mantenerlo seguro, eficiente y amigable:
- Usa variables de entorno para almacenar el token y otras configuraciones sensibles. Nunca los codifiques en el código.
- Implementa rate limiting para evitar abusos. Telegram tiene límites de 30 mensajes por segundo por bot, pero es mejor controlar el tráfico desde tu lado.
- Maneja errores correctamente con try/except y responde al usuario con mensajes amigables en lugar de errores de sistema.
- Configura logs para monitorear el comportamiento y detectar problemas temprano.
- Usa webhooks con HTTPS en producción; el certificado SSL es obligatorio y puedes obtener uno gratuito con Let's Encrypt.
- No respondas a mensajes de otros bots para evitar bucles infinitos. Telegram incluye un campo
is_boten el objeto User.
Estas buenas prácticas no solo mejoran la robustez, sino que también facilitan el mantenimiento a largo plazo y la escalabilidad del bot.
Escenarios aplicables y no aplicables
Un bot de Telegram es ideal para notificaciones automatizadas, atención al cliente básica, juegos sencillos, encuestas, recordatorios y cualquier tarea repetitiva que no requiera interacción humana constante. Sin embargo, hay situaciones donde un bot no es la mejor solución:
No es adecuado para manejar datos altamente sensibles sin cifrado adicional (los mensajes se almacenan en los servidores de Telegram), para transacciones financieras sin una capa extra de seguridad, o para interacciones que requieran una interfaz gráfica compleja. Tampoco reemplaza a una aplicación web completa cuando se necesita un flujo de autenticación complejo o un manejo de estado persistente entre sesiones.
Preguntas frecuentes
¿Puedo crear un bot sin saber programar?
No directamente. Necesitas al menos conocimientos básicos de programación para implementar la lógica del bot. Existen plataformas low-code que permiten crear bots simples, pero no son oficiales y tienen limitaciones importantes en personalización y escalabilidad.
¿Cuánto cuesta mantener un bot en Telegram?
Telegram no cobra por usar la API. El costo está en el servidor donde alojas el bot: desde 0 en servicios gratuitos (con limitaciones de recursos) hasta unos pocos dólares al mes en un VPS básico. Los webhooks requieren un dominio con SSL, que puede ser gratuito con Let's Encrypt.
¿Cómo puedo ver las actualizaciones en tiempo real?
Usando webhooks. Con polling puedes lograr una latencia baja (menos de 1 segundo), pero no es tiempo real absoluto. Los webhooks entregan la actualización al instante que ocurre, por lo que son la opción más cercana al tiempo real.
¿Puedo eliminar mi bot?
Sí. Habla con BotFather y usa el comando /deletebot. Esto eliminará el token y el bot dejará de funcionar. No se puede recuperar después de eliminarlo, así que asegúrate de respaldar cualquier configuración importante antes.
Conclusión
Crear un bot en Telegram desde cero es un proceso accesible que combina registro simple con BotFather y programación de la lógica. Hemos visto los pasos fundamentales: obtener el token, elegir entre polling y webhooks, escribir manejadores de comandos, y resolver problemas comunes. La flexibilidad de la API permite desde bots simples hasta sistemas complejos integrados con inteligencia artificial, bases de datos y servicios externos.
Como siguiente paso, te sugerimos explorar la documentación de los métodos de la API (envío de fotos, documentos, teclados inline, etc.) y considerar el uso de webhooks en un entorno real. Si tu bot crece, implementa medidas de seguridad y monitoreo. Telegram sigue evolucionando su plataforma de bots, por lo que es importante mantenerse actualizado con las novedades oficiales; por ejemplo, la incorporación de teclados inline mejorados o la integración con pagos son tendencias que amplían las capacidades de los bots.
Recuerda: la mejor manera de aprender es construir. Empieza con un bot pequeño, pruébalo con amigos y ve agregando funcionalidades poco a poco. La comunidad de desarrolladores de Telegram es activa y hay numerosos recursos para seguir aprendiendo.
📺 Related Video Tutorial
COMO CREAR UN BOT PARA GRUPOS EN TELEGRAM / BIENVENIDAS Y AJUSTES PARA ADMINS ANONIMOS / MAYDROID
