Laravelda telegram bot - (Echobot)

Laravelda telegram bot - (Echobot)

Telegram bot | 1753 | 2022-03-28 18:36:41

Assalomu alaykum! Ushbu maqolada laravel frameworkini telegram-bot-sdk kutubxonasidan foydalanib echo bot yaratishni ko'rib chiqamiz!
Echobot - siz yozgan xabaringizni o'zingizga yuborib turuvchi telegram bot. Bunaqa botdan nima foyda deb o'ylashingiz mumkin, ammo bu maqolani yozishimdan maqsad telegram botni laravel frameworki orqali qanday dasturlash kerakligi o'rgatish.

Demak biz boshladik:

Eng avvalo laravel frameworkini o'rnatib olamiz. Telegram botni webhook qilib ishlatamiz, shuning uchun birdaniga laravel frameworkini serverga o'rnatishimiz zarur. Serverga laravel frameworkini o'rnatish uchun bizga php, composer va ssh(shell) dostup kerak bo'ladi. Agar serveringizda bular o'rnatilmagan bo'lsa server administratoriga o'rnatib berishini so'rang.

Laravelni o'rnatishdan avval domen ochib root directoryni public folderga to'g'irlab qo'yishingiz kerak.

Laravelni quyidagi buyruq orqali o'rnatamiz:

rm -rf domen-nomi.uz
composer create-project laravel/laravel domen-nomi.uz

Endi esa telegram botni ishlatish uchun maxsus telegram-bot-sdk packagesini o'rnatib olamiz:

composer require irazasyed/telegram-bot-sdk

Config faylni publish qilamiz:

php artisan vendor:publish --provider="Telegram\Bot\Laravel\TelegramServiceProvider"

Telegram botimizni ishlashini taminlaydigan controller yaratib olamiz. Telegram botni ishlatish uchun bizga bitta funksiya yetadi shuning uchun invokable (bir funksiyali) controller yaratib olamiz:

php artisan make:controller TelegramController --invokable

Endi telegram botimizni webhook qiladigan url manzilni yaratib olamiz. Buning uchun routes papkasini ichida web.php faylga yangi route qo'shamiz. Routeda bajariladigan ishlarni TelegramControllerga yo'naltirib qo'yamiz.

Eng avvalo web.php tepasida controllerni chaqirib olamiz:

use App\Http\Controllers\TelegramController;

Keyin esa post methodni qabul qiladigan webhook routeni yaratib olamiz:

Route::post('webhook', TelegramController::class);

Laravelning csrf tekshiruvini ushbu route uchun o'chirib qo'yamiz. Buning uchun app/Http/Middleware katalogidagi VerifyCsrfToken.php faylida $except arrayiga o'zimizni route manzilini qo'shib qo'yamiz.

protected $except = [
        'webhook',
    ];

Telegram bot tokenini .env faylga TELEGRAM_BOT_TOKEN o'zgaruvchisida saqlab qo'yamiz:

TELEGRAM_BOT_TOKEN="TOKEN"

Endi botimiz amallarini controllerda yozib olamiz. Telegram klasini use qilib chaqirib olamiz. Webhookdan keladigan updatelarni getWebhookUpdates metodi orqali olamiz. Xabarni sendMessage metodi orqali yuboramiz. Controller app/Http/Controllers katalogida TelegramController.php faylida yoziladi:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Telegram;

class TelegramController extends Controller
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function __invoke(Request $request)
    {
        $updates = Telegram::getWebhookUpdates();
        $message = $updates->getMessage();
        $chat_id = $message->getChat()->getId();
        $text = $message->getText();
        $data = [
            'chat_id' => $chat_id,
            'text' => $text,
        ];
        Telegram::sendMessage($data);
    }
}

Botimizni domen-nomi.uz/webhook manziliga webhook qilamiz.

Shu bilan echobot tayyor. Botni qolgan qismini shu ko'rinishda yozishingiz mumkin!

Doʻstlarga ulashish:

Izlash
Bo'limlar