Bot de Telegram en C++: guía paso a paso para valientes

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é C++ para un bot de Telegram? No es una locura

\n

Cuando 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"?

\n

Escribir 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?

\n

Para 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.
\n

Todo el código lo escribiremos bajo Linux (Ubuntu 22.04), pero se adapta fácilmente a Windows mediante vcpkg o Conan.

\n\n

Paso 1: Instalación de librerías

\n

Primero instalemos las dependencias. En la terminal ejecutamos:

\n
sudo apt update\nsudo apt install git cmake g++ libcurl4-openssl-dev libssl-dev nlohmann-json3-dev
\n

Ahora clonamos y compilamos tgbot-cpp:

\n
git clone https://github.com/reo7sp/tgbot-cpp.git\ncd tgbot-cpp\nmkdir build && cd build\ncmake ..\nmake -j4\nsudo make install
\n

Si 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.

\n\n

Paso 2: Estructura del proyecto y CMakeLists.txt

\n

Creemos una carpeta para el proyecto:

\n
mkdir my_telegram_bot && cd my_telegram_bot\ntouch main.cpp CMakeLists.txt
\n

En CMakeLists.txt escribimos la configuración de compilación:

\n
cmake_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)
\n

Nota: conectamos OpenSSL y libcurl — son necesarios para el cifrado y las peticiones HTTP.

\n\n

Paso 3: Escribimos el núcleo del bot en C++

\n

Abrimos 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                

Blogs

Book Recommendations