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

17 20 января 2026

Telegram-боты — удобный инструмент для автоматизации: уведомления, приём заказов, поддержка пользователей. В этой статье разберём, как с нуля создать простого бота на PHP, который умеет отвечать на сообщения и работать с кнопками.


1. Создание бота в Telegram

Для начала необходимо создать самого бота:

  1. Откройте Telegram
  2. Найдите @BotFather
  3. Выполните команду /newbot
  4. Укажите имя и 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

Таким образом, данный пример является стартовой точкой, на основе которой можно построить как простой информационный бот, так и полноценный инструмент для бизнеса.


🙏 Благодарностей 2
Привет! Похоже, Вы ещё не вошли на сайт.
Чтобы получить полный доступ, зарегистрируйтесь или войдите под своим именем.