PHP code example of gruven / phpbotgram

1. Go to this page and download the library: Download gruven/phpbotgram library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

gruven / phpbotgram example snippets



declare(strict_types=1);

 Gruven\PhpBotGram\Dispatcher\Dispatcher;
use Gruven\PhpBotGram\Dispatcher\PollingOptions;
use Gruven\PhpBotGram\Types\Message;

$token = getenv('BOT_TOKEN') ?: throw new RuntimeException('BOT_TOKEN missing');
$bot = new Bot($token);
$dispatcher = new Dispatcher();

$dispatcher->message->register(static function (Message $event): void {
  $text = $event->text ?? '';
  if ($text === '') {
    return;
  }
  $event->answer($text)->emit();
});

$dispatcher->runPolling(new PollingOptions(), $bot);

use Gruven\PhpBotGram\Bot;
use Gruven\PhpBotGram\Client\Session\AmphpSession;
use Gruven\PhpBotGram\Client\TelegramApiServer;

$bot = new Bot(
  token: $token,
  session: new AmphpSession(api: TelegramApiServer::production()),
);

use Gruven\PhpBotGram\Methods\SendMessage;

$send = new SendMessage(chatId: 1, text: 'hi');
$result = $bot($send);              // synchronous in the current fiber
$alsoResult = $send->emit($bot);    // equivalent — TelegramMethod::emit()

use Gruven\PhpBotGram\Dispatcher\Router;
use Gruven\PhpBotGram\Utils\CallbackAnswer\CallbackAnswerMiddleware;

$router = new Router();
$router->message->register($handler, filters: [$filter1, $filter2]);
$router->callbackQuery->outerMiddleware(new CallbackAnswerMiddleware());
$dispatcher->

use Gruven\PhpBotGram\Filters\Command;
use Gruven\PhpBotGram\Filters\Filter;
use const Gruven\PhpBotGram\F;

$router->message->register(
  $handler,
  filters: [
    Filter::all(
      new Command('buy'),
      F->chat->type->equals('private')->asFilter(),
    ),
  ],
);

use Gruven\PhpBotGram\Fsm\Scene\SceneRegistry;
use Gruven\PhpBotGram\Fsm\Scene\ScenesManager;
use Gruven\PhpBotGram\Filters\Command;
use Gruven\PhpBotGram\Types\Message;

$registry = new SceneRegistry($dispatcher);
$registry->add([QuizScene::class]);

$dispatcher->message->register(
  static function (Message $event, ScenesManager $scenes): void {
    $scenes->enter(QuizScene::class);
  },
  filters: [new Command('quiz')],
);

use Gruven\PhpBotGram\Webhook\Server\AmphpServer;
use Gruven\PhpBotGram\Webhook\SimpleRequestHandler;

$handler = new SimpleRequestHandler(dispatcher: $dispatcher, bot: $bot);
AmphpServer::run(
  handler: $handler,
  dispatcher: $dispatcher,
  // Bind to 127.0.0.1 when sitting behind a reverse proxy (recommended).
  // Use 0.0.0.0 only if exposing the bot directly to the internet — see
  // deploy/nginx/phpbotgram-webhook.conf for the proxy template.
  host: '127.0.0.1',
  port: 8080,
  path: '/webhook',
);