Por que C++ para um bot do Telegram? Não é loucura
\nQuando se fala em criar bots do Telegram, a primeira coisa que vem à mente são Python, Node.js ou Go. Eles são simples, têm milhares de bibliotecas prontas e comunidades enormes. Mas e se o seu projeto exigir desempenho máximo? Ou se você estiver escrevendo um parser de alta carga? Ou talvez você seja apenas fã de C++ e queira fazer tudo "no estilo hardcore"?
\nEscrever um bot do Telegram em C++ é uma tarefa perfeitamente viável. Sim, não é o caminho mais popular, mas tem sérias vantagens: velocidade de execução, baixo consumo de memória e controle total sobre cada byte. Neste guia, percorreremos o caminho desde a instalação das bibliotecas até um bot pronto que responde a comandos e faz parsing de dados. Vamos lá!
\n\nO que vamos precisar?
\nPara o trabalho, precisaremos de:
\n- \n
- Compilador C++17/20 — g++ (Linux/macOS) ou MSVC (Windows). \n
- CMake — sistema de build (versão 3.10+). \n
- Biblioteca tgbot-cpp — o wrapper C++ mais popular para a Telegram Bot API. \n
- libcurl — para requisições HTTP (incluída no tgbot-cpp). \n
- nlohmann/json — para trabalhar com JSON (também incluída nas dependências). \n
- Token do bot — obtenha com o @BotFather no Telegram. \n
Todo o código será escrito no Linux (Ubuntu 22.04), mas pode ser facilmente adaptado para Windows via vcpkg ou Conan.
\n\nPasso 1: Instalação das bibliotecas
\nPrimeiro, instalamos as dependências. No terminal, execute:
\nsudo apt update\nsudo apt install git cmake g++ libcurl4-openssl-dev libssl-dev nlohmann-json3-dev\nAgora, clone e compile o tgbot-cpp:
\ngit clone https://github.com/reo7sp/tgbot-cpp.git\ncd tgbot-cpp\nmkdir build && cd build\ncmake ..\nmake -j4\nsudo make install\nSe tudo ocorrer bem, a biblioteca estará instalada no sistema. Você pode verificar com o comando ls /usr/local/include/tgbot/ — você verá os arquivos de cabeçalho.
Passo 2: Estrutura do projeto e CMakeLists.txt
\nCrie uma pasta para o projeto:
\nmkdir my_telegram_bot && cd my_telegram_bot\ntouch main.cpp CMakeLists.txt\nNo CMakeLists.txt, escreva a configuração de build:
\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)\nObserve: estamos conectando OpenSSL e libcurl — eles são necessários para criptografia e requisições HTTP.
\n\nPasso 3: Escrevendo o núcleo do bot em C++
\nAbra o main.cpp e escreva a estrutura mínima:
\n#include <tgbot/tgbot.h>\n#include <iostream>\n\nint main() {\n // Substitua pelo seu token\n std::string token = "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz";\n\n TgBot::Bot bot(token);\n\n // Manipulador do comando /start\n bot.getEvents().onCommand("start", [&bot](TgBot::Message::Ptr message) {\n bot.getApi().sendMessage(message->chat->id, "Olá! Sou um bot em C++. Como posso ajudar?");\n });\n\n // Manipulador de qualquer mensagem de texto\n bot.getEvents().onAnyMessage([&bot](TgBot::Message::Ptr message) {\n if (message->text == "/start") return; // Ignora duplicatas\n bot.getApi().sendMessage(message->chat->id, "Você escreveu: " + message->text);\n });\n\n try {\n std::cout << "Bot iniciado. Aguardando mensagens..." << std::endl;\n TgBot::TgLongPoll longPoll(bot);\n while (true) {\n longPoll.start();\n }\n } catch (TgBot::TgException& e) {\n std::cerr << "Erro: " << e.what() << std::endl;\n }\n\n