Зачем нужен Telegram-бот?
Telegram-бот — это быстрый способ добавить интерактив в ваше приложение без разработки отдельного мобильного клиента. Пользователи уже привыкли к Telegram, а API позволяет обрабатывать сообщения, кнопки и даже платежи.
Шаг 1: Создаём бота
Открываем @BotFather в Telegram, отправляем /newbot, задаём имя и username. Получаем токен вида 123456:ABC-DEF... — сохраняем его в .env:
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
Шаг 2: Устанавливаем зависимости
В Yii2 используем официальный PHP SDK или простой HTTP-клиент:
composer require longman/telegram-bot
Шаг 3: Настраиваем webhook
Webhook — это URL, на который Telegram будет отправлять обновления. Создаём контроллер:
class TelegramController extends Controller
{
public function actionWebhook()
{
$token = Yii::$app->params['telegram.token'];
$update = json_decode(file_get_contents('php://input'), true);
if (!$update || !isset($update['message'])) {
return $this->asJson(['ok' => true]);
}
$message = $update['message'];
$chatId = $message['chat']['id'];
$text = $message['text'] ?? '';
// Обработка команд
if ($text === '/start') {
$this->sendMessage($chatId, 'Добро пожаловать! Я бот для записи на услуги.');
}
return $this->asJson(['ok' => true]);
}
private function sendMessage(int $chatId, string $text): void
{
$token = Yii::$app->params['telegram.token'];
file_get_contents("https://api.telegram.org/bot{$token}/sendMessage?" . http_build_query([
'chat_id' => $chatId,
'text' => $text,
'parse_mode' => 'HTML',
]));
}
}
Шаг 4: Регистрируем webhook
Выполняем один раз, чтобы Telegram знал наш URL:
curl "https://api.telegram.org/bot{TOKEN}/setWebhook?url=https://example.com/telegram/webhook"
Шаг 5: Inline-кнопки
Для интерактивных меню используем reply_markup:
$keyboard = json_encode([
'inline_keyboard' => [
[['text' => 'Записаться', 'callback_data' => 'book']],
[['text' => 'Мои записи', 'callback_data' => 'my_bookings']],
]
]);
file_get_contents("https://api.telegram.org/bot{$token}/sendMessage?" . http_build_query([
'chat_id' => $chatId,
'text' => 'Выберите действие:',
'reply_markup' => $keyboard,
]));
Итог
Telegram Bot API — простой и мощный инструмент. За 30 минут можно добавить бота в любое Yii2-приложение. В следующей статье расскажу про обработку callback-кнопок и интеграцию с базой данных.