Pourquoi C++ pour un bot Telegram ? Ce n'est pas de la folie
\nQuand il s'agit de créer des bots Telegram, on pense d'abord à Python, Node.js ou Go. Ils sont simples, disposent de milliers de bibliothèques prêtes à l'emploi et de grandes communautés. Mais que faire si votre projet nécessite des performances maximales ? Ou si vous écrivez un parseur à forte charge ? Ou peut-être êtes-vous simplement un fan de C++ et voulez-vous faire les choses « à la dure » ?
\nCréer un bot Telegram en C++ est tout à fait réalisable. Oui, ce n'est pas la voie la plus populaire, mais elle présente des avantages sérieux : rapidité d'exécution, faible consommation de mémoire et contrôle total sur chaque octet. Dans ce guide, nous passerons de l'installation des bibliothèques à un bot fonctionnel qui répond aux commandes et parse les données. C'est parti !
\n\nDe quoi avons-nous besoin ?
\nPour travailler, nous aurons besoin de :
\n- \n
- Compilateur C++17/20 — g++ (Linux/macOS) ou MSVC (Windows). \n
- CMake — système de build (version 3.10+). \n
- Bibliothèque tgbot-cpp — l'enveloppe C++ la plus populaire pour l'API Telegram Bot. \n
- libcurl — pour les requêtes HTTP (inclus avec tgbot-cpp). \n
- nlohmann/json — pour travailler avec JSON (également inclus dans les dépendances). \n
- Token du bot — obtenez-le auprès de @BotFather dans Telegram. \n
Nous écrirons tout le code sous Linux (Ubuntu 22.04), mais il s'adapte facilement à Windows via vcpkg ou Conan.
\n\nÉtape 1 : Installation des bibliothèques
\nCommençons par installer les dépendances. Dans le terminal, exécutez :
\nsudo apt update\nsudo apt install git cmake g++ libcurl4-openssl-dev libssl-dev nlohmann-json3-dev\nMaintenant, clonez et compilez 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 tout s'est bien passé, la bibliothèque est installée dans le système. Vous pouvez vérifier avec la commande ls /usr/local/include/tgbot/ — vous verrez les fichiers d'en-tête.
Étape 2 : Structure du projet et CMakeLists.txt
\nCréons un dossier pour le projet :
\nmkdir my_telegram_bot && cd my_telegram_bot\ntouch main.cpp CMakeLists.txt\nDans CMakeLists.txt, écrivons la configuration 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)\nNotez que nous incluons OpenSSL et libcurl — ils sont nécessaires pour le chiffrement et les requêtes HTTP.
\n\nÉtape 3 : Écrire le cœur du bot en C++
\nOuvrez main.cpp et écrivez la structure minimale :
\n#include <tgbot/tgbot.h>\n#include <iostream>\n\nint main() {\n // Remplacez par votre propre token\n std::string token = "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz";\n\n TgBot::Bot bot(token);\n\n // Gestionnaire de la commande /start\n bot.getEvents().onCommand("start", [&bot](TgBot::Message::Ptr message) {\n bot.getApi().sendMessage(message->chat->id, "Bonjour ! Je suis un bot en C++. Comment puis-je vous aider ?");\n });\n\n // Gestionnaire de tout message texte\n bot.getEvents().onAnyMessage([&bot](TgBot::Message::Ptr message) {\n if (message->text == "/start") return; // Ignorer les doublons\n bot.getApi().sendMessage(message->chat->id, "Vous avez écrit : " + message->text);\n });\n\n try {\n std::cout << "Bot démarré. En attente de messages..." << std::endl;\n TgBot::TgLongPoll longPoll(bot);\n while (true) {\n longPoll.start();\n }\n } catch (TgBot::TgException& e) {\n std::cerr << "Erreur : " << e.what() << std::endl;\n }\n\n