Изучая тему «Создание Telegram бота на PHP», мы уже научились делать так, чтобы в ответ на определённое сообщение, или команду, бот отправлял в чат текстовые сообщения, файлы, картинки и видео.
Но для более лучшего взаимодействия с пользователем, иногда лучше разработать меню, или кнопки. Так человеку не придётся запоминать и набирать команды для бота вручную. Ему будет достаточно выбрать тот вариант, который его интересует и кликнуть по кнопке, или по нужному пункту меню.
В этом уроке мы рассмотрим пример создания кнопок в Telegram боте на PHP и объединим весь тот код, который изучили ранее. То есть, мы научим нашего бота отправлять пользователю текстовое сообщение, файл, картинку, или видео, если он нажмет на ту или иную кнопку.
Создание меню из кнопок в Telegram
Для создания кнопочного меню в Телеграм боте можно написать следующий код:
// кнопки меню (2 ряди по 2 кнопки) $keyboard = [ [ [‘text’ => ‘Кнопка 1’], [‘text’ => ‘Кнопка 2’], ], [ [‘text’ => ‘Кнопка 3’], [‘text’ => ‘Кнопка 4’], ] ]; $reply_markup = json_encode([«keyboard»=>$keyboard,»resize_keyboard»=>true]); // Відповідь на текстове повідомлення // Отримуємо текст, який відправив користувач Телеграм боту в месенджері if (!empty($data[‘message’][‘text’])) < $text = $data[‘message’][‘text’]; // Виводимо кнопки в Telegram, якщо користувач ввів команду /menu if (mb_stripos( $text, ‘/start’) !== false) < sendTelegram( ‘sendMessage’, [‘chat_id’=>$data[‘message’][‘chat’][‘id’], ‘text’=>’Це кнопкове Меню бота’, ‘reply_markup’=>$reply_markup ] ); exit(); > > ?>
Здесь, мы создаём кнопки, которые нужно показать пользователю в Телеграм, этим фрагментом кода:
Как сделать кликабельную кнопку в телеграм
// кнопки меню (2 ряди по 2 кнопки) $keyboard = [ [ [‘text’ => ‘Кнопка 1’], [‘text’ => ‘Кнопка 2’], ], [ [‘text’ => ‘Кнопка 3’], [‘text’ => ‘Кнопка 4’], ] ]; $reply_markup = json_encode([«keyboard»=>$keyboard,»resize_keyboard»=>true]);
А отправляем эти кнопки Телеграм боту, вот этой строкой кода:
‘reply_markup’=>$reply_markup
Реакция на нажатие кнопок Телеграм бота
Теперь давайте сделаем так, чтобы если человек нажмёт на кнопку, то в ответ ему приходило какое-нибудь сообщение. Например, «Вы нажали на кнопку 1», «Вы нажали на кнопку 2» и т.д.
Когда человек нажимает на кнопку №1, то боту отправляется сообщение «Кнопка 1». Соответственно, мы можем отследить текст этого сообщения и в ответ прислать свой текст (это мы уже проходили в уроке №2 «Отправка и получение сообщений»).
Пример кода
if (!empty($data[‘message’][‘text’])) < $text = $data[‘message’][‘text’]; // Виводимо кнопки в Telegram, якщо користувач ввів команду /menu if (mb_stripos( $text, ‘/start’) !== false) < sendTelegram( ‘sendMessage’, [‘chat_id’=>$data[‘message’][‘chat’][‘id’], ‘text’=>’Це кнопкове Меню бота’, ‘reply_markup’=>$reply_markup ] ); exit(); > else if (mb_stripos( $text, ‘Кнопка 1’) !== false) < sendTelegram( ‘sendMessage’, array( ‘chat_id’ =>$data[‘message’][‘chat’][‘id’], ‘text’ => ‘Ви натиснули кнопку №1’ ) ); exit(); > >
То есть мы взяли код из нашего урока по отправке и получению сообщений Телеграм боту (см. Урок №2) и подставили его в конструкцию If…Then…Else If.
Таким же образом давайте сделаем с получением картинок, файлов и видео. Но предварительно давайте поменяем название наших кнопок на «Send text», «Send picture», «Send file» и «Send video». Так будет намного понятнее для чего предназначена каждая из этих кнопок.
Итоговый код Телеграм бота
Теперь, если пользователь нажмёт на соответствующую кнопку, то от Telegram бота он получит текстовое сообщение, файл, картинку, или видео.
То же самое будет происходить, если человек отправит текстовые сообщения боту в чате: «Send text», «Send picture», «Send file», «Send video».
Примечание.
Питоном по телеграму! Пишем пять простых Telegram-ботов на Python
В этой статье мы реализуем простой, но крайне полезный проект на Python — бота для Telegram. Боты — это небольшие скрипты, которые могут взаимодействовать с API, чтобы получать сообщения от пользователя и отправлять информацию в разные чаты и каналы.
Python для новичков
Если ты совсем не ориентируешься в Python, то отличным началом будет прочтение трех вводных статей, которые я публиковал в «Хакере» этим летом, либо посещение курса «Python для новичков», который я начну вести для читателей «Хакера» уже совсем скоро — 30 ноября.
- Python с абсолютного нуля. Учимся кодить без скучных книжек
- Python с абсолютного нуля. Учимся работать со строками, файлами и интернетом
- Python с абсолютного нуля. Работаем с ОС, изучаем регулярные выражения и функции
Чтобы создать бота, нам нужно дать ему название, адрес и получить токен — строку, которая будет однозначно идентифицировать нашего бота для серверов Telegram. Зайдем в Telegram под своим аккаунтом и откроем «отца всех ботов», BotFather.
Жмем кнопку «Запустить» (или отправим / start ), в ответ BotFather пришлет нам список доступных команд:
- / newbot — создать нового бота;
- / mybots — редактировать ваших ботов;
- / setname — сменить имя бота;
- / setdescription — изменить описание бота;
- / setabouttext — изменить информацию о боте;
- / setuserpic — изменить фото аватарки бота;
- / setcommands — изменить список команд бота;
- / deletebot — удалить бота.
Отправим бате‑боту команду / newbot , чтобы создать нового бота. В ответ он попросит ввести имя будущего бота, его можно писать на русском. После ввода имени нужно будет отправить адрес бота, причем он должен заканчиваться на слово bot. Например, xakepbot или xakep_bot . Если адрес будет уже кем‑то занят, BotFather начнет извиняться и просить придумать что‑нибудь другое.
Когда мы наконец найдем свободный и красивый адрес для нашего бота, в ответ получим сообщение, в котором после фразы Use this token to access the HTTP API будет написана строка из букв и цифр — это и есть необходимый нам токен. Сохраним ее где‑нибудь на своем компьютере, чтобы потом использовать в скрипте бота.
Для взаимодействия с Telegram API есть несколько готовых модулей. Самый простой из них — Telebot. Чтобы установить его, набери
pip install pytelegrambotapi
В Linux, возможно, понадобится написать pip3 вместо pip , чтобы указать, что мы хотим работать с третьей версией Python.
Эхо-бот
Для начала реализуем так называемого эхо‑бота. Он будет получать от пользователя текстовое сообщение и возвращать его.
Источник: xakep.ru
Как в телеграмме сделать кнопку выбора
Шаг 2: Также можно добавить в это сообщение файл. Для этого нажимаем на плюс в правом верхнем углу, выбираем файл. Под файлом можно добавить кнопки.
Внимание! Максимальный размер файла — 10 МВ.
Шаг 3: Нажимаем на элемент «Файл», добавляем файл, который позволяет принимать telegram.
Как настроить сообщение по умолчанию.
Шаг 2: Сохраняем
Шаг 2: Заходим в него и пишем текст. Так работает ссылка на сообщение. Если нужно указать в сообщении ссылку, но без отображения превью, активируем функцию «Скрыть превью ссылок».
Шаг 1: Заходим в конструктор. Создаем и привязываем бота к Чатформе. Как это сделать смотрите здесь.
Настраиваем стартовое сообщение. Стартовое сообщение это то, что пользователи получат от бота в первый раз, когда нажали на кнопку «Начать» или же «Запустить бота».
Сообщение по умолчанию это то, что бот будет отвечать пользователю, если не понимает его. То есть если пользователь написал какую-то непонятную фразу или слово, бот отвечает этим сообщением.
Шаг 1: Пишем сообщение.
Как сделать так, чтобы бот высылал пользователям текстовое сообщение и файлы.
Шаг 1: В разделе сообщения нажимаем на плюс и выбираем простое сообщение.
Шаг 3: Сохраняем и идем в стартовое. Добавляем кнопки в нашего бота. В правом верхнем углу нажимаем на плюс и выбираем элемент кнопки.
Шаг 4: Пишем текст перед кнопками. В стартовом сообщении вы можете создать 3 вида кнопок.
1 — ссылка на сообщение. Выбираем тип кнопки — ссылка на сообщение. Сохраняем.
2 — внешняя ссылка. Выбираем тип кнопки — внешняя ссылка, добавляем ссылку, которую мы хотим добавить в данную кнопку. Ссылку нужно добавить обязательно http или https. Нажимаем Добавить.
3 — кнопка вызова. Выбираем тип кнопки — кнопка вызова. Указать название контакта, который будет отправляться пользователю. А также указать телефон, по которому пользователь может связаться с данным контактом.
Есть еще один вариант кнопки — корзина. Перейдя по этой кнопке, пользователь сможет посмотреть, что находится в его корзине.
Ни в коем случае нельзя ставить кнопку на корзину в стартовом сообщении!
Для этих кнопок в боте Telegram можно выбрать размещение: по 2 кнопки в ряду или по 1.
Создаём меню в сообщении по умолчанию.
Эти кнопки будут располагаться под полем ввода текста у пользователя. Можно добавить определенное количество рядов и кнопок в каждом. Кнопки динамического меню могут вести только на внутренние сообщения в боте. Не рекомендуется в сообщении по умолчанию ставить кнопку на стартовое сообщение, если в вашем боте настроено постоянное меню.
Нажимаем добавить, сохраняем бота.
Поздравляем! Мы с вами рассмотрели как добавить текстовые элементы, файлы, кнопки, а также как работают стартовое сообщение и сообщение по умолчанию.
Как создать меню в боте Telegram.
Шаг 1: Переходим в BotFather и отправляем ему команду /mybots.Выбираем нужный бот, нажимаем EditCommands
Шаг 2: Получаем сообщение от бота с рекомендациями:
Шаг 3: Отправляем боту перечисление команд
Шаг 4: Добавляем в Конструкторе под сообщения или формы бота соответствующие AI — теги и сохраняем изменения в боте:
Шаг 5: Открываем бот на мобильном, видим появившееся меню, разворачиваем, можем нажать на любую из команд
Источник: learn.chatforma.com