Bot Telegram en C++ : guide pas à pas pour les audacieux

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi C++ pour un bot Telegram ? Ce n'est pas de la folie

\n

Quand 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 » ?

\n

Cré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\n

De quoi avons-nous besoin ?

\n

Pour 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
\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

\n

Commençons par installer les dépendances. Dans le terminal, exécutez :

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

Maintenant, clonez et compilez 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 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.

\n\n

Étape 2 : Structure du projet et CMakeLists.txt

\n

Créons un dossier pour le projet :

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

Dans CMakeLists.txt, écrivons la configuration de build :

\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

Notez 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++

\n

Ouvrez 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                

Blogs

Book Recommendations