BOT DE TELEGRAM

Da tu primer paso en el mundo de la programación con nuestras placas KITMAKER 1.0 y KITMAKER 2.0 
En esta actividad, te enseñará a crear un bot de Telegram utilizando BotFather. Un bot de Telegram puede automatizar tareas, responder a mensajes y mucho más.
El código proporcionado es totalmente funcional para ambas placas, ofreciéndote una experiencia sencilla y accesible para comenzar a crear tus propias ideas.


¡Empecemos!

​       ​Ide Arduino

Primero, descarga el archivo explicativo que contiene la guía paso a paso para crear tu bot de Telegram. 

// Proyecto: Bot de Telegram con ESP32
// Placa: Neofan y KitMaker de Faniot
//
// Descripción:
// Este ejercicio demuestra cómo conectar un ESP32 a una red WiFi y utilizarlo para interactuar con un bot de Telegram.
// El bot responde al comando "/hola" enviando un mensaje de respuesta.
//
// Instrucciones:
// 1. Reemplaza las credenciales de la red WiFi y el token del bot de Telegram con tus propios valores en las líneas 9-11.
// 2. Puedes modificar el comando que el bot reconoce y el mensaje de respuesta editando las líneas 43 y 47 respectivamente.
//    - Línea 43: Comando que el bot reconocerá. Actualmente es "/hola".
//    - Línea 47: Mensaje que el bot enviará en respuesta al comando. Actualmente es "¡Hola! Soy un bot de Telegram con ESP32.".
//
// Ejemplo de Ediciones:
// - Para cambiar el comando a "/adios", modifica la línea 43 a:
//     if (text == "/adios") {
// - Para cambiar el mensaje de respuesta a "¡Adiós! Que tengas un buen día.", modifica la línea 47 a:
//     bot.sendMessage(chat_id, "¡Adiós! Que tengas un buen día.", "");

// Incluimos las bibliotecas necesarias
#include <WiFi.h>              // Biblioteca para la conexión WiFi
#include <WiFiClientSecure.h>  // Biblioteca para la comunicación segura a través de WiFi
#include <UniversalTelegramBot.h> // Biblioteca para interactuar con la API de Telegram Bot

// Definimos las credenciales de nuestra red WiFi
#define WIFI_SSID "TU_SSID"          // Reemplaza "TU_SSID" con el nombre de tu red WiFi
#define WIFI_PASSWORD "TU_CONTRASEÑA" // Reemplaza "TU_CONTRASEÑA" con la contraseña de tu red WiFi

// Definimos el token de nuestro bot de Telegram
#define BOT_TOKEN "TU_TOKEN_DE_BOT"   // Reemplaza "TU_TOKEN_DE_BOT" con el token que obtuviste al crear tu bot de Telegram

// Creamos los objetos necesarios
WiFiClientSecure secured_client; // Objeto para la comunicación segura a través de WiFi
UniversalTelegramBot bot(BOT_TOKEN, secured_client); // Objeto para interactuar con la API de Telegram Bot

// Función que se encarga de manejar los nuevos mensajes recibidos por el bot
void handleNewMessages(int numNewMessages) {
  for (int i = 0; i < numNewMessages; i++) {
    // Obtenemos el texto del mensaje recibido
    String text = bot.messages[i].text;

    // Verificamos si el texto del mensaje de comando es "/hola"
    if (text == "/hola") {
      // Obtenemos el ID del chat desde donde se envió el mensaje
      String chat_id = bot.messages[i].chat_id;
      // Enviamos un mensaje de respuesta utilizando el ID del chat
      bot.sendMessage(chat_id, "¡Hola! Soy un bot de Telegram con ESP32.", "");
    }
  }
}

// Función que se ejecuta una sola vez al inicio
void setup() {
  // Iniciamos la comunicación serial a 115200 baudios
  Serial.begin(115200);
  Serial.println();

  // Imprimimos un mensaje indicando que nos estamos conectando a la red WiFi
  Serial.print("Connecting to WiFi SSID: ");
  Serial.println(WIFI_SSID);

  // Iniciamos la conexión WiFi con las credenciales definidas
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

  // Esperamos hasta que la conexión WiFi se establezca
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print("."); // Imprimimos un punto cada 500 ms para indicar que estamos esperando
    delay(500);
  }

  // Una vez conectados, imprimimos un mensaje de confirmación y la dirección IP asignada
  Serial.println("\nWiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  // Configuramos el cliente seguro para ignorar la validación del certificado SSL (solo para desarrollo)
  secured_client.setInsecure();
}

// Función que se ejecuta de manera continua
void loop() {
  // Verificamos si hay nuevos mensajes llamando a bot.getUpdates(bot.last_message_received + 1)
  int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

  // Si hay nuevos mensajes, llamamos a la función handleNewMessages para procesarlos
  if (numNewMessages) {
    handleNewMessages(numNewMessages);
  }
}