Header Ads Widget

Ticker

6/recent/ticker-posts

Cómo construir un bot de Telegram usando PHP en menos de 30 minutos

 



Telegram es un popular servicio de mensajería instantánea que se enorgullece de su seguridad. Tiene todas las características que esperaría de una plataforma de chat moderna, incluidos los chatbots : agentes basados ​​en software que puede programar para leer y responder a los mensajes de otros usuarios.

En esta breve guía, te explicaré cómo puedes escribir tu propio bot de Telegram en menos de 30 minutos usando PHP.

Paso uno: configura el perfil de Telegram de tu bot

El primer paso para crear un bot de Telegram es configurar el perfil que el bot finalmente respaldará. Así es también como obtienes un token para la API de Telegram.

Para configurar un nuevo perfil de bot, inicie sesión en su cuenta de Telegram e inicie una conversación con BotFather (@BotFather), una cuenta oficial que le permite crear y administrar bots. En esa conversación, ingrese el /newbotcomando.

BotFather le pedirá que elija un nombre para mostrar y un nombre de usuario para su bot. El nombre de usuario debe terminar en "bot" y debe ser único. En nuestro ejemplo, nos decidimos por el nombre para mostrar WeatherBot y el nombre de usuario DifferentWeatherBot .

Una vez que haya obtenido un nombre de usuario válido, BotFather registrará automáticamente su bot y responderá con un token para la API de Telegram, exclusivo de ese bot. Asegúrese de no compartir su token con nadie.

Paso dos: cree un webhook para su bot

El siguiente paso para crear un bot de Telegram es configurar el webhook que se comunicará con su bot. Los webhooks son la forma en que las API le informan que ha sucedido algo, lo que le impide tener que consultar la API cada pocos minutos (o segundos) para saber si, por ejemplo, se ha enviado un nuevo mensaje.

Telegram usa solo un tipo de webhook, que le envía un updateobjeto cada vez que sucede algo .

Configurar el webhook es increíblemente fácil. Solo hay dos cosas que necesita saber: su token de API (debe tener esto desde el paso uno) y la URL donde alojará su bot. La URL será algo así como Asegúrese de incluir el al principio de la URL; de lo contrario, Telegram no enviará el webhook.https://yourdomain.com/yourbot.phphttps

Ahora, en un navegador web normal, navegue hasta ¡Voila, tu webhook ya está en funcionamiento!https://api.telegram.org/bot<yourtoken>/setwebhook?url=https://yourdomain.com/yourbot.php

Paso tres: escriba la lógica de su bot

¡Es hora de la parte divertida! En este punto, tiene todo lo que necesita para escribir la lógica de su bot de Telegram. Así es como seguiré ...

Hago muy poca programación para tener un IDE en mi computadora, así que abriré el Bloc de notas y comenzaré a escribir mi código allí. Dado que esto es PHP, asegúrese de emparejar su lógica con <?php ?>.

Lo primero que debemos hacer es inicializar una variable que nos facilitará la llamada a la API de Telegram. Eso es tan simple como .$path = "https://api.telegram.org/bot<yourtoken>

Dado que recibiremos actualizaciones por medio del webhook, creemos y completemos una matriz con esos datos de actualización: $update = json_decode(file_get_contents("php://input"), TRUE)

Ahora, por conveniencia más adelante, extraigaremos dos datos cruciales de esa actualización: el ID de chat y el mensaje (si la actualización no es causada por un mensaje nuevo, este campo puede estar vacío y codificaremos para eso después):

$chatId = $update["message"]["chat"]["id"];
$message = $update["message"]["text"];

En caso de que aún no hayas adivinado lo que se supone que debe hacer este bot, quiero que me diga el clima actual para mi ubicación de elección. Para eso, crearé un /weather [location]comando.

Para hacer eso, creemos una ifdeclaración para ver si el mensaje comienza con /weatherPodemos lograr eso con la strpos()función, que nos dice la posición de una subcadena dentro de una cadena:

if (strpos($message, "/weather") === 0) {
}

Anidado dentro de esa ifdeclaración, escribamos un código para extraer la ubicación cortando los primeros nueve caracteres del mensaje (que es la cantidad de caracteres que usa el /weathercomando, así como el espacio que lo seguirá):

if (strpos($message, "/weather") === 0) {
$location = substr($message, 9); }

Si este bot fuera a usarse en producción, tendríamos que agregar algo de limpieza de entrada para asegurarnos de que la ubicación tenga el formato correcto. Pero no lo es, así que no nos preocuparemos por eso.

Ahora obtendremos los datos meteorológicos para esa ubicación de OpenWeatherMap:

$weather = json_decode(file_get_contents("http://api.openweathermap.org/data/2.5/weather?q=".$location."&appid=mytoken"), TRUE)["weather"]["main"];

Aquí deberíamos implementar algún tipo de manejo de errores, pero no me voy a molestar. En cambio, esperemos lo mejor y disparemos la respuesta de nuestro bot usando la API de Telegram:

file_get_contents($path."/sendmessage?chat_id=".$chatId."&text=Here's the weather in ".$location.": ". $.weather);

Con todo, así es como se ve el código:

<?php
$path = "https://api.telegram.org/bot<yourtoken>; $update = json_decode(file_get_contents("php://input"), TRUE); $chatId = $update["message"]["chat"]["id"]; $message = $update["message"]["text"]; if (strpos($message, "/weather") === 0) { $location = substr($message, 9); $weather = json_decode(file_get_contents("http://api.openweathermap.org/data/2.5/weather?q=".$location."&appid=mytoken"), TRUE)["weather"][0]["main"]; file_get_contents($path."/sendmessage?chat_id=".$chatId."&text=Here's the weather in ".$location.": ". $weather); } ?>

Paso cuatro: cargue su bot en un servidor web seguro

Con la lógica hecha y desempolvada, guarde su código como un archivo PHP. Luego, cargue el archivo a la URL que utilizó anteriormente para configurar el webhook.

Tengo mi propio alojamiento web que uso para un sitio web personal, así que subiré el archivo al directorio raíz del sitio web usando cPanel.

Paso cinco: pruebe, modifique y presuma de su nuevo bot

¡Ahora es el momento de probar su nuevo bot de Telegram! Después de corregir algunos errores en mi código (algunas marcas de habla caídas y un análisis incorrecto de los datos meteorológicos de OpenWeatherMap), mi bot meteorológico estaba en funcionamiento. Comencé una conversación privada con mi bot (el BotFather te dará su nombre) y probé mi comando de clima:

Pensamientos finales

Es crudo, ¡pero funciona! Seguramente puede programar un bot de Telegram en menos de media hora. Sin embargo, si planea usar su bot en producción, definitivamente debería dedicar algún tiempo a pensar en los casos extremos: entradas inesperadas del usuario, falla de API externa, etc., etc.

Publicar un comentario

0 Comentarios