Chat-Bots in C++: von der Theorie zum fertigen Code an einem Abend

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

Einleitung: Warum C++ für Chat-Bots kein Wahnsinn ist

\n\n

Wenn es um die Erstellung von Chat-Bots geht, denkt man normalerweise an Python, JavaScript oder Node.js. Aber was, wenn ich Ihnen sage, dass C++ ein ebenso effektives Werkzeug für diese Aufgabe sein kann? Ja, genau das C++, das mit Treibern, Spielen und hochbelasteten Systemen assoziiert wird.

\n\n

Tatsächlich sind Chat-Bots in C++ eine hervorragende Lösung, wenn:

\n
    \n
  • Sie maximale Leistung benötigen (Verarbeitung von Tausenden von Anfragen pro Sekunde);
  • \n
  • Sie in einer Embedded-Umgebung oder auf Mikrocontrollern arbeiten;
  • \n
  • Sie den Speicherverbrauch minimieren möchten;
  • \n
  • Sie C++ einfach lieben und etwas Neues ausprobieren möchten.
  • \n
\n\n

In dieser praktischen Anleitung werden wir einen vollwertigen Chat-Bot in C++ von Grund auf erstellen. Wir werden echte Bibliotheken verwenden, funktionierenden Code schreiben und die Architektur analysieren, die es Ihrem Bot ermöglicht, über die Telegram API zu kommunizieren. Am Ende des Artikels haben Sie nicht nur Theorie, sondern ein fertiges Projekt, das Sie starten und erweitern können.

\n\n

Was wir brauchen: Werkzeuge

\n\n

Bevor wir Code schreiben, lassen Sie uns die Werkzeuge klären. Für die Erstellung eines Chat-Bots in C++ benötigen wir:

\n\n

Bibliotheken

\n
    \n
  • libcurl — für HTTP-Anfragen (Senden und Empfangen von Daten von der Telegram API);
  • \n
  • nlohmann/json — eine leichtgewichtige Bibliothek für die Arbeit mit JSON (Parsen von Serverantworten);
  • \n
  • Boost.Asio (optional) — für asynchrone Netzwerkarbeit;
  • \n
  • Threading Support (std::thread) — zur gleichzeitigen Verarbeitung mehrerer Anfragen.
  • \n
\n\n

Installation (Linux / macOS)

\n
sudo apt-get install libcurl4-openssl-dev  # Für Linux\nbrew install curl                          # Für macOS
\n

Die Bibliothek nlohmann/json kann als header-only eingebunden werden (laden Sie einfach json.hpp herunter und legen Sie sie in Ihr Projekt).

\n\n

Projektstruktur

\n
telegram_bot/\n├── main.cpp\n├── bot.hpp\n├── bot.cpp\n├── json.hpp\n└── Makefile (oder CMakeLists.txt)
\n\n

Schritt 1: Das Bot-Grundgerüst — Arbeit mit der Telegram API

\n\n

Die Telegram Bot API ist eine RESTful API. Alles, was wir tun müssen, ist HTTP-Anfragen an https://api.telegram.org/bot<TOKEN>/METHOD zu senden. Die wichtigsten Methoden sind getUpdates (neue Nachrichten abrufen) und sendMessage (Antwort senden).

\n\n

Erstellen wir eine Klasse TelegramBot, die für die gesamte Kommunikation zuständig ist.

\n\n

bot.hpp — Header-Datei

\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    // Neue Nachrichten abrufen (Long Polling)\n    std::vector<json> getUpdates(long offset = 0);\n    \n    // Eine Textnachricht senden\n    bool sendMessage(long chat_id, const std::string& text);\n    \n    // Eine eingehende Nachricht verarbeiten\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\n

bot.cpp — Implementierung

\n
#include "bot.hpp"\n#include <curl/curl.h>\n#include <sstream>\n\n// Callback zum Schreiben der curl-Antwort in einen 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::                

Blogs

Buchempfehlungen