Телеграм-бот (Telegram bot) — это программа, разработанная для мессенджера Telegram, которая выполняет определенные функции автоматически. Боты могут принимать сообщения от пользователей, отвечать на них, обрабатывать команды, отправлять уведомления, предоставлять информацию, создавать опросы и множество других задач в соответствии с их предназначением. Телеграм-боты широко используются для автоматизации процессов и общения с пользователями в Telegram.
Для разработки телеграмм ботов используются различные технологии, но одной из самых популярных и мощных является язык программирования PHP. PHP позволяет создавать динамические веб-страницы, а также их интеграцию с различными сервисами. Также для разработки ботов используются API Телеграмм и библиотеки для работы с ними. Эти технологии позволяют создавать мощные и удобные в использовании боты.
Работа в системе мессенджера совсем не сложна, так как она предоставляет свои собственные API для взаимодействия с ботами. Это набор методов и запросов, позволяющих разработчикам отправлять и получать сообщения, управлять сеансами и выполнять другие операции с ботами.
К тому же Telegram использует распределенную инфраструктуру для обеспечения быстрой и надежной доставки сообщений. Это позволяет ботам быть доступными всегда и в любом месте в мире. Обеспечивает высокий уровень шифрования для защиты отправленных сообщений и данных. Боты также могут использовать функции шифрования Telegram для безопасной передачи конфиденциальных данных. Ну и конечно же боты могут включать в себя дополнительные функции и интеграции, такие как возможность создания опросов, отправки уведомлений, работа с медиафайлами (изображения, видео, аудио и т.д.), интеграция с внешними сервисами, каких-то сторонних API, встраивание веб-представлений и так далее.
Итак сегодня мы будем делать кнопки
Создание кнопок в телеграмм боте с помощью PHP - это увлекательная и перспективная задача. Кнопки делают интерфейс бота более удобным и понятным для пользователей, позволяя им быстро и легко выбирать необходимые действия. Для этого используются специальные методы API Телеграмм и библиотек PHP. Создание кнопок - это лишь один из множества примеров функционала, который можно реализовать с помощью PHP в телеграмм боте.
В Telegram ботах при использовании inline_keyboard (встроенных клавиатур), вы можете добавлять кнопки с использованием объекта InlineKeyboardButton
. Каждая кнопка может содержать различные типы данных для идентификации, включая следующие параметры:
Типы данных для создаваемых кнопок
text
: Текст кнопки, который будет виден пользователю.callback_data
: Данные для обратного вызова (callback), которые будут отправлены боту при нажатии пользователя на кнопку. Эти данные могут быть использованы для идентификации действий пользователя.url
: URL, который откроется при нажатии на кнопку (если необходимо отправить пользователя на внешний сайт).switch_inline_query
: Если вы хотите, чтобы пользователь при нажатии на кнопку перешел в режим inline и сразу же начал поиск с предложенным запросом.switch_inline_query_current_chat
: Аналогичноswitch_inline_query
, но поиск будет происходить в текущем чате.callback_game
: Описание игры, если кнопка используется в Telegram играх.pay
: Параметрtrue
указывает, что кнопка является кнопкой оплаты.
Поле callback_data
часто используется для идентификации конкретных действий пользователя. Вы можете вставить в callback_data
любую строку, которую затем обработает ваш бот при получении обратного вызова. Обычно разработчики используют JSON или просто разделенные знаками строку, чтобы задать необходимые параметры (например, тип действия, ID продукта, номер страницы).
Пример создания inline клавиатуры с кнопкой на PHP:
Для начала нужно создать функцию для отправки сообщений боту. Будем использовать библиотеку cURL
function message_to_telegram($bot_token, $chat_id, $text, $reply_markup = '') { $ch = curl_init(); $ch_post = [ CURLOPT_URL => 'https://api.telegram.org/bot' . $bot_token . '/sendMessage', CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_TIMEOUT => 10, CURLOPT_POSTFIELDS => [ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $text, 'reply_markup' => $reply_markup, ] ]; curl_setopt_array($ch, $ch_post); curl_exec($ch); }
Создаем кнопки в телеграмм боте
Вообще кнопки - это массив 'inline_keyboard'
$keyboard = [ 'inline_keyboard' => [ [ ['text' => 'Кнопка 1', 'callback_data' => 'action1'], ['text' => 'Кнопка 2', 'callback_data' => 'action2'] ], [ ['text' => 'Кнопка 3', 'callback_data' => 'action2'] ] ] ];
Далее отправляем массив боту
message_to_telegram('Токен бота', 'id чата',json_encode($keyboard));
Используем метод sendMessage или другой метод API Telegram для отправки сообщения с клавиатурой
При нажатии на кнопку, Telegram отправит callback_query
к вашему боту, включая поле callback_data
, которое содержит информацию, назначенную этой кнопке. Затем вы обрабатываете этот запрос, идентифицируете нажатую кнопку на основе данных в callback_data
, и выполняете необходимые действия.
В можно отправить не просто команду но и массив
Для этого необходимо массив сериализовать в строку, используя форматы данных JSON или base64, чтобы включить в callback_data
составные данные. Затем эти данные нужно десериализовать (разобрать обратно в массив), когда вы получите callback_query
от серверов Telegram.
Чтобы включить массив в callback_data
:
- Преобразуйте массив в JSON-строку используя функцию
json_encode
. - Если длина полученной строки не превышает 64 байта, можете использовать её непосредственно.
- Если длина строки превышает 64 байта, можете сжать данные или использовать сокращенный идентификатор для избежания превышения лимита.
// Массив, который вы хотите передать $dataArray = ['action' => 'buy', 'id' => 123]; // Преобразование массива в JSON строку $jsonData = json_encode($dataArray); // Убедитесь, что длина JSON строки не превышает 64 байта if (strlen($jsonData) <= 64) { $callbackData = $jsonData; } else { // Примените необходимые меры для сжатия данных или иный способ укорачивания данных // Пример сокращения данных может включать в себя использование уникальных ID или ключей } // Используйте $callbackData в inline_keyboard $keyboard = [ 'inline_keyboard' => [ [ ['text' => 'Купить', 'callback_data' => $callbackData] ], // ... другие кнопки ] ]; $encodedKeyboard = json_encode($keyboard);
А получать данные с кнопок можно используя метод callback_query
// Полученные данные callback_query $callbackData = $update["callback_query"]["data"]; // Десериализация JSON строки обратно в массив $dataArray = json_decode($callbackData, true); // Теперь $dataArray содержит ваш изначальный массив // Пример: доступ к 'action' и 'id' $action = $dataArray['action']; $id = $dataArray['id'];
Вот и все. Как видите ничего сложного.