Класс 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();
});
Основной принцип работы
- Определение маршрутов: С помощью методов
on...
(например,onBotCommand
,onText
) вы "регистрируете" маршруты и указываете, на какое событие они должны сработать. - Описание действия: К каждому маршруту вы привязываете действие с помощью цепочки методов (
text
,img
,kbd
,func
и т.д.). Это действие описывает, что бот должен сделать в ответ. - Запуск роутера: В конце скрипта вы вызываете метод
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();