البرمجة

إنشاء بوت تلغرام بلارافيل

بناء بوت Telegram باستخدام Laravel وBotMan: دليل شامل وعميق

في العصر الحديث الذي يشهد تطورًا سريعًا في تقنيات الذكاء الاصطناعي وتكامل البرمجيات، أصبحت تطبيقات الدردشة (Chatbots) من الأدوات الحيوية في قطاعات متعددة مثل التجارة الإلكترونية، التعليم، الخدمات الحكومية، والرعاية الصحية. من بين المنصات الأكثر شعبية لبناء البوتات، تبرز منصة Telegram لما تتمتع به من مرونة وقابلية عالية للتخصيص. أما على مستوى البرمجة، فإن إطار Laravel، المشهور ببنيته النظيفة ونظامه القوي، يشكل بيئة مثالية لتطوير التطبيقات المعقدة. وبالدمج بين Laravel ومكتبة BotMan المتخصصة في بناء بوتات المحادثة، يصبح بإمكان المطورين إنشاء أنظمة ذكية ومتقدمة بسرعة وكفاءة.

يتناول هذا المقال كيفية بناء بوت Telegram باستخدام Laravel وBotMan، متعمقًا في مختلف مراحل الإعداد والتكوين والتكامل، مع مراعاة أفضل الممارسات من حيث الأمان، الأداء، وقابلية التوسع.


أولاً: ما هو BotMan؟

BotMan هو إطار مفتوح المصدر يُستخدم لبناء بوتات المحادثة (chatbots) عبر العديد من المنصات مثل Telegram، Facebook Messenger، Slack، وغيرها. يتميز هذا الإطار ببساطته، ومرونته، ودعمه الكامل لإطار Laravel، مما يجعله خيارًا مثاليًا لتطوير بوتات فعالة من حيث الأداء وسهلة الصيانة.

أهم ميزات BotMan:

  • دعم متكامل لـ Laravel.

  • واجهة برمجية نظيفة وسهلة القراءة.

  • دعم متعدد المنصات.

  • إمكانيات التوسعة من خلال الحزم.

  • دعم المحادثات متعددة الخطوات (Conversations).


ثانياً: متطلبات بيئة العمل

لبدء العمل في مشروع بوت باستخدام Laravel وBotMan، من الضروري توفر بعض الأدوات والبرمجيات الأساسية:

  • PHP إصدار 8.0 أو أحدث.

  • Composer لإدارة الحزم.

  • Laravel إصدار 9 أو أحدث.

  • قاعدة بيانات مثل MySQL أو SQLite.

  • ngrok أو سيرفر VPS لاختبار الـ Webhook في بيئة تطوير محلية.

  • حساب Telegram Bot يتم إنشاؤه عبر BotFather.


ثالثاً: خطوات إعداد مشروع Laravel جديد

1. إنشاء مشروع Laravel

bash
composer create-project --prefer-dist laravel/laravel telegramBot cd telegramBot

2. تثبيت حزمة BotMan

bash
composer require botman/botman composer require botman/driver-telegram

3. إعداد بيئة Laravel

في ملف .env، قم بتحديث الإعدادات الأساسية مثل الاتصال بقاعدة البيانات.


رابعاً: إعداد بوت Telegram

  1. افتح Telegram وابحث عن BotFather.

  2. أرسل الأمر /newbot.

  3. اختر اسمًا للبوت واسم مستخدم فريد.

  4. سيُرسل لك BotFather رمز التوكن (API Token)، احتفظ به جيدًا.

  5. فعّل خيار Inline Mode وGroup Privacy حسب الحاجة.


خامساً: ربط BotMan مع Telegram

1. إعداد Webhook

لربط البوت بـ Telegram، يجب تعيين Webhook يشير إلى رابط معين في مشروع Laravel. استخدم ngrok أو عنوان IP ثابت على VPS لتوفير رابط خارجي:

bash
ngrok http 8000

احصل على رابط https الذي يولّده ngrok.

2. إعداد Webhook في Telegram

bash
https://api.telegram.org/bot/setWebhook?url=https://yourdomain.com/botman

استبدل وyourdomain.com بالمعلومات الصحيحة.


سادساً: إعداد المسارات في Laravel

1. إضافة ملف Route خاص بالبوت

في ملف routes/web.php:

php
use Illuminate\Support\Facades\Route; use BotMan\BotMan\BotMan; use BotMan\BotMan\BotManFactory; use BotMan\BotMan\Drivers\DriverManager; use BotMan\BotMan\Messages\Incoming\IncomingMessage; Route::post('/botman', function () { $config = [ 'telegram' => [ 'token' => env('TELEGRAM_TOKEN') ] ]; DriverManager::loadDriver(\BotMan\Drivers\Telegram\TelegramDriver::class); $botman = BotManFactory::create($config); $botman->hears('/start', function ($bot) { $bot->reply('مرحبًا بك في بوت Laravel باستخدام BotMan!'); }); $botman->hears('مرحبا', function ($bot) { $bot->reply('أهلاً وسهلاً بك!'); }); $botman->listen(); });

2. إضافة التوكن في ملف .env

env
TELEGRAM_TOKEN=your_bot_token_here

سابعاً: التعامل مع المحادثات متعددة الخطوات (Conversations)

يوفر BotMan واجهة سهلة لإنشاء محادثات تفاعلية تتكون من عدة خطوات.

إنشاء Conversation جديدة

bash
php artisan make:conversation RegisterConversation

مثال على محادثة تسجيل بسيطة:

php
namespace App\Conversations; use BotMan\BotMan\Messages\Conversations\Conversation; class RegisterConversation extends Conversation { protected $name; public function askName() { $this->ask('ما هو اسمك؟', function ($answer) { $this->name = $answer->getText(); $this->say('تشرفت بمعرفتك، ' . $this->name); }); } public function run() { $this->askName(); } }

ربط المحادثة في Route

php
use App\Conversations\RegisterConversation; $botman->hears('تسجيل', function ($bot) { $bot->startConversation(new RegisterConversation); });

ثامناً: تخزين البيانات وربطها بقاعدة البيانات

يمكنك بسهولة ربط البوت بقاعدة بيانات Laravel لتخزين معلومات المستخدمين أو الأوامر:

مثال: إنشاء جدول المستخدمين

bash
php artisan make:model TelegramUser -m

في ملف الهجرة database/migrations/...:

php
Schema::create('telegram_users', function (Blueprint $table) { $table->id(); $table->string('telegram_id')->unique(); $table->string('name')->nullable(); $table->timestamps(); });
bash
php artisan migrate

حفظ المستخدم عند المحادثة

php
use App\Models\TelegramUser; TelegramUser::updateOrCreate( ['telegram_id' => $bot->getUser()->getId()], ['name' => $this->name] );

تاسعاً: إرسال الأزرار والقوائم التفاعلية

يدعم BotMan الأزرار التي تجعل التفاعل مع المستخدم أكثر سهولة.

مثال: أزرار خيارات

php
use BotMan\BotMan\Messages\Outgoing\Question; use BotMan\BotMan\Messages\Outgoing\Actions\Button; $botman->hears('خيارات', function ($bot) { $question = Question::create('اختر أحد الخيارات:') ->addButtons([ Button::create('معلومة')->value('info'), Button::create('مساعدة')->value('help') ]); $bot->ask($question, function ($answer) use ($bot) { if ($answer->isInteractiveMessageReply()) { $value = $answer->getValue(); if ($value === 'info') { $bot->reply('هذه معلومة مهمة...'); } elseif ($value === 'help') { $bot->reply('إليك المساعدة...'); } } }); });

عاشراً: نشر المشروع على سيرفر VPS

لجعل البوت يعمل باستمرار:

  1. استخدم خدمة Supervisor لمراقبة عمليات Laravel queue workers إن استُخدمت المهام الخلفية.

  2. اربط مشروع Laravel بـ HTTPS باستخدام شهادة SSL.

  3. استخدم أدوات مثل forever أو pm2 لإدارة العمليات الخلفية.


الحادي عشر: الأمان وإدارة الصلاحيات

لحماية بوت Telegram من الاستخدام غير المرغوب فيه:

  • تحقق من user_id القادم من Telegram لتحديد المستخدمين المسموحين.

  • نفذ قواعد صلاحيات للمشرفين (admins).

  • لا تعرض توكن البوت مطلقًا.

  • استخدم Laravel Logging لمراقبة الأنشطة.


الثاني عشر: تكامل البوت مع أنظمة أخرى

يمكن توسيع قدرات البوت عبر دمجه مع خدمات خارجية:

  • تكامل مع APIs: جلب بيانات الطقس، أسعار العملات، أو الأخبار.

  • التكامل مع قواعد بيانات خارجية أو ERP.

  • الربط مع جداول Laravel لتنفيذ أوامر مخصصة.

  • تشغيل Jobs وEvents في Laravel بشكل متزامن مع الأوامر في البوت.


جدول: مقارنة بين BotMan وطرق أخرى لتطوير بوتات Telegram

الميزة BotMan + Laravel استخدام Telegram API مباشرة استخدام Python (مثل Telebot)
سهولة الاستخدام عالية منخفضة متوسطة
دعم التوسعة والمرونة ممتاز محدود جيد
دعم المحادثات المتعددة مدمج بالكامل يتطلب برمجة يدوية يتطلب برمجة يدوية
تكامل مع قواعد بيانات سهل ومباشر معقد نسبيًا متوسط
الأداء يعتمد على إعداد Laravel عالي جدًا جيد
الأمان عالي يعتمد على المطور جيد

المصادر والمراجع


هذا المقال يشكل مرجعًا شاملًا لأي مطور يسعى لبناء بوت Telegram احترافي باستخدام Laravel وBotMan، مع التركيز على أفضل الممارسات والربط العميق بين مكونات النظام المختلفة.