Creando un chatbot en PHP: de la teoría al código funcional

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Por qué PHP es un excelente lenguaje para un chatbot?

\n

Cuando se habla de crear chatbots, muchos piensan inmediatamente en Python o Node.js. Pero PHP, en el que funciona pythonlib.ru y gran parte de internet, no se queda atrás en esta tarea. PHP tiene tres ventajas principales: facilidad de implementación en cualquier hosting, una gran cantidad de bibliotecas listas y una sintaxis clara. Si ya estás familiarizado con PHP, podrás escribir tu primer chatbot en una tarde. En este artículo, analizaremos la creación de un chatbot en PHP desde cero, comenzando con el registro en Telegram y terminando con el procesamiento de comandos complejos.

\n

No usaremos frameworks, solo PHP puro y una biblioteca oficial. Esto te permitirá entender cómo funciona todo "bajo el capó". Luego, podrás migrar fácilmente a cualquier framework moderno (Laravel, Symfony) para escalar.

\n\n

¿Qué necesitas para empezar?

\n

Antes de escribir código, preparemos el entorno de trabajo. Para el desarrollo de un bot en PHP necesitarás:

\n
    \n
  • Servidor web (Apache o Nginx) con PHP 7.4 o superior: cualquier hosting o OpenServer en tu máquina local servirá.
  • \n
  • Acceso a HTTPS — Telegram requiere una conexión segura para Webhook (puedes usar ngrok para desarrollo local).
  • \n
  • Composer — gestor de paquetes para PHP (instalación con un solo comando).
  • \n
  • Cuenta de Telegram — para registrar el bot y probarlo.
  • \n
\n

Si ya tienes un sitio web en PHP, como pythonlib.ru, puedes agregar el bot directamente en un subdominio; es conveniente y no requiere costos adicionales.

\n\n

Registro del bot en Telegram

\n

Abre Telegram, busca a BotFather (el bot oficial para crear bots) y envía el comando:

\n
/newbot
\n

BotFather te pedirá que inventes un nombre y un username para tu bot. El username debe terminar en bot, por ejemplo: MyFirstPHPBot. Después del registro exitoso, recibirás un token, una cadena larga como esta:

\n
1234567890:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw
\n

Guarda este token — lo necesitarás para todas las solicitudes a la API. No lo compartas con nadie, de lo contrario tu bot podría ser hackeado.

\n\n

Arquitectura del chatbot: Long Polling vs Webhook

\n

Hay dos formas de hacer que el bot reciba mensajes:

\n
    \n
  • Long Polling — el bot "consulta" constantemente al servidor de Telegram preguntando: "¿Hay mensajes nuevos?". Es más fácil para depurar, pero carga el servidor.
  • \n
  • Webhook — Telegram envía una solicitud POST a tu URL cuando alguien le escribe al bot. Es más rápido y confiable, requiere HTTPS.
  • \n
\n

En esta guía práctica usaremos Webhook, ya que es el estándar moderno para bots en producción. Se puede configurar con un solo comando a través del navegador.

\n\n

Paso 1: Instalamos la biblioteca para trabajar con Telegram API

\n

Para no tener que escribir el análisis JSON y el envío de solicitudes manualmente, instalaremos la biblioteca oficial de PHP de Telegram. Abre la terminal en la carpeta de tu proyecto y ejecuta:

\n
composer require telegram-bot/api
\n

Esta biblioteca soporta todos los métodos de la API y se actualiza junto con Telegram. Después de la instalación, aparecerán las carpetas vendor y el archivo composer.json.

\n\n

Paso 2: Script básico para procesar mensajes entrantes

\n

Crea un archivo bot.php — este será el punto de entrada para Webhook. Aquí tienes el código mínimo que responde "¡Hola!" a cualquier mensaje:

\n\n
<?php\nrequire_once __DIR__ . '/vendor/autoload.php';\n\nuse Telegram\\Bot\\Api;\n\n$token = 'TU_TOKEN_AQUÍ';\n$telegram = new Api($token);\n\n// Obtenemos la actualización entrante\n$update = $telegram->getWebhookUpdate();\n\n// Extraemos el texto del mensaje y el ID del chat\n$message = $update->getMessage();\n$chatId                

Blogs

Book Recommendations