milly/laragram

Laravel 包,用于在 Laravel 项目中开发 Telegram 机器人

资助包维护!
Patreon

4.0.0 2024-07-20 14:46 UTC

README

一个简单的 Laravel 包,用于在您的 Laravel 项目中使用 Telegram 机器人 API

License Packagist Version Packagist Version

特性

它包含 Telegram 机器人 API 的所有方法

img_1.png

它们都有完整的文档

img_2.png

现在您不必记住哪个属性在哪个对象中,因为它们也有文档)

img_3.png

您可以直接通过您的函数获取它们

img_5.png

顺便说一下,您可以一次性调用其中许多方法

img_6.png

它支持 FSM-Routing

img_8.png

安装

此包需要 PHP 8.0+

首先,安装 Laragram 包,并确保数据库连接设置正确!

composer require milly/laragram

然后运行以下命令以发布资源和配置

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

将您的 Telegram 机器人令牌添加到 .env

TELEGRAM_BOT_TOKEN=123456789:XXXXXXXXXXXXXXXXXXXXXXXXXXX

运行迁移以使用 FSM-Routing

php artisan migrate

如果您想获取更新,将 webhook 设置为您的地址(例如 domain.com/api/bot)以处理更新

就这样,您现在可以开始使用您的机器人了

使用

  • 本地开发

    php artisan laragram:start
  • 方法

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

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

    // 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 版本

  • 路由定义中支持匿名函数
// 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
]);
  • 状态管理现在支持正则表达式作为状态
// routes/laragram.php

//...
FSM::route('state_+', [SomeClass::class, 'someMethod']);
  • 小修复

将其作为包在 Laravel 项目中使用,您将能够使用所有功能,包括

  • 路由中间件
  • 多语言
  • 守卫
  • CLI
  • 迁移
  • 以及其他更多功能

变更