Bot de Telegram en PHP: desde cero hasta el primer saludo
\n\nCuando se habla de crear bots para Telegram, lo primero que viene a la mente es Python. Y tiene lógica: existe la elegante biblioteca python-telegram-bot, montones de tutoriales y una gran comunidad. Pero, ¿qué hacer si tu stack principal es PHP? ¿O si quieres crear rápidamente un bot simple para notificaciones sin desplegar un servidor separado en Python?
La buena noticia: Telegram Bot API no está ligado a un lenguaje. Es una interfaz HTTP común, y PHP lo maneja igual de bien. En este artículo, veremos cómo crear un bot de Telegram en PHP desde cero: desde el registro en BotFather hasta un bot completo que responde a comandos, envía mensajes y puede procesar solicitudes callback. Todo con ejemplos de código reales, sin rodeos.
\n\n¿Por qué PHP para un bot de Telegram está bien?
\n\nMuchos desarrolladores son escépticos respecto a PHP en el contexto de los bots. Dicen que es un lenguaje para "sitios web improvisados", no para una API real. La realidad es que PHP cumple perfectamente como procesador del lado del servidor: es simple, predecible y funciona en cualquier hosting. Para un bot que no requiere superrendimiento (y la mayoría de los bots son así), PHP es la elección ideal.
\n\nAdemás, si ya tienes un sitio web en PHP, puedes alojar el bot en el mismo hosting. Sin trabajadores adicionales, demonios ni configuraciones complejas. Simplemente un archivo bot.php que cuelga de un webhook y procesa las solicitudes de Telegram.
Qué necesitas para empezar
\n\n- \n
- Hosting con PHP 7.4+ (cualquier hosting sirve, incluso el shared hosting más barato). \n
- Acceso a HTTPS — Telegram requiere que el webhook funcione sobre un protocolo seguro. Puedes usar Let's Encrypt. \n
- Cuenta en Telegram — obvio, pero sin ella no se puede. \n
- Conocimientos básicos de PHP — suficiente para entender cómo funcionan funciones, arrays y cURL. \n
Si tienes todo esto, ¡vamos allá!
\n\nPaso 1. Registramos el bot con BotFather
\n\nInicia un diálogo en Telegram con @BotFather — es el "criador" principal de bots. Envía el comando:
\n\n/newbot\n\nTe pedirán que ingreses el nombre del bot (se mostrará en los contactos) y un username (debe terminar en bot). Después de esto, recibirás un token — una cadena larga como esta:
1234567890:ABCdefGhIJKlmNoPQRsTUVwXYZ\n\nEsta es la clave de acceso a tu bot. No la compartas con nadie: cualquiera que conozca el token puede controlar el bot.
\n\nTambién recomiendo configurar inmediatamente un avatar y una descripción con los comandos /setuserpic y /setdescription. No es obligatorio, pero hace que el bot sea más amigable.
Paso 2. Elegimos el método para recibir actualizaciones
\n\nTelegram Bot API ofrece dos opciones:
\n\n- \n
- Polling (long polling) — consultas constantemente al servidor de Telegram preguntando "¿Hay mensajes nuevos?". Funciona, pero requiere que el script se ejecute continuamente (por ejemplo, mediante cron). \n
- Webhook — Telegram envía automáticamente una solicitud POST a tu servidor cuando llega un nuevo mensaje. Es más cómodo y rápido. \n
Usaremos webhook. Primero, verifica que tu servidor sea accesible desde internet por HTTPS. Si no tienes un certificado SSL, usa Cloudflare (tienen SSL gratuito) o compra un certificado por poco dinero.
\n\nConfiguramos el webhook
\n\nEnvía una solicitud GET a la URL (puedes simplemente abrirla en el navegador):
\n\nhttps://api.telegram.org/bot<TOKEN>/setWebhook?url=https://tu_sitio/bot.php\n\nReemplaza <TOKEN> con tu token real, y https://tu_sitio/bot.php con la ruta real a tu script. Como respuesta, deberías recibir un JSON:
{"ok": true, "result": true, "description": "Webhook was set"}