Introdução: por que C++ para chatbots não é loucura
\n\nQuando se fala em criar chatbots, geralmente vêm à mente Python, JavaScript ou Node.js. Mas e se eu disser que C++ pode ser uma ferramenta igualmente eficaz para essa tarefa? Sim, aquele mesmo C++ associado a drivers, jogos e sistemas de alta carga.
\n\nNa verdade, chatbots em C++ são uma excelente solução quando:
\n- \n
- Você precisa de máxima performance (processamento de milhares de requisições por segundo); \n
- Você trabalha em ambiente embarcado ou em microcontroladores; \n
- Deseja minimizar o consumo de memória; \n
- Simplesmente ama C++ e quer experimentar algo novo. \n
Neste guia prático, criaremos um chatbot completo em C++ do zero. Usaremos bibliotecas reais, escreveremos código funcional e analisaremos a arquitetura que permitirá que seu bot se comunique através da API do Telegram. Ao final do artigo, você terá não apenas teoria, mas um projeto pronto para executar e expandir.
\n\nO que precisaremos: ferramentas
\n\nAntes de escrever código, vamos entender as ferramentas. Para criar um chatbot em C++, precisaremos de:
\n\nBibliotecas
\n- \n
- libcurl — para requisições HTTP (envio e recebimento de dados da API do Telegram); \n
- nlohmann/json — biblioteca leve para trabalhar com JSON (parsing de respostas do servidor); \n
- Boost.Asio (opcional) — para trabalho assíncrono com rede; \n
- Suporte a threads (std::thread) — para processar múltiplas requisições simultaneamente. \n
Instalação (Linux / macOS)
\nsudo apt-get install libcurl4-openssl-dev # Para Linux\nbrew install curl # Para macOS\nA biblioteca nlohmann/json pode ser incluída como header-only (basta baixar json.hpp e colocar no projeto).
Estrutura do projeto
\ntelegram_bot/\n├── main.cpp\n├── bot.hpp\n├── bot.cpp\n├── json.hpp\n└── Makefile (ou CMakeLists.txt)\n\nPasso 1: Esqueleto do bot — trabalhando com a API do Telegram
\n\nA API do Telegram Bot é uma API RESTful. Tudo o que precisamos é enviar requisições HTTP para https://api.telegram.org/bot<TOKEN>/METHOD. O método mais importante é getUpdates (obter novas mensagens) e sendMessage (enviar resposta).
Criaremos a classe TelegramBot, que será responsável por toda a comunicação.
bot.hpp — arquivo de cabeçalho
\n#ifndef BOT_HPP\n#define BOT_HPP\n\n#include <string>\n#include <vector>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nclass TelegramBot {\npublic:\n explicit TelegramBot(const std::string& token);\n \n // Obter lista de novas mensagens (long polling)\n std::vector<json> getUpdates(long offset = 0);\n \n // Enviar mensagem de texto\n bool sendMessage(long chat_id, const std::string& text);\n \n // Processar uma mensagem recebida\n std::string handleMessage(const json& message);\n\nprivate:\n std::string api_url_;\n std::string httpGet(const std::string& url);\n std::string httpPost(const std::string& url, const std::string& post_data);\n};\n\n#endif // BOT_HPP\n\nbot.cpp — implementação
\n#include "bot.hpp"\n#include <curl/curl.h>\n#include <sstream>\n\n// Callback para gravar resposta do curl em string\nstatic size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) {\n ((std::string*)userp)->append((char*)contents, size * nmemb);\n return size * nmemb;\n}\n\nTelegramBot::TelegramBot(const std::string& token) \n : api_url_("https://api.telegram.org/bot" + token + "/") {}\n\nstd::string TelegramBot::httpGet(const std::