Кнопка с текстом в ТГ

Изучая тему «Создание 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 боте

Очень частый вопрос «А как сделать, чтобы кнопки в боте были чем-то вроде переключателей, типо Вкл/Выкл?» или «А как сделать множественный выбор в кнопках?».

И теперь перед тобой инструкция к применению.

  • Как обычно пример масштабируемый под любое количество кнопок
  • Реализован вывод результата в зависимости от выбранных вариантов

О типах данных. В salebot, так же как и в программировании существует несколько типов данных: строковые и числовые.
Подробно о типах данных можно почитать здесь
Я всегда рекомендую активно использовать в переменных и call_back числовые данных, так как они поддаются математическим операциям и имеют четкий, предсказуемый порядок и иерархию.

В это уроке я так же активно использую числа.

Стартовый блок

  • Создадим блок «Начало диалога» с обычным условием /start
  • В настройках проекта зададим переменную bot_token и укажем в ней api token вашего Telegram бота
  • С первого же блока мы будем использовать Telegram Bot Api, так что указываем в нём следующие настройки. Ниже я дам пояснения по используемым переменным
  • — Тип запроса — POST-data
  • — URL запроса — https://api.telegram.org/bot#/sendMessage
  • — Сохраняемые значения — result|message_id -> message_id
  • — JSON параметры:
  • В калькуляторе укажем следующие переменные, так мы задаём стартовые значения наших «переключателей»:
  • checkpoint_1 = «❌»
  • checkpoint_2 = «❌»
  • checkpoint_3 = «❌»

Обрати внимание на написание текста кнопок и callback_data!

В тексте каждой кнопки указана переменная вида #1>.
Эти переменные являются изменяемыми значениями. Весь текст кнопки может быть прописан в каждой из этих переменных.
Цифра в каждой из этих переменных соответствует номеру кнопки. У тебя наверняка текст в кнопке будет другой, но в переменной обязательно прописывай ее порядковый номер.
В callbak_data каждой кнопки также указан порядковый номер кнопки и он совпадает с соответствующим номером в переменной #.

Еще по теме:  Как включить наушники в видеочате в Телеграмме

Блок «Изменение кнопок»

  • От стартового блока протягиваем стрелку и создаём новый блок «Изменение кнопок»
  • В стрелке указываем следующие параметры:
  • — Условие, здесь указываем каждый callback_data из кнопок предыдущего блока. Т.е. сколько было кнопок столько цифр прописываем по порядку, в примере три кнопки — 1;2;3
  • — Выбор соответствия — Полное совпадение
  • — Отображать как кнопку — выключить
  • — Пользователь вводит данные — включить
  • — Задаём переменную для пользовательского ввода — click
  • В блоке «Изменение кнопок» указываем следующие настройки:

— Тип запроса — POST-data
— URL запроса — https://api.telegram.org/bot#/editMessageText
— Сохраняемые значения — result|message_id -> message_id
— JSON параметры:
«chat_id»:»#»,
«message_id»:»#»,
«text»:»Здесь написан какой-то супер умный текст, ну или не очень умный «,
«reply_markup»:»<«inline_keyboard»:[[<«text»:»Кнопка 1 — #»,»callback_data»:1>],[«,»callback_data»:2>],[«,»callback_data»:3>],[ >

Рейтинг
( Пока оценок нет )
Загрузка ...