Zanzara es una de las muchas bibliotecas PHP para construir bots de Telegram asincrónicos en PHP, apoyado por ReactPHP. Lo de asíncrono es interesante y se refiere a que puede ejecutar múltiples llamadas a la vez, es decir, varias personas consultando al Bot sin esperar que termine la otra consulta. Además, no requiere ningún recurso externo.
Así que aquí se explica cómo alojar e instalar una app de Telegram Bot en un servidor cloud dedicado, o VPS, con Ubuntu 20.04 (no cambia mucho de una distribución de Linux a otra).
Requisitos Previos
- Servidor (utilizaré Clouding)
- PHP (> = 7.3)
- Composer
Paso 1: Crea un servidor en la nube
Primero, inicia sesión en tu servidor elegido. En adictec, utilizamos y recomendamos Clouding.io, por el que puedes recibir 5€ de saldo GRATIS. Los pasos son similares en caso utilices otro servidor.
La configuración del servidor para nuestro ejemplo es la siguiente: (lo que nos da un aproximado de 5,70€ por mes y lo suficiente para poner a prueba nuestro bot)
- 2 GB RAM
- 1 vCores
- 5 GB SSD
- 2 copias de seguridad con frecuencia semanal
Entonces, creamos un nuevo servidor, eligiendo Ubuntu 20.4 como sistema operativo con al menos 1 GB de RAM. El siguiente paso es conectarse al servidor en la nube a través de SSH e inicie sesión con las credenciales proporcionadas por el servidor.
Una de mis herramientas favoritas de conexión remota es MobaXterm. Una vez que hayas iniciado sesión en tu servidor Ubuntu, ejecuta el siguiente comando para actualizar tu sistema base con los últimos paquetes disponibles.
sudo apt-get update
sudo apt-get upgrade
Paso 2: Preparando los requisitos
Primero, deberás instalar el servidor web NGINX y otros paquetes necesarios en el sistema. Por ejemplo, comenzamos con Nginx, ejecutando el siguiente comando:
sudo apt install nginx
Luego, realizamos una verificación para asegurarnos de que el servicio esté en ejecución:
systemctl status nginx
Una vez que todos los paquetes estén instalados, también faltaría instalar Composer con los siguientes comandos:
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
HASH='curl -sS https://composer.github.io/installer.sig'
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Comprobamos que todo está correcto, con el siguiente comando:
composer
Paso 3: Configurar la base de datos
A continuación, deberás crear una base de datos y un usuario para tu aplicación (solo en caso deseas almacenar la información del Bot para más adelante). Primero, instala mysql:
sudo apt-get install mysql-server
Luego, inicia sesión en el shell de MySQL con el siguiente comando:
mysql
Una vez que hayas iniciado sesión, crea un usuario y una base de datos con el siguiente comando:
CREATE USER 'adictec'@'localhost' IDENTIFIED BY 'mipassword';
CREATE DATABASE adictecbotdb;
A continuación, otorga todos los privilegios a la base de datos con el siguiente comando:
GRANT ALL ON adictecbotdb.* to 'adictec'@'localhost';
A continuación, vacía los privilegios y hay que salir de la consola con el siguiente comando:
FLUSH PRIVILEGES;
EXIT;
Paso 4: Instalar y Configurar Zanzara
Llegó el turno de usar Zanzara, que cuenta con soporte completo de Telegram Bot Api 5.0 (noviembre de 2020).
Primero, nos dirigimos al directorio raíz web de nginx:
cd /var/www/
Creamos una carpeta para nuestro proyecto Bot de Zanzara.
mkdir zanzara
Y entonces, instalamos Zanzara a través de composer de la siguiente manera:
cd zanzara/
composer require badfarm/zanzara
Paso 5: Configuración de nuestro Telegram Bot
Hasta este punto, lo que nos queda es pura imaginación para diseñar nuestro Bot en Telegram.
Iniciamos rápidamente la configuración creando un archivo index.php y colocamos lo siguiente:
<?php
use Zanzara\Zanzara;
use Zanzara\Context;
require __DIR__ . '/vendor/autoload.php';
$bot = new Zanzara("BOT-TOKEN");
$bot->onCommand('start', function (Context $ctx) {
$ctx->sendMessage('Hello');
});
$bot->run();
Ahora, creamos un Token a través de Telegram (puedes revisar esta guía detallada). En resumen, abrimos un chat con @botfather y creamos un Bot (le damos un nombre) y al finalizar obtendremos un token. Ese token lo copiamos y pegamos arriba donde dice “”BOT-TOKEN””
A continuación, realizamos algunas configuraciones
Guardamos y cerramos el archivo y luego comprobamos la utilidad del Bot a través de Telegram. En mi ejemplo descrito anteriormente, mi Bot es llamado Growuz (@growuzbot).
En la siguiente imagen podemos ver un antes (configuración por defecto) y un después (configuración mostrada en la captura anterior) del funcionamiento de nuestro Bot.
Una vez que hayas terminado, puede continuar con el último paso: configurar las DNS y apuntar la dirección de nuestro dominio/subdominio a la dirección IP del servidor.
Agregamos un registro A en nuestro dominio (subdominio bot.growuz.com para mi ejemplo) apuntando a la IP del servidor (IP proporcionada por Clouding para mi ejemplo).
Palabras Finales
¡Felicidades! Has instalado con éxito Zanzara Framework con Nginx en Ubuntu. Para obtener más información sobre cómo utilizar este framework de aplicaciones web PHP, visita la Wiki en Github. ¡Empieza a utilizar Zanzara hoy mismo en Debian 10 VPS con VPS Hosting de Clouding!
https://github.com/badfarm/zanzara/wiki
Por último, una de las ventajas de utilizar Clouding, es la capacidad de cambiar libremente la configuración de su servidor, agregar o eliminar núcleos de CPU, RAM y almacenamiento SSD para satisfacer todas tus necesidades. Clouding.io ofrece configuraciones de servidor flexibles y además la facturación es por horas, para que sólo pagues por lo que utilizas. Este artículo utiliza Clouding como VPS Cloud de ejemplo, pero las configuraciones se aplican de igual manera en cualquier otro servidor.
¡Gracias por leer y feliz creación de Bots!