Introducción a BotFather

BotFather es el bot oficial de Telegram que permite crear y gestionar otros bots, actuando como la puerta de entrada para cualquier desarrollador que desee automatizar tareas, ofrecer servicios o integrar aplicaciones dentro de la plataforma de mensajería. En esta guía práctica recorreremos todo el proceso: desde la creación inicial hasta la configuración avanzada como webhooks y comandos personalizados, incluyendo consejos para evitar errores comunes. La creación de un bot en Telegram es sorprendentemente sencilla: no requiere instalar nada en tu dispositivo, solo interactuar con BotFather mediante mensajes de texto. No obstante, para aprovechar al máximo sus capacidades (como responder a mensajes, enviar notificaciones o gestionar grupos) necesitarás conocimientos básicos de HTTP y, opcionalmente, un servidor propio. Esta guía cubre tanto los pasos accesibles para principiantes como las configuraciones que interesan a desarrolladores experimentados, equilibrando simplicidad y profundidad técnica.

Introducción a BotFather
Introducción a BotFather

Requisitos previos

Antes de empezar, asegúrate de cumplir con lo siguiente:

  • Una cuenta activa de Telegram (no importa si usas la versión móvil o de escritorio).
  • Acceso a un cliente de Telegram que soporte la creación de bots: cualquier cliente oficial (Android, iOS, Desktop, Web) funciona.
  • Si planeas usar webhooks, necesitarás un servidor público con HTTPS (por ejemplo, un VPS o un servicio como Heroku, AWS, o Cloudflare Workers).
  • Conocimientos básicos de programación (opcional para la configuración básica, indispensable para añadir lógica al bot).

Estos requisitos son mínimos: con solo una cuenta y un cliente ya puedes crear el bot y definir su identidad. La parte de programación solo se vuelve necesaria cuando quieras que el bot reaccione a mensajes o ejecute acciones complejas.

Advertencia: No es necesario tener experiencia previa con bots para seguir los pasos iniciales. Sin embargo, la configuración de webhooks y la implementación de respuestas automáticas requieren entender cómo funciona una API REST.

Paso 1: Iniciar conversación con BotFather

BotFather es el bot oficial creado por el equipo de Telegram. Para empezar, abre tu aplicación de Telegram y busca el usuario @BotFather. En la mayoría de los clientes, puedes escribir @BotFather en la barra de búsqueda y seleccionar el primer resultado. Luego, presiona “Iniciar” o envía el comando /start. Recibirás un mensaje de bienvenida con la lista de comandos disponibles. En la versión de escritorio (Telegram Desktop) el proceso es idéntico: busca en el panel izquierdo y haz clic en el bot. En la versión web (web.telegram.org) también funciona de la misma manera. No hay diferencias significativas entre plataformas para este paso, lo que facilita empezar desde cualquier dispositivo.

Paso 2: Crear un nuevo bot con /newbot

Envía el comando /newbot a BotFather. Él te pedirá dos cosas: un nombre para tu bot (que será visible para los usuarios) y un nombre de usuario (username) único que termine en “bot” (por ejemplo, MiPrimerBot o ejemplo_bot). El nombre de usuario debe ser único en toda la plataforma; si el que eliges ya está ocupado, BotFather te sugerirá alternativas. Una vez que completes ambos campos, recibirás un mensaje de confirmación con un token (una cadena alfanumérica larga). Este token es la clave para autenticar tu bot ante la API de Telegram. Guárdalo en un lugar seguro; si lo pierdes, puedes generar uno nuevo con el comando /token desde el mismo BotFather (dentro de la conversación dedicada al bot).

Consejo: El token es secreto. No lo compartas públicamente ni lo subas a repositorios de código abierto sin usar variables de entorno. Cualquier persona con el token puede controlar tu bot.

Paso 3: Configurar la información básica del bot

Una vez creado el bot, BotFather ofrece varios comandos para personalizar su apariencia y descripción. Los más importantes son:

  • /setdescription – Permite añadir una descripción corta (hasta 512 caracteres) que se muestra al iniciar el bot. Es útil para explicar su propósito.
  • /setabouttext – Texto “Acerca de” que aparece en el perfil del bot. También limitado a 512 caracteres.
  • /setuserpic – Sube una imagen de perfil para tu bot. BotFather te pedirá que envíes la imagen directamente.
  • /setcommands – Define la lista de comandos que el bot entiende, junto con una breve descripción. Por ejemplo: /start - Inicia la conversación. Estos comandos aparecerán en el menú del bot en los clientes móviles.

Para usar estos comandos, simplemente envíalos a BotFather. Él te guiará paso a paso, y los cambios se aplican de inmediato. Ten en cuenta que la descripción y el texto “Acerca de” pueden modificarse en cualquier momento, sin límite de cambios, lo que permite iterar sobre la identidad del bot a medida que evoluciona.

Paso 4: Administrar bots existentes con /mybots

Si ya tienes varios bots, puedes gestionarlos usando el comando /mybots. BotFather te mostrará una lista de todos tus bots. Al seleccionar uno, accedes a un menú de opciones que incluye:

  • Ver/editar el token del bot.
  • Revocar el token actual (generar uno nuevo).
  • Eliminar el bot (acción irreversible).
  • Cambiar la descripción, foto, comandos, etc.

Este menú es especialmente útil cuando necesitas rotar tokens por seguridad o actualizar la configuración sin recordar los comandos específicos. La interfaz es consistente en todas las plataformas, por lo que una vez que te familiarizas con ella, administrar decenas de bots se vuelve ágil.

Paso 5: Configurar el modo de recepción de actualizaciones (Polling vs Webhook)

Una vez que tienes el token, tu bot necesita saber cómo recibir los mensajes de los usuarios. La API de Telegram ofrece dos mecanismos: polling (tu servidor consulta periódicamente la API) y webhook (Telegram envía automáticamente los datos a una URL que tú configures). La elección depende del entorno: polling es ideal para desarrollo local por su simplicidad, mientras que webhook es más eficiente en producción al eliminar la latencia de las consultas recurrentes.

Polling (recomendado para desarrollo local)

El polling es el método más simple: tu código realiza llamadas HTTP GET a https://api.telegram.org/bot<TOKEN>/getUpdates repetidamente (por ejemplo, cada 1 segundo). Es ideal para probar el bot en tu computadora local sin necesidad de un servidor público. La mayoría de las librerías (python-telegram-bot, node-telegram-bot-api) implementan polling por defecto, y puedes comenzar a ver respuestas casi de inmediato.

Webhook (recomendado para producción)

Para un bot en producción, el webhook es más eficiente: Telegram notifica a tu servidor al instante cuando hay un mensaje nuevo. Para configurarlo, debes:

  1. Tener un servidor accesible públicamente con HTTPS (por ejemplo, https://tudominio.com/webhook).
  2. Enviar una solicitud POST a la API de Telegram: https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://tudominio.com/webhook.
  3. Tu servidor debe responder a las peticiones POST de Telegram con un JSON que contenga la actualización.

Puedes verificar que el webhook está activo usando getWebhookInfo (GET). Si el webhook falla (por ejemplo, certificado HTTPS vencido), Telegram reintentará varias veces y luego desactivará el webhook automáticamente. Por tanto, es crucial mantener el certificado al día y la URL accesible.

Advertencia: Solo puede haber un método activo a la vez. Si configuras un webhook, el polling dejará de funcionar. Para volver a polling, debes eliminar el webhook con /deleteWebhook.

Paso 6: Comandos personalizados y privacidad

Los comandos personalizados se definen con /setcommands en BotFather. Puedes listar hasta 100 comandos, cada uno con un nombre (sin espacios, empezando con /) y una breve descripción. Ejemplo:

help - Muestra la ayuda
contact - Envía información de contacto

Además, por defecto los bots no ven los mensajes de los grupos a menos que se les active el modo de privacidad. En BotFather puedes desactivar la privacidad con el comando /setprivacy. Si desactivas la privacidad, el bot podrá leer todos los mensajes del grupo, lo cual es necesario para bots que moderan o responden a comandos. Sin embargo, Telegram recomienda mantener la privacidad activada a menos que sea estrictamente necesario, para proteger la privacidad de los usuarios. Evalúa bien si tu bot realmente necesita acceder a todos los mensajes o solo a aquellos que le mencionan directamente.

Paso 7: Probar el bot

Una vez configurado, busca el username de tu bot en Telegram (por ejemplo, @MiPrimerBot) y envíale un mensaje. Si implementaste polling o webhook, deberías recibir la respuesta programada. Para pruebas rápidas, puedes usar el endpoint getUpdates manualmente desde el navegador para ver los mensajes pendientes. Recuerda que solo verás los mensajes enviados después de que el bot esté activo; los mensajes anteriores no se recuperan. Este paso confirma que toda la cadena de comunicación funciona correctamente.

Paso 7: Probar el bot
Paso 7: Probar el bot

Solución de problemas comunes

El bot no responde a comandos

Verifica que el webhook esté configurado correctamente con getWebhookInfo. Si usas polling, asegúrate de que tu script esté corriendo y que no haya otro proceso usando el mismo token. Además, comprueba que la URL del webhook sea HTTPS y accesible desde internet; un cortafuegos o un certificado vencido pueden impedir la comunicación.

Error “bot was blocked by the user”

Si un usuario bloquea al bot, este no podrá enviarle mensajes. No es un error de configuración, sino una limitación de la plataforma. Tu código debe manejar el código de error correspondiente (403) y no reintentar el envío, para evitar bucles innecesarios.

Token expuesto públicamente

Si crees que tu token ha sido comprometido, revócalo inmediatamente con /revoke en BotFather (dentro de /mybots) y genera uno nuevo. Luego actualiza tu configuración. Es una buena práctica rotar los tokens periódicamente, incluso sin sospecha de fuga.

Mejores prácticas para desarrolladores

  • Usa variables de entorno para almacenar el token, nunca lo hardcodees.
  • Implementa logging para depurar errores sin exponer datos sensibles.
  • Configura un timeout adecuado en las solicitudes a la API (por ejemplo, 30 segundos).
  • Maneja correctamente los errores de la API (códigos 429 para rate limiting, etc.).
  • No compartas el token en repositorios públicos; usa .gitignore o secretos de CI/CD.
  • Actualiza regularmente los comandos para reflejar nuevas funcionalidades.
  • Respeta la privacidad de los usuarios: solo recopila la información necesaria.

Estas prácticas no solo protegen tu bot, sino que también facilitan el mantenimiento a largo plazo. Por ejemplo, usar variables de entorno evita commits accidentales del token, y el logging estructurado te permite identificar problemas sin mostrar información confidencial en los registros.

Preguntas frecuentes

¿Puedo cambiar el token de mi bot?

Sí. Desde BotFather, usa /mybots, selecciona tu bot y elige la opción “Revocar token” o “Generar nuevo token”. Esto invalidará el token anterior. Asegúrate de actualizar tu configuración después.

¿Qué diferencia hay entre webhook y polling?

El polling requiere que tu servidor consulte constantemente la API para obtener nuevas actualizaciones, consumiendo recursos y con latencia de hasta unos segundos. El webhook envía actualizaciones en tiempo real a tu servidor tan pronto como ocurren, siendo más eficiente. Para producción se recomienda webhook; para desarrollo local, polling es más sencillo.

¿Puedo crear un bot sin saber programar?

Puedes crear el bot y configurar su nombre/descripción usando BotFather sin código. Sin embargo, para que el bot responda a mensajes o ejecute acciones necesitarás implementar un servidor que consuma la API de Telegram. Existen servicios no oficiales (como BotPress o Manybot) que permiten crear bots con interfaz gráfica, pero no son parte de Telegram.

¿Cómo elimino un bot de forma permanente?

En BotFather, usa /mybots, selecciona el bot y elige “Delete bot”. La eliminación es irreversible y libera el username para que otro lo use. También puedes revocar el token primero por seguridad.

¿Por qué mi bot no ve los mensajes en un grupo?

Por defecto, los bots tienen activada la privacidad (privacy mode), lo que impide que vean mensajes que no estén dirigidos a ellos (por ejemplo, comandos). Para cambiar esto, usa /setprivacy en BotFather y desactívalo. Ten en cuenta que al desactivarlo, el bot podrá leer todos los mensajes del grupo, lo que puede ser un problema de privacidad.

Conclusión

Crear y configurar un bot en Telegram con BotFather es un proceso directo que cualquier persona puede completar en minutos. La verdadera complejidad reside en la lógica del bot y en elegir el método de comunicación adecuado (polling vs webhook). Siguiendo esta guía, tendrás una base sólida para desarrollar desde un simple bot de pruebas hasta un asistente automatizado en producción. Recuerda siempre proteger tu token, mantener actualizados los comandos y respetar la privacidad de los usuarios. A medida que Telegram evoluciona, BotFather continúa añadiendo opciones de personalización; mantenerse al día con los cambios de la API es recomendable para aprovechar nuevas capacidades. Ahora que conoces los pasos, ¡es hora de poner manos a la obra y crear tu propio bot!