irazasyed/telegram-bot-sdk 根据命令获取更新对象

irazasyed/telegram-bot-sdk get update object on commands

我在 Laravel 中使用 irazasyed/telegram-bot-sdk 作为 Telegram 机器人。我只是想访问我的 StartCommand class 上的更新对象,并用他的名字向用户发送欢迎消息。 StartCommand class 如下所示:

<?php

namespace App\TelegramCommands;

use Telegram\Bot\Commands\Command;

class StartCommand extends Command
{
    protected $name = "start";

    protected $description = "Lets you get started";

    public function handle()
    {
        $this->replyWithMessage(['text' => 'Welcome ']);
    }
}

路线(在api.php内)是:

Route::post('/'.env('TELEGRAM_BOT_TOKEN').'/webhook', function (Request $request) {
    $update = Telegram::commandsHandler(true);
    return 'ok';
});

我只是想在他发送 /start 命令时访问用户数据并重播一条消息,例如“欢迎 [他的名字]”。提前谢谢你。

我刚得到答案。主要是在 StartCommand 的 handle 方法中加入如下内容 class:

$update= $this->getUpdate();

因此最终文件将如下所示:

<?php

namespace App\TelegramCommands;

use Telegram\Bot\Commands\Command;

class StartCommand extends Command
{
    protected $name = "start";

    protected $description = "Lets you get started";

    public function handle()
    {
        $update= $this->getUpdate();
        $name = $update['message']['from']['first_name'];
        $this->replyWithMessage(['text' => 'Welcome '.$name]);
    }
}

一个很好的教程是here