¿Por qué C++ para un bot de Telegram? No es una locura
\nCuando se trata de crear bots de Telegram, lo primero que viene a la mente son Python, Node.js o Go. Son simples, tienen miles de librerías listas y grandes comunidades. Pero, ¿qué pasa si tu proyecto requiere el máximo rendimiento? ¿O estás escribiendo un parser de alta carga? ¿O tal vez eres simplemente un fanático de C++ y quieres hacerlo "a lo hardcore"?
\nEscribir un bot de Telegram en C++ es una tarea completamente realista. Sí, no es el camino más popular, pero tiene serias ventajas: velocidad de ejecución, bajo consumo de memoria y control total sobre cada byte. En esta guía, recorreremos el camino desde la instalación de librerías hasta un bot listo que responde a comandos y parsea datos. ¡Vamos allá!
\n\n¿Qué necesitaremos?
\nPara trabajar necesitaremos:
\n- \n
- Compilador C++17/20 — g++ (Linux/macOS) o MSVC (Windows). \n
- CMake — sistema de compilación (versión 3.10+). \n
- Librería tgbot-cpp — la envoltura de C++ más popular para la Telegram Bot API. \n
- libcurl — para peticiones HTTP (incluida en tgbot-cpp). \n
- nlohmann/json — para trabajar con JSON (también incluida en las dependencias).
- Token del bot — obténlo de @BotFather en Telegram.
Todo el código lo escribiremos bajo Linux (Ubuntu 22.04), pero se adapta fácilmente a Windows mediante vcpkg o Conan.
\n\nPaso 1: Instalación de librerías
\nPrimero instalemos las dependencias. En la terminal ejecutamos:
\nsudo apt update\nsudo apt install git cmake g++ libcurl4-openssl-dev libssl-dev nlohmann-json3-dev\nAhora clonamos y compilamos tgbot-cpp:
\ngit clone https://github.com/reo7sp/tgbot-cpp.git\ncd tgbot-cpp\nmkdir build && cd build\ncmake ..\nmake -j4\nsudo make install\nSi todo salió bien, la librería está instalada en el sistema. Puedes verificarlo con el comando ls /usr/local/include/tgbot/ — verás los archivos de cabecera.
Paso 2: Estructura del proyecto y CMakeLists.txt
\nCreemos una carpeta para el proyecto:
\nmkdir my_telegram_bot && cd my_telegram_bot\ntouch main.cpp CMakeLists.txt\nEn CMakeLists.txt escribimos la configuración de compilación:
\ncmake_minimum_required(VERSION 3.10)\nproject(MyTelegramBot)\n\nset(CMAKE_CXX_STANDARD 17)\n\nfind_package(TgBot REQUIRED)\nfind_package(OpenSSL REQUIRED)\nfind_package(CURL REQUIRED)\n\nadd_executable(my_bot main.cpp)\ntarget_link_libraries(my_bot TgBot::TgBot OpenSSL::SSL OpenSSL::Crypto CURL::libcurl)\nNota: conectamos OpenSSL y libcurl — son necesarios para el cifrado y las peticiones HTTP.
\n\nPaso 3: Escribimos el núcleo del bot en C++
\nAbrimos main.cpp y escribimos la estructura mínima:
\n#include <tgbot/tgbot.h>\n#include <iostream>\n\nint main() {\n // Reemplaza con tu token\n std::string token = "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz";\n\n TgBot::Bot bot(token);\n\n // Manejador del comando /start\n bot.getEvents().onCommand("start", [&bot](TgBot::Message::Ptr message) {\n bot.getApi().sendMessage(message->chat->id, "¡Hola! Soy un bot en C++. ¿En qué puedo ayudarte?");\n });\n\n // Manejador de cualquier mensaje de texto\n bot.getEvents().onAnyMessage([&bot](TgBot::Message::Ptr message) {\n if (message->text == "/start") return; // Ignoramos duplicados\n bot.getApi().sendMessage(message->chat->id, "Has escrito: " + message->text);\n });\n\n try {\n std::cout << "Bot iniciado. Esperando mensajes..." << std::endl;\n TgBot::TgLongPoll longPoll(bot);\n while (true) {\n longPoll.start();\n }\n } catch (TgBot::TgException& e) {\n std::cerr << "Error: " << e.what() << std::endl;\n }\n\n