Перейти к содержимому

Класс Bot

Это мощный конструктор для создания логики вашего Telegram-бота. Он позволяет декларативно описывать, как бот должен реагировать на различные типы входящих обновлений: команды, текстовые сообщения, нажатия на кнопки и т.д.

Использование Bot избавляет от необходимости писать громоздкие if/else или switch конструкции, делая код чистым, читаемым и легко расширяемым.

Подключение и инициализация

Класс Bot работает в связке с основным классом TGZ.

Webhook

php
<?php
require_once __DIR__ . 'vendor/autoload.php';

use ZhenyaGR\TGZ\TGZ;
use ZhenyaGR\TGZ\Bot;

// Инициализация для работы через Webhook
$tg = TGZ::create('ВАШ_ТОКЕН_БОТА');
$bot = new Bot($tg);

// ... здесь вся логика вашего бота ...

$bot->run();

LongPoll

php
<?php
require_once __DIR__ . 'vendor/autoload.php';

use ZhenyaGR\TGZ\LongPoll;
use ZhenyaGR\TGZ\Bot;

$longpoll = LongPoll::create('ВАШ_ТОКЕН_БОТА');
$longpoll->listen(function(TGZ $tg) {
    $bot = new Bot($tg);

    // ... здесь вся логика вашего бота ...

    $bot->run();
});

Основной принцип работы

  1. Определение маршрутов: С помощью методов on... (например, onBotCommand, onText) вы "регистрируете" маршруты и указываете, на какое событие они должны сработать.
  2. Описание действия: К каждому маршруту вы привязываете действие с помощью цепочки методов (text, img, kbd, func и т.д.). Это действие описывает, что бот должен сделать в ответ.
  3. Запуск роутера: В конце скрипта вы вызываете метод run(), который анализирует пришедшее от Telegram обновление, находит подходящий маршрут и выполняет связанное с ним действие.

Пример простого бота

php
<?php
require_once __DIR__ . 'vendor/autoload.php';

use ZhenyaGR\TGZ\TGZ;
use ZhenyaGR\TGZ\Bot;

$tg = TGZ::create('ТОКЕН');
$bot = new Bot($tg);

// --- Определяем маршруты и действия ---

// 1. Приветствие по команде /start
$bot->onBotCommand('start', '/start')
    ->text('Добро пожаловать! Я бот, созданный на TGZ.');

// 2. Реакция на простое текстовое сообщение
$bot->onText('how_are_you', 'Как дела?')
    ->text('Все отлично, спасибо что спросили!');

// 3. Создаем кнопку и ее обработчик
$bot->btn('show_help', '❓ Помощь')
    ->edit('Это раздел помощи. Пока тут пусто.');

// 4. Показываем эту кнопку по команде /help
$bot->onBotCommand('help', '/help')
    ->text('Нажмите на кнопку ниже, чтобы получить помощь.')
    ->inlineKbd([
        ['show_help']
    ]);

// 5. Запасной ответ, если команда не распознана
$bot->onDefault()
    ->text('Я не понял вашу команду. Попробуйте /start или /help.');
    
// --- Запускаем ---
$bot->run();

Опубликовано под лицензией MIT.