Logotipo de TelegramTelegram
Automatización en Telegrampor Telegram Equipo oficial

¿Cómo programar mensajes en Telegram usando un bot?

Aprende a programar mensajes en Telegram con un bot. Usa la API de Telegram y un script Python para enviar mensajes automáticos en canales o grupos. Guía paso a paso.

cómo programar mensajes en Telegram, configurar publicación automática Telegram, Telegram Bot programar mensajes, automatizar mensajes Telegram, cómo usar BotFather para programar, programar mensajes con API de Telegram, solucionar problemas de programación Telegram, mejores prácticas programación Telegram, mensajes recurrentes Telegram, programar mensajes sin terceros Telegram

Programar mensajes en Telegram con un bot: guía completa

La capacidad de programar mensajes en Telegram a través de un bot abre un abanico de posibilidades para la automatización de comunicaciones: desde recordatorios personales hasta la publicación programada de contenido en canales o grupos. Aunque Telegram no ofrece de forma nativa una función para enviar mensajes diferidos (más allá de la opción manual de “programar envío” en el menú de cada chat), la API de bots permite implementar esta funcionalidad con total flexibilidad. Este artículo recorre las distintas aproximaciones —desde crear tu propio bot con un script Python hasta emplear soluciones intermedias como IFTTT o servicios cloud— detallando los pasos concretos y las consideraciones técnicas que debes tener en cuenta. La clave está en comprender cómo se integran los componentes: el bot, el token de acceso y un planificador que ejecute las tareas en el momento preciso.

El enfoque principal será la creación de un bot personal mediante BotFather, la obtención del token de acceso y la escritura de un script sencillo que, ejecutado en un servidor (o incluso en tu propio equipo), pueda enviar mensajes en las fechas y horas indicadas. También se analizarán los límites de la API, las alternativas móviles y de escritorio, y las preguntas frecuentes sobre la autenticación y permisos necesarios, todo ello orientado a que puedas poner en marcha tu propio sistema de mensajería programada sin depender de terceros.

¿Por qué usar un bot para programar mensajes?

La interfaz de Telegram ya ofrece la opción de programar un mensaje individual de forma manual: mantén presionado el botón de envío (o haz clic derecho en escritorio) y selecciona “Programar envío”. Sin embargo, esta acción es puntual y no permite repeticiones ni lógica condicional. Un bot, en cambio, puede:

  • Enviar mensajes recurrentes (diarios, semanales, etc.) con contenido dinámico.
  • Publicar en canales o grupos donde el bot sea administrador.
  • Integrarse con fuentes externas (RSS, APIs meteorológicas, etc.) para generar contenido automatizado.
  • Ejecutarse sin intervención humana una vez configurado.

Para el usuario final, la experiencia es transparente: los mensajes aparecen en el chat exactamente a la hora indicada, como si los hubiera enviado una persona. Esta automatización elimina la necesidad de recordar horarios y permite mantener una presencia constante en canales o grupos sin esfuerzo manual adicional.

Requisitos previos

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

  • Una cuenta de Telegram activa.
  • Acceso a BotFather (@BotFather) para crear y gestionar bots.
  • Un entorno donde ejecutar el script: puede ser tu computadora personal (Windows, macOS, Linux) o un servidor en la nube (VPS, Raspberry Pi, o servicios como PythonAnywhere).
  • Conocimientos básicos de Python (o el lenguaje que elijas) y capacidad para instalar bibliotecas.

No se requiere experiencia previa en la API de Telegram; los pasos están detallados para que cualquier usuario pueda replicarlos. La instalación de las bibliotecas necesarias es sencilla y se explica en la sección correspondiente.

Paso 1: Crear el bot y obtener el token

El primer paso es registrar un nuevo bot en Telegram. Este proceso es idéntico en todas las plataformas (móvil y escritorio), ya que se realiza a través de BotFather, un bot oficial de Telegram que actúa como « consola de administración » de bots.

  1. Abre Telegram y busca @BotFather (o usa el enlace t.me/botfather).
  2. Inicia una conversación y envía el comando /newbot.
  3. BotFather te pedirá un nombre para tu bot (p. ej., “Mi Programador”) y luego un nombre de usuario único que termine en “bot” (p. ej., “mi_programador_bot”). Si el nombre de usuario está disponible, recibirás un mensaje con el token de acceso, que es una cadena alfanumérica como 123456:ABCdefGHIjklmNOPqrSTUvWXyz.

Guarda ese token en un lugar seguro. Es la clave que permitirá a tu script controlar el bot. Nunca compartas tu token públicamente, ya que cualquiera podría tomar el control de tu bot. Si sospechas que ha sido comprometido, puedes revocarlo desde BotFather con el comando /revoke.

Tip: Puedes personalizar la foto de perfil y la descripción de tu bot con los comandos /setuserpic y /setdescription en BotFather. Esto ayuda a identificarlo fácilmente en los chats.

Paso 2: Decidir el destino de los mensajes

Tu bot puede enviar mensajes a cualquier chat (privado, grupo o canal). Sin embargo, hay diferencias importantes en los permisos que conviene conocer antes de continuar:

  • Chat privado: El bot puede enviar mensajes a cualquier usuario que haya iniciado una conversación con él. Para que el bot pueda escribir primero sin que el usuario lo haya contactado, deberás usar el método sendMessage con el chat_id correcto (que puedes obtener, por ejemplo, cuando el usuario escribe /start).
  • Grupo: El bot debe ser añadido al grupo como miembro. No requiere permisos especiales para enviar mensajes, pero si quieres que pueda borrar mensajes o restringir usuarios, necesitarás convertirlo en administrador.
  • Canal: Para que un bot pueda publicar en un canal, debe ser administrador de ese canal, con al menos el permiso de “enviar mensajes”. Puedes añadirlo desde la configuración del canal > Administradores > Añadir administrador.

Una vez que el bot esté en su lugar, necesitarás el identificador numérico del chat (chat ID). La forma más sencilla de obtenerlo es:

  1. Envía un mensaje al bot (por ejemplo, /start) desde el chat donde quieras que se programen los mensajes.
  2. Usa la API de Telegram para ver las actualizaciones: visita https://api.telegram.org/bot<TU_TOKEN>/getUpdates desde tu navegador. Busca el campo chat.id en la respuesta. Ese número (positivo para grupos y canales, puede ser negativo) es el que usarás en tu script.

Si el canal es público, también puedes usar su nombre de usuario (por ejemplo, @micanal) como chat_id en lugar del número, pero el número es más fiable porque no depende de cambios en el nombre de usuario.

Paso 3: Escribir el script de programación de mensajes

El corazón de la solución es un programa que, en los momentos deseados, llame a la API de Telegram para enviar un mensaje. Usaremos Python por su sencillez y amplia documentación, pero puedes adaptar la lógica a Node.js, PHP, o cualquier otro lenguaje que tenga capacidad para realizar peticiones HTTP.

3.1. Instalar las dependencias

Necesitarás Python 3.6 o superior. Luego instala la biblioteca python-telegram-bot (versión 20.x para la API Bot 6.8) y schedule (para la parte de planificación). Ejecuta en tu terminal:

pip install python-telegram-bot schedule

Si prefieres no usar la biblioteca python-telegram-bot, puedes hacer llamadas HTTP directamente con requests. La biblioteca oficial simplifica la gestión de actualizaciones y la creación de comandos, pero para un script de solo envío programado, la opción mínima con requests es suficiente y reduce dependencias. Ejemplo: si solo necesitas enviar un mensaje cada día, requests y schedule son todo lo que necesitas.

3.2. Script mínimo de ejemplo

Crea un archivo, por ejemplo programador.py, con el siguiente contenido (reemplaza los valores entre corchetes):

import requests
import schedule
import time

TOKEN = "AQUÍ_TU_TOKEN"
CHAT_ID = "AQUÍ_TU_CHAT_ID"  # Puede ser numérico o @usuario
MENSAJE = "Hola, esto es un mensaje programado."

def enviar_mensaje():
    url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
    payload = {
        "chat_id": CHAT_ID,
        "text": MENSAJE
    }
    respuesta = requests.post(url, json=payload)
    if respuesta.status_code == 200:
        print("Mensaje enviado exitosamente")
    else:
        print(f"Error: {respuesta.text}")

# Programar el envío cada día a las 09:00
schedule.every().day.at("09:00").do(enviar_mensaje)

print("Planificador iniciado. Esperando...")

while True:
    schedule.run_pending()
    time.sleep(60)  # Revisar cada minuto

Este script se ejecuta indefinidamente y verifica cada 60 segundos si debe ejecutar la tarea. Puedes añadir múltiples horarios o usar schedule.every().monday.at("10:30").do(...) para repeticiones semanales. Para probarlo, ejecuta python programador.py y observa la salida en la terminal; el mensaje se enviará a la hora programada si el script sigue en ejecución.

Advertencia: El bucle while True mantiene el proceso en primer plano. Si cierras la terminal, el script se detiene. Para una ejecución continua, deberás usar un administrador de procesos (systemd, supervisor) o ejecutarlo en un servidor con nohup python programador.py &.

3.3. Envío de mensajes con formato (Markdown/HTML)

La API de Telegram permite formatear el texto con Markdown o HTML. Basta con añadir el parámetro parse_mode:

payload = {
    "chat_id": CHAT_ID,
    "text": "*Texto en negrita* y _cursiva_",
    "parse_mode": "Markdown"
}

Si necesitas enviar imágenes, documentos o stickers, la API ofrece métodos como sendPhoto, sendDocument, etc. La lógica de programación es la misma: simplemente cambias la función que se ejecuta en el momento indicado. Por ejemplo, para enviar una foto diaria, puedes crear una función que descargue la imagen y luego llame a sendPhoto con el archivo correspondiente.

Paso 4: Ejecutar el script de forma continua

El script anterior necesita estar ejecutándose permanentemente para que las tareas programadas se disparen. Las opciones más comunes son:

  • En tu computadora: Puedes usar herramientas como screen o tmux en Linux/macOS, o ejecutar el script como un servicio de Windows (con nssm). Esto permite mantenerlo activo incluso después de cerrar la sesión.
  • En un servidor cloud: Plataformas gratuitas como PythonAnywhere (con un plan gratuito limitado) o Heroku (con un dyno siempre activo requiere tarjeta de crédito) pueden alojar el script. También puedes desplegarlo en una Raspberry Pi en casa, que consume muy poca electricidad.
  • Como función serverless: Usando AWS Lambda o Google Cloud Functions, puedes configurar un trigger basado en tiempo (cron) que ejecute la función de envío. Este enfoque es más eficiente porque no requiere un proceso permanente, pero necesita cierta configuración adicional para manejar el estado y las dependencias.

La elección depende del volumen de mensajes, la criticidad y los costos asociados. Para uso personal o de un canal pequeño, un VPS básico (desde unos 5 USD al mes) es más que suficiente. Si optas por un servicio serverless, recuerda que las funciones tienen límites de tiempo de ejecución (generalmente 15 minutos en AWS Lambda), lo que no es problema para un envío puntual.

Alternativas sin programación: bots y servicios de terceros

Si no deseas escribir código, existen bots ya existentes que ofrecen programación de mensajes. Sin embargo, hay que tener precaución: al otorgar acceso a tu canal o grupo, estás delegando el control a un servicio externo. Algunos bots conocidos (a título ilustrativo) son @SchedulerBot o @ReminderBot, pero su disponibilidad y características cambian con el tiempo. Antes de usarlos, verifica que el bot permita programar mensajes en canales donde sea administrador y que cumpla con tus requisitos de privacidad. Lee las reseñas y comprueba si el bot ha sido auditado o tiene buena reputación en la comunidad.

Otra posibilidad es integrar Telegram con plataformas de automatización como IFTTT o Zapier. Con IFTTT, puedes configurar un applet que envíe un mensaje de Telegram cuando se dispare un evento (por ejemplo, cada día a una hora). La contrapartida: los planes gratuitos suelen tener límites de ejecuciones mensuales (2 o 3 applets en IFTTT) y no ofrecen la flexibilidad de un script personalizado para manejar lógica condicional o múltiples mensajes simultáneos.

Límites y consideraciones técnicas

La API de Telegram impone ciertos límites que debes conocer antes de lanzar un bot de mensajes programados a escala. Ignorarlos puede provocar que tus mensajes no se entreguen o que tu bot sea temporalmente bloqueado.

  • Rate limiting: Por defecto, un bot puede enviar aproximadamente 30 mensajes por segundo a chats individuales, pero hay límites más restrictivos para grupos y canales (alrededor de 20 mensajes por minuto a un mismo grupo). Si superas estos límites, la API responderá con un error 429 y te pedirá que esperes. Es recomendable implementar una pausa entre envíos si manejas lotes grandes.
  • Mensajes programados manualmente: La función nativa de programar envío de Telegram (disponible en la interfaz) no interfiere con los envíos del bot; son independientes y pueden coexistir sin conflictos.
  • Offset de zona horaria: El horario del script se basa en la zona horaria del sistema donde se ejecuta. Si tu servidor está en UTC y quieres enviar a las 9 AM hora de Ciudad de México (UTC-6), debes ajustar la hora en la programación o manejar zonas horarias con la biblioteca pytz. Ejemplo: con pytz puedes obtener la hora local y convertirla a UTC antes de programar la tarea.

Tip: Para asegurarte de que el script funcione incluso si se reinicia, puedes almacenar los mensajes pendientes en un archivo JSON o base de datos, y al iniciar recuperar las tareas no ejecutadas. Con la biblioteca schedule, las tareas se pierden al reiniciar el script; para persistencia, considera usar APScheduler con un backend de almacenamiento (como SQLite) que permita recuperar el estado después de un reinicio.

Solución de problemas comunes

El bot no envía mensajes al canal

Verifica que el bot sea administrador del canal. Ve a la configuración del canal > Administradores > Añadir administrador y busca el nombre de usuario de tu bot. Marca al menos “Enviar mensajes”. Si el bot ya está en el canal pero no puede publicar, este suele ser el motivo. También comprueba que el chat_id que estás usando corresponde al canal y no a un grupo o chat privado.

Error 403: Forbidden al enviar mensaje privado

Un bot no puede iniciar una conversación con un usuario a menos que este haya interactuado primero con el bot (enviado /start). Si necesitas enviar mensajes programados a un usuario sin que él haya iniciado el contacto, no es posible a través de la API de bots. En ese caso, el usuario debe unirse a un canal o grupo gestionado por el bot, o bien tú puedes solicitarle que inicie la conversación una vez.

El script se detiene sin razón aparente

Puede deberse a una excepción no capturada. Envuelve la función enviar_mensaje en un bloque try-except para registrar errores y evitar que el programa se cierre. Además, considera usar un monitor externo (como supervisord) que reinicie el script automáticamente si falla. Agregar logs detallados te ayudará a identificar la causa raíz del problema.

Preguntas frecuentes (FAQ)

¿Puedo programar mensajes sin tener que ejecutar un script yo mismo?

Sí, puedes usar servicios como IFTTT, Zapier o bots de terceros que ofrecen programación de mensajes. Sin embargo, estas soluciones suelen tener limitaciones en el plan gratuito y requieren que confíes tu token o administración del bot a un tercero. La opción más segura y flexible sigue siendo ejecutar tu propio script, ya que mantienes el control total sobre los datos y la lógica de programación.

¿El bot puede enviar mensajes a un usuario sin que yo conozca su chat_id?

No directamente. Necesitas que el usuario haya interactuado con el bot para que puedas obtener su chat_id a través de getUpdates. Una alternativa es que el bot sea miembro de un grupo donde esté el usuario, y enviar el mensaje al grupo (mencionándolo si es necesario). Otra opción es que el usuario se suscriba a un canal gestionado por el bot.

¿Cuántos mensajes puedo programar?

Teóricamente, ilimitados, siempre que respetes los límites de rate limiting de la API. Si necesitas enviar muchos mensajes en un corto período (por ejemplo, un boletín a miles de suscriptores), deberás espaciarlos o usar el método sendMediaGroup para agrupar contenidos. La biblioteca schedule que usamos en el ejemplo no está diseñada para alta concurrencia; para cientos de tareas por minuto, considera APScheduler o hilos. En la práctica, un bot bien configurado puede manejar decenas de mensajes por minuto sin problemas.

¿Puedo modificar un mensaje ya programado con el bot?

Si el mensaje ya fue enviado, puedes editarlo mediante el método editMessageText siempre que tengas el message_id. Si el mensaje aún no se ha enviado (está programado en tu script), puedes modificar la tarea en el código antes de la hora prevista. No hay una forma de “modificar” un envío futuro desde Telegram a menos que implementes tu propia lógica de actualización de tareas, por ejemplo, usando una base de datos para almacenar las tareas y un endpoint para modificarlas.

Lista de verificación para implementar tu bot programador

  • Creé el bot con BotFather y guardé el token de forma segura.
  • Agregué el bot como administrador al canal o grupo destino (si aplica).
  • Obtuve el chat_id correcto (numérico o @username).
  • Instalé Python y las bibliotecas necesarias (python-telegram-bot o requests + schedule).
  • Escribí y probé el script localmente con un mensaje de prueba.
  • Configuré el script para que se ejecute de forma continua (servicio, screen, nohup, systemd).
  • Ajusté la zona horaria si es necesario.
  • Monitoreo los logs para detectar errores de rate limiting o permisos.

Siguiendo estos pasos, dispondrás de un sistema de mensajería programada completamente funcional, controlado por ti y sin dependencias de servicios de terceros. La flexibilidad de la API de Telegram te permite escalar desde un simple recordatorio diario hasta complejas campañas automatizadas que incluyan contenido dinámico, respuestas condicionales o integración con otras herramientas. A medida que ganes experiencia, podrás explorar funcionalidades avanzadas como el envío de mensajes con botones inline o la creación de un panel de administración para gestionar las tareas programadas.


Fecha de publicación: 15 de septiembre de 2026. La información se basa en la versión más reciente de la API de Telegram y la biblioteca python-telegram-bot 20.x. Siempre verifica la documentación oficial para actualizaciones y cambios en los límites de la API.

#Programación de mensajes#Telegram Bot#Automatización#API de Telegram#Configuración#Publicación automática