Introducción a BotFather: el punto de partida para todo bot en Telegram
Si alguna vez has querido crear un bot en Telegram, el primer paso es siempre el mismo: hablar con BotFather. Este bot oficial, mantenido por el equipo de Telegram, actúa como la herramienta central para registrar, configurar y administrar todos los bots de la plataforma. Sin él, no es posible obtener el token de API, ese código único que permite a tu código comunicarse con los servidores de Telegram. En esta guía recorreremos todas las funciones que ofrece BotFather para la creación de bots, desde el comando básico /newbot hasta opciones avanzadas como el modo inline o la gestión de webhooks. Cada función se explica con su propósito, el método de acceso (por plataforma), y las condiciones en las que conviene usarla o evitarla.
El ecosistema de bots en Telegram ha crecido enormemente desde la introducción de la API de Bots en 2015. A día de hoy (última versión disponible en 2026), BotFather sigue siendo el único canal oficial para crear y modificar bots. Aunque la API ha añadido nuevas capacidades – como bots de pago, bots de canales, o la integración con Telegram Stars – la interfaz de BotFather ha permanecido relativamente estable, lo que facilita la tarea de dominar sus comandos. En las siguientes secciones desglosamos cada función con ejemplos prácticos y advertencias basadas en la experiencia colectiva de la comunidad.
Primeros pasos: /newbot y la creación del bot
El comando fundamental
Para crear un bot, abre una conversación con @BotFather y envía el comando /newbot. BotFather te pedirá dos datos: un nombre para mostrar (el que verán los usuarios) y un nombre de usuario (que debe terminar en 'bot', como MiPrimerBot o mi_primer_bot). El nombre de usuario es la clave para que otros te encuentren; debe ser único en toda la plataforma. Si el nombre elegido ya está ocupado, BotFather sugerirá alternativas. Una vez aceptado, recibirás un mensaje con el token de acceso (un código alfanumérico de aproximadamente 45 caracteres) y un enlace para empezar a usar tu bot (t.me/MiPrimerBot).
Ejemplo: Supón que deseas crear un bot para recordatorios. Podrías nombrarlo «RecordatoriosBot» y elegir el nombre de usuario recordatorios_bot. Al finalizar, BotFather te entregará un token similar a 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11.
Consejo práctico: Guarda el token inmediatamente en un lugar seguro. No podrás volver a verlo una vez cierres el chat, a menos que uses /token nuevamente. Este token es la llave de acceso a la API de Telegram; cualquier persona que lo posea puede controlar tu bot. Por tanto, jamás lo compartas en repositorios públicos o mensajes de texto.
Una vez creado, puedes empezar a programar tu bot. El flujo típico es: utilizar el token para autenticar las peticiones HTTP contra la API de Telegram (por ejemplo, mediante la librería python-telegram-bot o node-telegram-bot-api), y luego implementar los comandos y respuestas. Sin embargo, antes de lanzarlo, conviene configurar algunos parámetros directamente desde BotFather, como la descripción, la foto de perfil o la lista de comandos.
Gestión de bots: /mybots y el panel de control
El comando /mybots te muestra una lista de todos los bots que has creado (hasta donde se sabe, no hay límite documentado de cantidad, aunque la observación empírica sugiere que decenas de bots funcionan sin problema). Al seleccionar uno, BotFather te presenta un menú con varias opciones: API Token, Edit Bot, Bot Settings, Delete Bot, Transfer Ownership (esta última apareció en 2022 y permite cambiar el propietario del bot, algo útil si trabajas en equipo).
En Edit Bot encontrarás los subcomandos para modificar: /setname, /setdescription, /setabouttext, /setuserpic, /setcommands, /setdomain. Vamos a detallarlos porque son esenciales para que tu bot sea usable y profesional. Cada uno aborda un aspecto concreto de la identidad del bot, y usarlos correctamente marca la diferencia entre un bot amateur y uno pulido.
Edición de información básica: nombre, descripción y acerca de
/setname te permite cambiar el nombre para mostrar del bot (no el nombre de usuario). Es útil si tu bot cambia de enfoque o se renombra. /setdescription define el texto que aparece debajo del nombre en la lista de contactos y en la información del bot. Límite: aproximadamente 512 caracteres. /setabouttext es un texto más largo (hasta 120 caracteres) que aparece en la sección «Acerca de» del perfil del bot. Aunque pequeño, es el primer resumen que leen los usuarios; úsalo para decir qué hace el bot en una línea.
Ejemplo: Imagina un bot que ofrece el tiempo meteorológico. Podrías poner de descripción: «Obtén el pronóstico del clima para cualquier ciudad en tiempo real. Usa /tiempo [ciudad] para empezar.» Y en about: «Bot meteorológico no oficial. Datos de OpenWeatherMap. No almacenamos información personal.»
Imagen de perfil: /setuserpic
Para que tu bot tenga una foto de perfil, usa /setuserpic dentro de la edición del bot. BotFather te pedirá que le envíes una imagen (puede ser JPEG, PNG, estático o animado en formato WebP). La imagen se mostrará en el chat y en los resultados de búsqueda. Es altamente recomendable usar una imagen que refleje la función del bot, con al menos 512x512 píxeles de resolución para que se vea bien en todas las pantallas.
Advertencia: El tamaño máximo de archivo para la imagen de perfil es de 200 KB (según documentación de Telegram). Si tu imagen supera ese tamaño, comprímela antes de subir. También ten en cuenta que la imagen se recortará a un círculo; coloca el elemento importante en el centro.
Comandos personalizados: /setcommands
Una de las funciones más potentes de BotFather es la capacidad de definir una lista de comandos que los usuarios pueden ver al escribir '/' en cualquier chat con el bot. Esto mejora enormemente la experiencia de usuario, ya que orienta sobre las capacidades del bot sin necesidad de leer una ayuda extensa. Para establecerlos, usa /setcommands y luego envía una lista en el formato:
comando1 - Descripción breve comando2 - Otra descripción start - Inicia la interacción help - Muestra ayuda
Cada línea debe contener el nombre del comando (sin barra) seguido de un guión y una descripción de máximo 256 caracteres. El conjunto total de comandos no tiene un límite explícito, pero la usabilidad se degrada si superas los 10 o 12 comandos. Telegram recomienda mantener los nombres cortos y en minúsculas (aunque el sistema no lo exige).
Ejemplo práctico: Para un bot de traducción, los comandos podrían ser:
start - Inicia el bot y te da la bienvenida help - Muestra instrucciones de uso traducir - Traduce un texto al idioma deseado idiomas - Lista los idiomas disponibles feedback - Envía comentarios al desarrollador
La descripción aparece en la interfaz de usuario cuando el usuario empieza a escribir '/' en Android, iOS o Telegram Desktop. En dispositivos móviles, se muestra una lista desplegable que facilita la selección. Mantener las descripciones claras y orientadas a la acción (inicia, traduce, lista) reduce la fricción y hace que el bot se sienta más profesional.
Configuración avanzada: privacidad, modo inline y grupos
/setprivacy: Control de lo que ve tu bot
Por defecto, los bots creados con BotFather tienen el modo de privacidad activado. Esto significa que el bot solo recibe los mensajes que le envían directamente (comandos incluidos) y los mensajes de los usuarios en grupos donde lo mencione explícitamente (con @nombre_bot). En grupos, no recibe todos los mensajes. Si tu bot necesita escuchar todos los mensajes de un grupo (por ejemplo, un bot de moderación que filtra spam), debes desactivar el modo privado mediante /setprivacy y elegir Disable.
Cuándo no desactivarlo: Si tu bot solo responde a comandos, dejarlo en modo privado es más seguro y reduce el tráfico de datos innecesario. Desactivar la privacidad puede ocasionar que el bot reciba grandes volúmenes de mensajes en grupos activos, lo que aumenta el consumo de recursos y puede superar los límites de la API si no tienes una gestión de colas adecuada.
Modo inline: /setinline
El modo inline permite que los usuarios utilicen tu bot directamente en el campo de texto de cualquier chat, escribiendo @nombre_bot + texto. Esto es extremadamente útil para bots de búsqueda, GIFs, stickers o servicios de utilidad (como bots de traducción in situ). Para habilitarlo, usa /setinline y escribe un placeholder (texto predictivo) que aparecerá en el campo de texto cuando el usuario escriba @. Por ejemplo, «Buscar imágenes...».
Una vez activado, tu bot debe implementar el método answerInlineQuery en la API. Es importante entender que el modo inline tiene cuotas de uso: según la documentación, los bots nuevos pueden atender hasta un máximo de 30 consultas inline por segundo (este límite puede variar; consulta la documentación oficial para límites actualizados). Si esperas un alto volumen, considera implementar caché o limitar la cantidad de resultados devueltos para evitar exceder la cuota.
Permiso para unirse a grupos: /setjoingroups
Por defecto, los bots pueden ser añadidos a grupos por cualquier usuario. Si quieres restringir esta posibilidad (por ejemplo, porque es un bot interno o privado), usa /setjoingroups y elige Disable. Esta configuración no afecta a la capacidad de recibir mensajes en grupos donde ya está, solo impide que sea agregado a nuevos. Es una medida de seguridad común para bots que manejan datos sensibles.
Gestión del token de API: seguridad y actualización
El token de acceso es único por bot. Puedes consultarlo en cualquier momento con /token dentro de la conversación de BotFather (seleccionando el bot en la lista de /mybots). Si sospechas que el token ha sido comprometido, debes revocarlo inmediatamente con /revoke. Esto generará un nuevo token y el anterior dejará de funcionar. Es una práctica recomendada hacerlo periódicamente, sobre todo si trabajas en equipo o si el bot ha estado expuesto en entornos no seguros.
Al revocar un token, todos los servicios que estén usando el token antiguo dejarán de funcionar hasta que se actualicen con el nuevo. Por tanto, planifica la migración: si tienes múltiples instancias (por ejemplo, un webhook y un worker), coordina el cambio para minimizar el tiempo de inactividad.
Webhooks y dominio: /setwebhook vs /setdomain
Aunque BotFather no configura directamente webhooks (eso se hace mediante llamadas a la API), el comando /setdomain permite asociar un dominio a tu bot. Esto es útil si tu bot sirve contenido web (por ejemplo, un mini-app o una página de configuración). Al establecer un dominio, el bot puede abrir enlaces de forma segura y Telegram mostrará el dominio como su sitio web oficial. El dominio debe ser HTTPS y estar verificado (tener un certificado SSL válido).
Para configurar un webhook, debes hacer una petición POST a la API de Telegram: https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://tudominio.com/webhook. Desde BotFather no hay una opción directa para esto; es una tarea de desarrollo. Sin embargo, BotFather muestra el estado actual del webhook cuando solicitas /mybots > bot > API Token: en esa pantalla aparece si el webhook está activo y qué URL tiene. Si necesitas eliminarlo, puedes usar /deleteWebhook desde la API.
Eliminación y transferencia de bots
Con /deletebot puedes borrar permanentemente un bot. BotFather pedirá confirmación; una vez eliminado, el token queda inválido y el nombre de usuario queda libre para ser usado por otro bot. Esta acción es irreversible, así que asegúrate de tener copias de seguridad del código y datos.
Para transferir la propiedad a otro usuario (por ejemplo, si te retiras del proyecto), usa la opción Transfer Ownership dentro del menú de /mybots. El nuevo propietario debe ser un usuario de Telegram que haya iniciado el bot por lo menos una vez (según la documentación oficial). La transferencia cambia el dueño del bot, pero todos los demás parámetros (descripción, comandos, token) se mantienen. El token sigue siendo válido hasta que el nuevo dueño decida revocarlo.
Funciones menos conocidas: /setinlinegeo y /setdescription
Dentro de la configuración inline, existe /setinlinegeo que permite que el bot solicite la ubicación del usuario cuando se usa en modo inline. Esto es útil para bots que ofrecen resultados basados en la localización (por ejemplo, restaurantes cercanos). Al activarlo, se añade un botón de «Enviar ubicación» en la interfaz inline.
Otra función útil es que BotFather permite cambiar la descripción del bot cuantas veces quieras mediante /setdescription sin necesidad de borrarlo y crearlo de nuevo. Esto es especialmente práctico durante la fase de desarrollo, cuando el propósito del bot puede ir evolucionando y necesitas ajustar el mensaje rápidamente.
Errores comunes y solución de problemas
| Síntoma | Posible causa | Verificación | Solución |
|---|---|---|---|
| El bot no responde a comandos | Token incorrecto o webhook mal configurado | Usa getMe con el token para ver si responde |
Revisa el token con /token en BotFather; si usas webhook, verifica URL y certificado SSL |
| Los comandos no aparecen al escribir '/' | No se ha ejecutado /setcommands o la lista tiene formato incorrecto | Pide al usuario que escriba / (no debería mostrar nada si no hay comandos) | Usa /setcommands con el formato correcto (comando - descripción). El cambio tarda unos segundos en propagarse |
| El bot no recibe mensajes en grupos | Modo privacidad activado y el bot no es mencionado | Intenta mencionar al bot con @; si responde, es por privacidad | Desactiva privacidad con /setprivacy o asegura que el bot escuche mensajes con mención |
| Al usar inline no aparecen resultados | Modo inline no habilitado o error en answerInlineQuery | Prueba con @nombrebot en cualquier chat; si no abre ventana, revisa /setinline | Habilita /setinline y verifica que tu código implemente correctamente answerInlineQuery |
Mejores prácticas para el uso de BotFather
- Documenta los tokens de forma segura: Usa gestores de contraseñas o variables de entorno; nunca los incluyas en código fuente.
- Revoca tokens periódicamente (cada 6 meses o tras cambios en el equipo).
- Define comandos claros y coherentes con el propósito del bot. No dupliques funcionalidades.
- Configura adecuadamente la privacidad según el caso de uso. No la desactives a menos que sea estrictamente necesario.
- Utiliza /setdomain si tu bot tiene una página web asociada; mejora la confianza del usuario.
- Mantén actualizada la descripción y el about para reflejar cambios en las capacidades del bot.
- Prueba el modo inline en un grupo de prueba antes de lanzarlo al público.
- Para bots con alta demanda, considera usar webhook en lugar de polling para reducir latencia y carga.
Aplicar estas recomendaciones te ayudará a mantener un bot seguro, eficiente y fácil de usar. La combinación de una buena configuración inicial con un mantenimiento periódico es la clave para que tu bot funcione sin contratiempos a largo plazo.
Preguntas frecuentes (FAQ)
¿Puedo cambiar el nombre de usuario de mi bot después de creado?
No directamente desde BotFather. Una vez creado, el nombre de usuario (el que termina en 'bot') no se puede modificar. Debes crear un nuevo bot con el nombre deseado y migrar tu código al nuevo token. Sin embargo, el nombre para mostrar (visible) sí se puede cambiar en cualquier momento con /setname.
¿Cuántos bots puedo crear con una misma cuenta?
No hay un límite oficial documentado. En la práctica, usuarios han reportado crear decenas de bots sin problemas. Sin embargo, cada bot consume recursos en los servidores de Telegram (cola de mensajes, webhooks), por lo que usa solo los necesarios.
¿Es posible eliminar un bot y recuperar el mismo nombre de usuario?
Sí. Cuando eliminas un bot con /deletebot, el nombre de usuario queda libre. Otro usuario (o tú mismo) puede crear un nuevo bot con ese nombre inmediatamente. No hay período de gracia, así que si te arrepientes, actúa rápido.
¿Puedo tener un bot que solo funcione para mí?
No hay una opción «privado» nativa. Sin embargo, puedes limitar su alcance de varias formas: (1) no publicitar el enlace del bot; (2) configurar /setjoingroups como deshabilitado; (3) en tu código, verificar el ID del usuario que envía el mensaje y solo responder si coincide con tu ID. Esto hará que el bot ignore a otros.
¿Por qué mi bot no aparece en la búsqueda global de Telegram?
Los bots son indexados por Telegram de forma automática, pero no hay garantía de que aparezcan en la búsqueda global. Para mejorar la visibilidad, asegúrate de tener un nombre de usuario reconocible, una descripción clara y una foto de perfil atractiva. No existe un botón «aparecer en búsqueda» en BotFather.
Conclusión y próximos pasos
BotFather sigue siendo la puerta de entrada indispensable para cualquier desarrollador que quiera crear un bot en Telegram. Sus funciones cubren desde la creación inicial hasta la personalización avanzada, la gestión de seguridad y la transferencia de propiedad. Dominar estos comandos te permitirá lanzar bots profesionales de manera rápida y evitar los errores más comunes.
Una vez que tengas tu bot configurado con BotFather, el siguiente paso es sumergirte en la documentación oficial de la API de Telegram para implementar la lógica de tu bot. Recuerda que BotFather no ofrece capacidades de hosting ni de código; todo el comportamiento del bot se programa aparte. Usa este artículo como referencia cada vez que necesites recordar qué comando usar o cómo ajustar una opción. La comunidad de Telegram es activa y existen numerosos foros y grupos donde compartir experiencias.
De cara al futuro, se espera que BotFather incorpore nuevas funciones conforme Telegram expanda su ecosistema. Por ejemplo, ya se rumorea la posibilidad de gestionar bots de pago directamente desde la interfaz de BotFather, así como una integración más estrecha con Telegram Mini Apps. Mantente atento a las actualizaciones oficiales para aprovechar al máximo las novedades.
Para finalizar, te animamos a experimentar: crea un bot de prueba, juega con todas las opciones de BotFather y observa cómo afectan al comportamiento del bot. La mejor forma de aprender es haciendo.
