Как создать простого Telegram-бота на PHP с кнопками

Telegram-боты — удобный инструмент для автоматизации: уведомления, приём заказов, поддержка пользователей. В этой статье разберём, как с нуля создать простого бота на PHP, который умеет отвечать на сообщения и работать с кнопками.
1. Создание бота в Telegram
Для начала необходимо создать самого бота:
- Откройте Telegram
- Найдите @BotFather
- Выполните команду
/newbot - Укажите имя и username бота (username должен заканчиваться на
bot)
В результате BotFather выдаст токен вида:
123456789:AAAbbbCCCdddEEE
Важно: токен является секретным и не должен быть доступен публично.
2. Подготовка сервера
Минимальные требования:
- PHP версии 7.4 или выше
- HTTPS (обязательно для webhook)
- Поддержка cURL
Создадим файл бота, например:
/bot/index.php
3. Базовый код Telegram-бота на PHP
Ниже приведён минимальный рабочий пример Telegram-бота:
<?php
$token = 'ВАШ_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$token}/";
// Получаем входящие данные от Telegram
$update = json_decode(file_get_contents('php://input'), true);
// Если пришло сообщение
if (isset($update['message'])) {
$chatId = $update['message']['chat']['id'];
$text = trim($update['message']['text'] ?? '');
if ($text === '/start') {
sendMenu($chatId);
} else {
sendMessage($chatId, "Вы написали: {$text}");
}
}
// ===== ФУНКЦИИ =====
function sendMessage($chatId, $text)
{
global $apiUrl;
$data = [
'chat_id' => $chatId,
'text' => $text
];
request('sendMessage', $data);
}
function sendMenu($chatId)
{
global $apiUrl;
$keyboard = [
'keyboard' => [
[['text' => '📦 Каталог'], ['text' => '📞 Контакты']],
[['text' => 'ℹ️ О нас']]
],
'resize_keyboard' => true
];
$data = [
'chat_id' => $chatId,
'text' => 'Выберите пункт меню:',
'reply_markup' => json_encode($keyboard)
];
request('sendMessage', $data);
}
function request($method, $data)
{
global $apiUrl;
$ch = curl_init($apiUrl . $method);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $data
]);
curl_exec($ch);
curl_close($ch);
}
4. Подключение webhook
Telegram должен знать, на какой адрес отправлять входящие сообщения. Для этого необходимо установить webhook:
https://api.telegram.org/botВАШ_BOT_TOKEN/setWebhook?url=https://site.com/bot/index.php
Если запрос выполнен успешно, Telegram начнёт отправлять данные на ваш PHP-скрипт.
5. Обработка кнопок меню
Кнопки клавиатуры отправляют обычный текст, поэтому обрабатываются так же, как и сообщения:
if ($text === '📦 Каталог') {
sendMessage($chatId, "Наш каталог:\n— Деталь 1\n— Деталь 2");
}
if ($text === '📞 Контакты') {
sendMessage($chatId, "Телефон: +49 xxx xxx\nEmail: info@site.com");
}
if ($text === 'ℹ️ О нас') {
sendMessage($chatId, "Мы интернет-магазин автозапчастей.");
}
6. Inline-кнопки
Inline-кнопки отображаются прямо под сообщением и позволяют выполнять действия без отправки текста:
$keyboard = [
'inline_keyboard' => [
[
['text' => '🌐 Сайт', 'url' => 'https://site.com'],
['text' => '🛒 Заказ', 'callback_data' => 'order']
]
]
];
Отправка сообщения с inline-кнопками:
request('sendMessage', [
'chat_id' => $chatId,
'text' => 'Полезные ссылки:',
'reply_markup' => json_encode($keyboard)
]);
7. Обработка callback-запросов
if (isset($update['callback_query'])) {
$chatId = $update['callback_query']['message']['chat']['id'];
$data = $update['callback_query']['data'];
if ($data === 'order') {
sendMessage($chatId, 'Для оформления заказа напишите менеджеру.');
}
}
Итог
В рамках этой статьи был создан простой Telegram-бот на PHP, который:
- работает через webhook
- принимает сообщения
- отправляет ответы
- использует кнопки и inline-кнопки
Важно понимать
Приведённый пример — это минимальная реализация Telegram-бота, предназначенная для изучения базовых принципов работы. В реальных проектах такой код обычно дорабатывается и расширяется.
На его основе можно реализовать более сложные решения, например:
- вынести всю логику бота в класс для удобной архитектуры
- добавить логирование запросов, ошибок и действий пользователей
- подключить PHPMailer для email-уведомлений
- реализовать оформление заказов с пошаговым вводом данных
- интегрировать базу данных, CRM, платёжные системы или API
Таким образом, данный пример является стартовой точкой, на основе которой можно построить как простой информационный бот, так и полноценный инструмент для бизнеса.
Чтобы получить полный доступ, зарегистрируйтесь или войдите под своим именем.
