Telegram-Bot in C++: Schritt-für-Schritt-Anleitung für Mutige

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum C++ für einen Telegram-Bot? Das ist kein Wahnsinn

\n

Wenn 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?

\n

Einen 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\n

Was brauchen wir?

\n

Fü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
\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\n

Schritt 1: Installation der Bibliotheken

\n

Zuerst installieren wir die Abhängigkeiten. Führen Sie im Terminal aus:

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

Jetzt klonen und bauen wir 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

Wenn 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.

\n\n

Schritt 2: Projektstruktur und CMakeLists.txt

\n

Erstellen wir einen Ordner für das Projekt:

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

In CMakeLists.txt schreiben wir die Build-Konfiguration:

\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

Beachten Sie: Wir binden OpenSSL und libcurl ein — sie werden für Verschlüsselung und HTTP-Anfragen benötigt.

\n\n

Schritt 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                

Blogs

Buchempfehlungen