بوت تيليجرام بلغة C++: دليل خطوة بخطوة للجريئين

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

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

ابدأ الدورة

لماذا C++ لبوت تيليجرام؟ هذا ليس جنونًا

\n

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

\n

كتابة بوت تيليجرام بلغة C++ هي مهمة ممكنة تمامًا. نعم، هذا ليس المسار الأكثر شيوعًا، لكن له مزايا جدية: سرعة الأداء، استهلاك منخفض للذاكرة، وتحكم كامل في كل بايت. في هذا الدليل، سننتقل من تثبيت المكتبات إلى بوت جاهز يرد على الأوامر ويحلل البيانات. هيا بنا!

\n\n

ماذا نحتاج؟

\n

للعمل نحتاج إلى:

\n
    \n
  • مترجم C++17/20 — g++ (لينكس/macOS) أو MSVC (ويندوز).
  • \n
  • CMake — نظام بناء (الإصدار 3.10+).
  • \n
  • مكتبة tgbot-cpp — أشهر غلاف C++ لواجهة برمجة تطبيقات بوتات تيليجرام.
  • \n
  • libcurl — لطلبات HTTP (مضمنة مع tgbot-cpp).
  • \n
  • nlohmann/json — للعمل مع JSON (مضمنة أيضًا في التبعيات).
  • \n
  • رمز البوت (Token) — احصل عليه من @BotFather في تيليجرام.
  • \n
\n

سنكتب كل الكود تحت لينكس (Ubuntu 22.04)، لكن يمكن تكييفه بسهولة مع ويندوز عبر vcpkg أو Conan.

\n\n

الخطوة 1: تثبيت المكتبات

\n

أولاً، نثبت التبعيات. في الطرفية ننفذ:

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

الآن نستنسخ ونبني 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

إذا تم كل شيء بنجاح، تكون المكتبة مثبتة في النظام. يمكن التحقق بالأمر ls /usr/local/include/tgbot/ — سترى ملفات الرأس.

\n\n

الخطوة 2: هيكل المشروع وملف CMakeLists.txt

\n

ننشئ مجلدًا للمشروع:

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

في CMakeLists.txt نكتب تكوين البناء:

\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

لاحظ: نقوم بتضمين OpenSSL و libcurl — فهما ضروريان للتشفير وطلبات HTTP.

\n\n

الخطوة 3: كتابة نواة البوت بلغة C++

\n

نفتح main.cpp ونكتب الهيكل الأدنى:

\n
#include <tgbot/tgbot.h>\n#include <iostream>\n\nint main() {\n    // استبدل برمز البوت الخاص بك\n    std::string token = "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz";\n\n    TgBot::Bot bot(token);\n\n    // معالج الأمر /start\n    bot.getEvents().onCommand("start", [&bot](TgBot::Message::Ptr message) {\n        bot.getApi().sendMessage(message->chat->id, "مرحبًا! أنا بوت بلغة C++. كيف يمكنني المساعدة؟");\n    });\n\n    // معالج أي رسالة نصية\n    bot.getEvents().onAnyMessage([&bot](TgBot::Message::Ptr message) {\n        if (message->text == "/start") return; // تجاهل التكرارات\n        bot.getApi().sendMessage(message->chat->id, "لقد كتبت: " + message->text);\n    });\n\n    try {\n        std::cout << "تم تشغيل البوت. في انتظار الرسائل..." << std::endl;\n        TgBot::TgLongPoll longPoll(bot);\n        while (true) {\n            longPoll.start();\n        }\n    } catch (TgBot::TgException& e) {\n        std::cerr << "خطأ: " << e.what() << std::endl;\n    }\n\n                

المدونات

توصيات الكتب