در این مقاله خیلی سریع وخلاصه میریم سراغ ایجاد ربات و اتصال اون به لاراول.
توسط کد زیر پکیج کار با تلگرام رو به لاراول اضافه کنین:
composer require irazasyed/telegram-bot-sdk
حالا به آرایه providers که در مسیر config/app.php هست اضافه میکنیم.
Telegram\Bot\Laravel\TelegramServiceProvider::class,
حالا به آرایه aliases کد زیر رو اضافه میکنیم تا Telegram به فاساد هامون اضافه بشه.
'Telegram' => Telegram\Bot\Laravel\Facades\Telegram::class,
حالا که سرویس و فاساد اون رو اضافه کردیم فایل کانفیگ تلگرام رو با دستور زیر انتشار میدیم (میاریم به فولدر config)
php artisan vendor:publish --provider="Telegram\Bot\Laravel\TelegramServiceProvider"
حالا میریم به تلگرام و ربات پدرخانده @BotFather رو استارت میزنیم با دستور /newbot یک ربات جدید ایجاد میکنیم. اول اسم ربات و دوم نام کاربری اون رو وارد میکنیم در آخر هم وقتی ربات به درستی ایجاد شد، تلگرام کد token HTTP API میده که بهش تو فایل .env نیاز داریم و به صورت زیر در این فایل وارد میکنیم:
TELEGRAM_BOT_TOKEN=525012101:AAEwy9R1SCpq0V_Bpkgqm9Z4nbrWZaNt_Kg
خب حالا نیاز به یک کانال تلگرام داریم که رباتمون رو داخلش ادد کنیم.
به فایل config/telegram.php میریم و در قسمت ربات های نام رباتمون رو مینویسیم (قسمت username). کد زیر
'bots' => [
'mybot' => [
'username' => 'tutsforwebbot',
'token' => env('TELEGRAM_BOT_TOKEN', ''),
'certificate_path' => env('TELEGRAM_CERTIFICATE_PATH', ''),
'webhook_url' => env('TELEGRAM_WEBHOOK_URL', ''),
'commands' => [
],
],
],
برای بروز رسانی کشمون هم از دستور زیر استفاده میکنیم:
php artisan config:cache
در تلگرام هر چت (کانال، چت، گروه پی وی یا…) یه اتاق گفتگو حساب میشه و برای ارسال پیام توسط رباط ما نیاز به شماره اون اتاق داریم که البته اسمش chat_id هست. برای اینکه شماره اتاق گفتگو رو پیدا کنیم و کار با رباط تلگرام یه کنترلر برای رباط تلگرام ایجاد میکنیم:
php artisan make:controller TelegramBotController
و کد های زیر رو به کنترلرمون اضافه میکنیم
<?php
namespace App\Http\Controllers;
use Telegram\Bot\Laravel\Facades\Telegram;
class TelegramBotController extends Controller
{
public function updatedActivity()
{
$activity = Telegram::getUpdates();
dd($activity);
}
}
کد بالا پیام های اتاق گفتگو رو بصورت لاگ نمایش میده و همچنین شماره اون رو. با مسیر زیر کنترلرمون رو فعال میکنیم:
Route::get('/updated-activity', 'TelegramBotController@updatedActivity');
حالا به مرورگر میریم و آدرس /updated-activity رو تایپ میکنیم، اگر کانال ما خالی باشه مقدار [] برمیگرده ولی وقتی یک پیام ایجاد کنیم (خودمون یک پیام در کانال منتشر کنیم) و دوباره تست میگیریم. خروجی شبیه این میشه:
array:1 [▼
۰ => Update {#348 ▼
#items: array:2 [▼
"update_id" => 21432106
"channel_post" => array:4 [▼
"message_id" => 12
"chat" => array:4 [▼
"id" => -1001361379586
"title" => "Hamidreza bot test"
"username" => "hamidrezabot_test"
"type" => "channel"
]
"date" => 1568741639
"text" => "SalamDonya"
]
]
}
]
اگر قبلا پیامی در گروه فرستاده بودین آخرین ایندکس رو چک کنین. در این آرایه در قسمت ایندکس chat قسمت id یک شماره نوشته شده -۱۰۰۱۳۶۱۳۷۹۵۸۶ این شماره رو کپی میکنیم و در فایل .env متغیر زیر رو اضافه میکنیم
TELEGRAM_CHANNEL_ID=-1001361379586
و سپس کش رو دوباره ریفرش میکنیم
php artisan config:cache
حالا به کنترلر TelegramBotController متد زیر رو اضافه میکنیم
public function sendMessage()
{
Telegram::sendMessage([
'chat_id' => -1001361379586,//env('TELEGRAM_CHANNEL_ID', ''),
'parse_mode' => 'HTML',
'text' => 'اولین پیام تست ربات تلگرام'
]);
}
البته من مستقیم شماره chat_id رو وارد کردم ولی شما میتنین از متغیر محیطی .env استفاده کنین که کدشو کامنت کردم.
آدرس sendMessage رو در روت خودمون وارد میکنیم و بعد در مرورگر تست میکنیم.
Route::get('/sendMessage', 'TelegramBotController@sendMessage');
منبع: https://tutsforweb.com/sending-notifications-to-telegram-messenger-with-laravel