آموزش کامل ساخت ربات تلگرام با لاراول
حدود سه سال از اولین مقاله ای که در رابطه با ساخت ربات تگرامی در بایت گیت نوشته ایم میگذرد. این بار قصد داریم ربات پیشرفته تری برای تلگرام با استفاده از لاراول بسازیم. تلگرام یک پلتفرم پیامرسان مبتنی بر وب است که در تاریخ ۲۴ ژوئن ۲۰۱۵ به صورت رسمی ربات خود را معرفی کرد. این برنامه به ما امکان میدهد از رباتهای تلگرام برای ارسال پیام، آهنگ، تصویر، فیلم و سایر محتواهای متنوع به فرد، گروه یا کانال خاصی استفاده کنیم. در اینجا، ما به آموزش ساخت ربات تلگرام با استفاده از لاراول و BotMan میپردازیم.
ساخت ربات تلگرامی
برای شروع، ابتدا باید یک ربات در تلگرام ایجاد کنیم تا بتوانیم کار کنیم. برای ساخت ربات تلگرام با استفاده از لاراول، مراحل زیر را به ترتیب دنبال کنید:
- به botfather@ بروید و بر روی گزینه “Start” کلیک کنید.
- گزینه “newbot/” را انتخاب کنید.
- نام مورد نظر برای ربات خود را وارد کنید، به عنوان مثال “Imagebot”.
- یک نام کاربری برای ربات خود انتخاب کنید که با “bot” ختم میشود. به عنوان مثال، “myImagebotir_bot” یا “myImagebotirbot”. اطمینان حاصل کنید که این نام منحصر به فرد و منحصر به خود باشد و تکراری نباشد.
- توکن را در جایی امن ذخیره کنید، زیرا داشتن توکن برای استفاده از ربات ضروری است.
حتماً توجه داشته باشید که در هر مرحله از این مراحل باید دقت کنید و موارد را به درستی وارد کنید.
ساخت ربات تلگرام با Botman
برای نصب و استفاده از BotMan در پروژهی لاراول، میتوانید مراحل زیر را دنبال کنید:
ابتدا از طریق Composer، BotMan را در پروژهی لاراول خود نصب کنید. این کار را با اجرای دستور زیر در ترمینال انجام دهید:
composer require botman/botman
```
سپس برای تنظیمات BotMan، فایل config/botman.php
را ایجاد کنید و دستورات زیر را در آن قرار دهید:
<?php
return [
'telegram' => [
'token' => 'YOUR_TELEGRAM_TOKEN',
],
];
حالا برای ایجاد یک ربات ساده، یک کنترلر مربوط به ربات را ایجاد کنید. میتوانید این کار را با دستور زیر انجام دهید:
php artisan make:controller BotManController
```
در فایل app/Http/Controllers/BotManController.php
، کد زیر را قرار دهید:
<?php
namespace App\Http\Controllers;
use BotMan\BotMan\BotMan;
class BotManController extends Controller
{
public function handle()
{
$botman = app('botman');
$botman->hears('hello', function (BotMan $bot) {
$bot->reply('Hello there!');
});
$botman->listen();
}
}
```
در فایل routes/web.php
، یک مسیر برای دریافت درخواستهای وبهوک ربات تعریف کنید. میتوانید این کار را با کد زیر انجام دهید:
<?php
use App\Http\Controllers\BotManController;
Route::post('/botman', [BotManController::class, 'handle']);
```
حالا BotMan آماده است و میتوانید ربات خود را تست کنید. برای این منظور، سرور توسعه لاراول را با دستور php artisan serve
راهاندازی کنید و ربات خود را در تلگرام امتحان کنید.
توجه داشته باشید که برای استفاده از BotMan در تلگرام، باید توکن ربات خود را که در مرحله تنظیمات BotMan ایجاد کردهاید، در فایل config/botman.php
قرار دهید.
این مراحل به شما کمک میکنند تا BotMan را در پروژهی لاراول خود نصب کنید و از آن استفاده کنید.
ایجاد دستورات در BotMan
برای ایجاد دستورات (commands) در ربات با استفاده از BotMan، میتوانید از رویکرد زیر استفاده کنید:
ابتدا، یک متد در کنترلر BotMan خود ایجاد کنید که به عنوان اکشن برای دستور عمل کند. میتوانید متدهای مختلفی برای دستورات مختلف ایجاد کنید. به عنوان مثال، برای دستور /start
، متد startCommand
را ایجاد کنید.
public function startCommand(BotMan $bot)
{
$bot->reply('Welcome to the bot!'); // اقداماتی که برای دستور انجام میدهید
}
```
سپس، با استفاده از متد command
در BotMan، دستور را تشخیص داده و به متد مربوطه ارجاع دهید. این کار را در متد handle
کنترلر BotMan انجام دهید.
$botman->command('/start', [BotManController::class, 'startCommand']);
```
در این مثال، ربات به دستور `/start` پاسخ خواهد داد و متد `startCommand` را فراخوانی میکند. میتوانید دستورات دیگر را نیز به همین شکل ساختاردهی کنید. به عنوان مثال، برای دستور /help
:
public function helpCommand(BotMan $bot)
{
$bot->reply('Here are the available commands: ...'); //
}
//handle
$botman->command('/help', [BotManController::class, 'helpCommand']);
```
همچنین، میتوانید از الگوهای متناسب با دستورات نیز استفاده کنید. به عنوان مثال، برای تشخیص دستوراتی که با عبارت “Hello” شروع میشوند:
// handle
$botman->command('/{greeting}Hello', function (BotMan $bot, $greeting) {
$bot->reply("Hi there! You said '$greeting Hello'");
});
```
در این مثال، ربات به هر دستوری که با عبارت “Hello” شروع شود و یک کلمه قبل از آن وجود داشته باشد، پاسخ خواهد داد. همچنین، میتوانید پارامترهایی را در دستورات استفاده کنید. به عنوان مثال، برای دستور /say
که یک پیام را به عنوان پارامتر دریافت میکند:
// در متد handle
$botman->command('/say {message}', function (BotMan $bot, $message) {
$bot->reply("You said: $message");
});
```
در این مثال، ربات به دستور `/say` پاسخ میدهد و پیام داخل آن را به عنوان پارامتر دریافت میکند و در پاسخ نمایش میدهد.
// handle
$botman->command('/say {message}', function (BotMan $bot, $message) {
$bot->reply("You said: $message");
});
```
در این مثال، ربات به دستور `/say` پاسخ میدهد و پیام داخل آن را به عنوان پارامتر دریافت میکند و در پاسخ نمایش میدهد.
با استفاده از این روشها، میتوانید دستورات مختلف و پارامترهایبه علاوه، BotMan امکاناتی را برای سفارشیسازی دستورات فراهم میکند. در زیر چند مورد از این امکانات را مشاهده میکنید:
محدود کردن دسترسی: شما میتوانید با استفاده از متد middleware
در BotMan، دسترسی به دستورات را محدود کنید. مثلاً میتوانید تنها کاربرانی که در لیست اجازهدهندهها قرار دارند، به دستورات دسترسی داشته باشند.
$botman->middleware([new OnlyAllowedUsersMiddleware()]);
```
پاسخهای تصادفی: میتوانید برای هر دستور، پاسخهای تصادفی تعریف کنید. برای این کار، از متد randomReply
در BotMan استفاده کنید.
$botman->command('/hello', function (BotMan $bot) {
$bot->reply(BotMan::randomReply(['Hi!', 'Hello!', 'Hey there!']));
});
```
پارامترهای اختیاری: میتوانید برای دستورات پارامترهای اختیاری تعریف کنید. برای این کار، استفاده از کروشهها [ ]
را قبل و بعد از نام پارامتر استفاده کنید.
$botman->command('/greet {name?}', function (BotMan $bot, $name = 'Guest') {
$bot->reply("Hello, $name!");
});
```
در این مثال، پارامتر `name` برای دستور `/greet` اختیاری است. اگر پارامتر داده نشود، مقدار پیشفرض “Guest” است. استفاده از الگوها و اعمال قیدها: میتوانید با استفاده از الگوها و قیدها، دستورات را با دقت بیشتری تشخیص دهید. برای مثال، میتوانید با استفاده از قید *
، هر کلمهای را در دستور قبول کنید.
$botman->command('/search {query*}', function (BotMan $bot, $query) {
$bot->reply("You are searching for: $query");
});
```
در این مثال، دستور `/search` همراه با هر کلمهای به عنوان پارامتر `query` قابل قبول است.
$botman->command('/search {query*}', function (BotMan $bot, $query) {
$bot->reply("You are searching for: $query");
});
```
در این مثال، دستور `/search` همراه با هر کلمهای به عنوان پارامتر `query` قابل قبول است. با استفاده از این امکانات، شما میتوانید دستورات ربات خود را با BotMan ساخته و سفارشیسازی کنید و به نیازهای خاص خود بپیوندید.
نصب درایور تلگرام برای ربات
برای نصب درایور تلگرام و استفاده از آن در ربات خود، میتوانید مراحل زیر را دنبال کنید:
ابتدا، پکیج botman/driver-telegram
را با استفاده از مدیر بستههای Composer نصب کنید. در ترمینال، دستور زیر را اجرا کنید:
composer require botman/driver-telegram
```
بعد از نصب موفقیتآمیز، باید درایور تلگرام را به BotMan اضافه کنید. برای این کار، متد loadDriver
را در کنترلر BotMan خود فراخوانی کنید. معمولاً این متد در متد boot
کنترلر قرار میگیرد. به عنوان مثال:
use BotMan\BotMan\BotMan;
use BotMan\Drivers\Telegram\TelegramDriver;
// BotMan
public function boot()
{
$this->loadDriver(TelegramDriver::class);
}
```
حالا باید تنظیمات مربوط به درایور تلگرام را پیکربندی کنید. برای این کار، متد driver
را در کنترلر BotMan فراخوانی کنید و تنظیمات مربوط به توکن بات تلگرام خود را در آن قرار دهید. معمولاً این تنظیمات در فایل config/botman/telegram.php
قرار میگیرد. به عنوان مثال:
// BotMan
public function driver()
{
return $this->driverConfiguration('telegram', [
'token' => 'YOUR_TELEGRAM_BOT_TOKEN',
]);
}
```
در این مثال، `YOUR_TELEGRAM_BOT_TOKEN` را با توکن بات تلگرام خود جایگزین کنید. حالا درایور تلگرام در ربات شما نصب و پیکربندی شده است. میتوانید از دستورات و قابلیتهای تلگرام در ربات خود استفاده کنید. به عنوان مثال، میتوانید به کد زیر برای پاسخگویی به دستور /start
در تلگرام مراجعه کنید:
use BotMan\BotMan\BotMan;
use BotMan\BotMan\Messages\Incoming\IncomingMessage;
// BotMan
public function startCommand(BotMan $bot)
{
$bot->reply('Welcome to the bot!');
}
// BotMan
public function handle()
{
$botman->hears('/start', [BotManController::class, 'startCommand']);
$botman->listen();
}
```
با این تنظیمات، ربات شما در تلگرام به دستور `/start` پاسخ خواهد داد و متد `startCommand` را فراخوانی میکند. با انجام این مراحل، درایور تلگرام در ربات شما نصب و پیکربندی میشود و شما میتوانید از قابلیتها و دستورات تلگرام در ربات خود استفاده کنید.
نصب و اجرای ngrok برای ساخت ربات تلگرام با لاراول
برای استفاده از Ngrok برای ساخت ربات تلگرام با لاراول، مراحل زیر را دنبال کنید:
ابتدا، فرض میکنیم که شما پروژه Laravel خود را ایجاد کردهاید و دارای ربات تلگرام هستید که قرار است از طریق Ngrok در دسترس قرار گیرد.
ابتدا Ngrok را دانلود و نصب کنید. میتوانید از وبسایت رسمی Ngrok به آدرس https://ngrok.com/ دانلود کنید.
پس از نصب Ngrok، ترمینال را باز کنید و دستور زیر را وارد کنید:
ngrok authtoken YOUR_AUTH_TOKEN
```
در این دستور، `YOUR_AUTH_TOKEN` را با توکن احراز هویتی Ngrok خود جایگزین کنید. حالا میتوانید Ngrok را اجرا کنید. برای این کار، دستور زیر را در ترمینال وارد کنید:
ngrok http PORT_NUMBER
`
در اینجا، `PORT_NUMBER` را با شماره پورت سرور توسعه Laravel خود جایگزین کنید. به طور پیشفرض، پورت ۸۰۰۰ برای سرور توسعه Laravel استفاده میشود.
بعد از اجرای دستور Ngrok، در ترمینال خروجیهای Ngrok را مشاهده خواهید کرد، از جمله URL عمومی که به سرور توسعه شما متصل میشود. URL ایجاد شده توسط Ngrok را کپی کنید.
حالا نیاز است تا URL Ngrok را در تنظیمات ربات تلگرام خود در Laravel وارد کنید. برای این کار، به فایل .env
پروژه Laravel خود بروید و متغیر TELEGRAM_BOT_WEBHOOK_URL
را با URL Ngrok که در مرحله قبل کپی کردهاید، تنظیم کنید. مثال:
TELEGRAM_BOT_WEBHOOK_URL=https://abc123.ngrok.io/bot/webhook
در این مثال، `https://abc123.ngrok.io` را با URL Ngrok خود جایگزین کنید. حالا میتوانید ربات تلگرام خود را با استفاده از Ngrok در Laravel اجرا کنید. میتوانید روی سرور توسعه Laravel خود دستور php artisan serve
را اجرا کنید و ربات تلگرام خود را در دسترس عمومی قرار دهید.
php artisan serve
سپس ربات تلگرام شما از طریق URL Ngrok در دسترس خواهد بود و میتوانید با آن تعامل کنید.
اتصال ربات از لاراول به تلگرام
برای اتصال برنامه خود به رباتی که ایجاد کردهاید، آخرین مرحله این است که یک درخواست POST ارسال کنید و URL که از طریق ngrok دریافت کردهاید را استفاده کنید.
https://api.telegram.org/bot{TOKEN}/setWebhook
همچنین میتوانید از Postman یا CURL برای انجام این کار استفاده کنید.
curl -X POST -F 'url=https://{YOU_URL}/botman' https://api.telegram.org/bot{TOKEN}/setWebhook
اگر تمام مراحل را به درستی انجام دادهاید، باید دقیقاً این پاسخ JSON را دریافت کنید:
{
"ok": true,
"result": true,
"description": "Webhook was set"
}
جمع بندی:
با پیشرفت تکنولوژی در دنیای امروز، بسیاری از کسب و کارهای فیزیکی به شکل مجازی تبدیل شدهاند. برای بسیاری از این کسب و کارها، یک سیستم پشتیبانی الزامی است که به درخواستها و نیازهای مشتریان یا کاربران، از جمله پیگیری سفارشات، پاسخ به انتقادات و شکایتها و سایر درخواستها، پاسخ دهد. در اینجا، رباتهای تلگرام به عنوان یکی از ابزارهای قدرتمند و حرفهای برای پاسخگویی به این نیازها و درخواستها مطرح میشوند. در این مقاله، ما به آموزش ساخت ربات تلگرام با استفاده از لاراول و Botman پرداختیم. اگر سوال یا نظری در این زمینه دارید، ما و کاربران بایت گیت بسیار خوشحال خواهیم شد اگر آن را با ما به اشتراک بگذارید.