روبوتات المحادثة بلغة C++: من النظرية إلى الكود الجاهز في أمسية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا استخدام C++ لروبوتات المحادثة ليس جنونًا

\n\n

عندما يتعلق الأمر بإنشاء روبوتات المحادثة، عادةً ما تتبادر إلى الذهن Python أو JavaScript أو Node.js. ولكن ماذا لو أخبرتك أن C++ يمكن أن تكون أداة فعالة بنفس القدر لهذه المهمة؟ نعم، نفس لغة C++ التي ترتبط ببرامج التشغيل والألعاب والأنظمة عالية التحميل.

\n\n

في الواقع، روبوتات المحادثة بلغة C++ هي حل ممتاز عندما:

\n
    \n
  • تحتاج إلى أقصى أداء (معالجة آلاف الطلبات في الثانية)؛
  • \n
  • تعمل في بيئة مدمجة (embedded) أو على متحكمات دقيقة؛
  • \n
  • ترغب في تقليل استهلاك الذاكرة؛
  • \n
  • ببساطة تحب C++ وتريد تجربة شيء جديد.
  • \n
\n\n

في هذا الدليل العملي، سنقوم بإنشاء روبوت محادثة كامل بلغة C++ من الصفر. سنستخدم مكتبات حقيقية، ونكتب كودًا عمليًا، وسنحلل البنية التي ستسمح لبوتك بالتواصل عبر Telegram API. في نهاية المقال، سيكون لديك ليس مجرد نظرية، بل مشروع جاهز يمكنك تشغيله وتوسيعه.

\n\n

ما سنحتاجه: الأدوات

\n\n

قبل كتابة الكود، دعنا نتعرف على الأدوات. لـ إنشاء روبوت محادثة بلغة C++ سنحتاج إلى:

\n\n

المكتبات

\n
    \n
  • libcurl — لطلبات HTTP (إرسال واستقبال البيانات من Telegram API)؛
  • \n
  • nlohmann/json — مكتبة خفيفة للعمل مع JSON (تحليل الردود من الخادم)؛
  • \n
  • Boost.Asio (اختياري) — للعمل غير المتزامن مع الشبكة؛
  • \n
  • دعم الخيوط (std::thread) — لمعالجة عدة طلبات في وقت واحد.
  • \n
\n\n

التثبيت (Linux / macOS)

\n
sudo apt-get install libcurl4-openssl-dev  # لأنظمة Linux\nbrew install curl                          # لأنظمة macOS
\n

مكتبة nlohmann/json يمكن تضمينها كـ header-only (فقط قم بتنزيل json.hpp وضعه في المشروع).

\n\n

هيكل المشروع

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

الخطوة 1: الهيكل الأساسي للبوت — العمل مع Telegram API

\n\n

Telegram Bot API هو واجهة RESTful. كل ما نحتاجه هو إرسال طلبات HTTP إلى https://api.telegram.org/bot<TOKEN>/METHOD. أهم الطرق هي getUpdates (الحصول على رسائل جديدة) و sendMessage (إرسال رد).

\n\n

لننشئ كلاس TelegramBot الذي سيتولى جميع عمليات الاتصال.

\n\n

bot.hpp — ملف الرأس

\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    // الحصول على قائمة الرسائل الجديدة (long polling)\n    std::vector<json> getUpdates(long offset = 0);\n    \n    // إرسال رسالة نصية\n    bool sendMessage(long chat_id, const std::string& text);\n    \n    // معالجة رسالة واردة واحدة\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 — التنفيذ

\n
#include "bot.hpp"\n#include <curl/curl.h>\n#include <sstream>\n\n// دالة رد الاتصال لكتابة رد curl في سلسلة نصية\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::                

المدونات

توصيات الكتب