Warum C++ für einen Telegram-Bot? Das ist kein Wahnsinn
\nWenn es um die Erstellung von Telegram-Bots geht, kommen einem als Erstes Python, Node.js oder Go in den Sinn. Sie sind einfach, haben Tausende fertiger Bibliotheken und riesige Communities. Aber was, wenn Ihr Projekt maximale Leistung erfordert? Oder Sie schreiben einen hochbelasteten Parser? Oder vielleicht sind Sie einfach ein C++-Fan und wollen alles „auf die harte Tour“ machen?
\nEinen Telegram-Bot in C++ zu schreiben, ist durchaus machbar. Ja, es ist nicht der beliebteste Weg, aber er hat ernsthafte Vorteile: hohe Geschwindigkeit, geringer Speicherverbrauch und vollständige Kontrolle über jedes Byte. In dieser Anleitung gehen wir den Weg von der Installation der Bibliotheken bis zum fertigen Bot, der auf Befehle antwortet und Daten parst. Los geht's!
\n\nWas brauchen wir?
\nFür die Arbeit benötigen wir:
\n- \n
- C++17/20-Compiler — g++ (Linux/macOS) oder MSVC (Windows). \n
- CMake — Build-System (Version 3.10+). \n
- Bibliothek tgbot-cpp — die beliebteste C++-Wrapper für das Telegram Bot API. \n
- libcurl — für HTTP-Anfragen (im Lieferumfang von tgbot-cpp enthalten). \n
- nlohmann/json — für die Arbeit mit JSON (ebenfalls in den Abhängigkeiten enthalten). \n
- Bot-Token — erhalten Sie ihn von @BotFather in Telegram. \n
Den gesamten Code schreiben wir unter Linux (Ubuntu 22.04), aber er lässt sich leicht über vcpkg oder Conan an Windows anpassen.
\n\nSchritt 1: Installation der Bibliotheken
\nZuerst installieren wir die Abhängigkeiten. Führen Sie im Terminal aus:
\nsudo apt update\nsudo apt install git cmake g++ libcurl4-openssl-dev libssl-dev nlohmann-json3-dev\nJetzt klonen und bauen wir tgbot-cpp:
\ngit clone https://github.com/reo7sp/tgbot-cpp.git\ncd tgbot-cpp\nmkdir build && cd build\ncmake ..\nmake -j4\nsudo make install\nWenn alles erfolgreich war, ist die Bibliothek im System installiert. Überprüfen können Sie dies mit dem Befehl ls /usr/local/include/tgbot/ — Sie werden die Header-Dateien sehen.
Schritt 2: Projektstruktur und CMakeLists.txt
\nErstellen wir einen Ordner für das Projekt:
\nmkdir my_telegram_bot && cd my_telegram_bot\ntouch main.cpp CMakeLists.txt\nIn CMakeLists.txt schreiben wir die Build-Konfiguration:
\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)\nBeachten Sie: Wir binden OpenSSL und libcurl ein — sie werden für Verschlüsselung und HTTP-Anfragen benötigt.
\n\nSchritt 3: Den Bot-Kern in C++ schreiben
\nÖffnen Sie main.cpp und schreiben Sie die minimale Struktur:
\n#include <tgbot/tgbot.h>\n#include <iostream>\n\nint main() {\n // Ersetzen Sie durch Ihren eigenen Token\n std::string token = "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz";\n\n TgBot::Bot bot(token);\n\n // Handler für den Befehl /start\n bot.getEvents().onCommand("start", [&bot](TgBot::Message::Ptr message) {\n bot.getApi().sendMessage(message->chat->id, "Hallo! Ich bin ein Bot in C++. Wie kann ich helfen?");\n });\n\n // Handler für jede Textnachricht\n bot.getEvents().onAnyMessage([&bot](TgBot::Message::Ptr message) {\n if (message->text == "/start") return; // Duplikate ignorieren\n bot.getApi().sendMessage(message->chat->id, "Sie haben geschrieben: " + message->text);\n });\n\n try {\n std::cout << "Bot gestartet. Warte auf Nachrichten..." << std::endl;\n TgBot::TgLongPoll longPoll(bot);\n while (true) {\n longPoll.start();\n }\n } catch (TgBot::TgException& e) {\n std::cerr << "Fehler: " << e.what() << std::endl;\n }\n\n