milly/laragram

Laravel package to develop telegram bot inside laravel project

Fund package maintenance!
Patreon

4.0.0 2024-07-20 14:46 UTC

README

Simple laravel package to use telegram bot API inside your laravel project

License Packagist Version Packagist Version

Features

It has every method of telegram bot api:

img_1.png

Which are fully documented:

img_2.png

Now you don't have to remember which property is in which object, because they are documented too):

img_3.png

Which you can get directly throuhg your function:

img_5.png

BTW, you can call many of them at once:

img_6.png

It supports FSM-Routing:

img_8.png

Installation

This package requires PHP 8.0+

First, install Laragram package, and make sure that the database connection settings are correct!

composer require milly/laragram

Then run these commands to publish assets and config

php artisan vendor:publish --provider="Milly\Laragram\LaragramServiceProvider"

Add your telegram bot token to .env

TELEGRAM_BOT_TOKEN=123456789:XXXXXXXXXXXXXXXXXXXXXXXXXXX

Run migration to be able to use FSM-Routing

php artisan migrate

If you want to get updates, set webhook to your adress (like domain.com/api/bot) where you handle updates

And here we go, you can start your bot now

Usage:

  • Local development:

    php artisan laragram:start
  • Methods:

    use Milly\Laragram\Laragram;
    
    Laragram::sendMessage(
        123456789, // chat_id
        null, // message thread id
        "Hello world", // message text  
    );
  • Objects:

    use Milly\Laragram\Types\Message;
      
    // with variable
    $message = new Message();
    $text = $message->text;
    
    // inside the function
    function getText(Message $message) {
        $text = $message->text;
    }
  • FSM Routing:

    // routes/api.php
    use Milly\Laragram\FSM\FSM;
    use Milly\Laragram\Laragram;
    
    Route::post('/bot', function () {
    
       FSM::route('state_1', [SomeClass::class, 'someMethod']);
    
        FSM::route('state_2', function (Message $message) {
            Laragram::sendMessage(
                $message->chat->id,
                null,
                "Inside anonymous function"
            );
        });
    }

2.3 version

  • Support for anonymous functions inside route definition
// routes/laragram.php

use App\Http\Controllers\LaragramController;
use Milly\Laragram\FSM\FSM;
use \Milly\Laragram\Types\Message;
use \Milly\Laragram\Laragram;

FSM::route('', function (Message $message) {
    Laragram::sendMessage([
        $message->chat->id,
        null,
        "Inside anonymous function"
    );
}, [
  (new \Milly\Laragram\Types\Update())->message
]);
  • State management now supports regexp as status
// routes/laragram.php

//...
FSM::route('state_+', [SomeClass::class, 'someMethod']);
  • minor fixes

Use it inside laravel project as a package and you will be able to use all features, including:

  • route middleware
  • multi-lang
  • guards
  • CLI
  • migration
  • and others and others

Changes: