راهنمای سریع استفاده از ربات تلگرام در لاراول Laravel Telegram Bot

در این مقاله خیلی سریع وخلاصه میریم سراغ ایجاد ربات و اتصال اون به لاراول.
توسط کد زیر پکیج کار با تلگرام رو به لاراول اضافه کنین:

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

یک دیدگاه در “راهنمای سریع استفاده از ربات تلگرام در لاراول Laravel Telegram Bot”

  1. triggerCommand این پکیج کار نمیکنه راه حلی براش ندارید؟ وقتی داخل کامند میخوام کامند دیگه ای رو اجرا کنم triggerCommand آرگومان ورودی رو قبول نمیکنه، داخل کنتلر هم triggerCommand با آرگومان یا بی آرگومان کلا کار نمیکنه. ممنون میشم اگه راه حلی سراغ دارید بهم بگید مرسی

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نوزده − چهارده =