Как создать и подключить бота к каналу Telegram для оформления постов!

PHP *GitHub * Из песочницы image Рано или поздно, в жизни разработчика телеграмм-ботов приходит чёткое осознание, того что всё бренно нужно создавать более-менее полноценные меню для ботов. Так как: А) Это удобно Б) Удобно для кастомизации*

Никто, конечно же, не отменял “/команды”, но всё же

Суть задачи

С первого взгляда — задача проста, но как бы не так. Вся проблема в самом API, а именно в объекте Update.

Немного подробнее: Используя метод getUpdate — вы получаете объект Update, логично же! Так вот, этот объект содержит много чего полезного, включая информацию о сообщении, но только о последнем. В этом и загвоздка

Исходя из выше описанного следует не самый приятный вывод — обработка запросов по вебхуку, без хранения дополнительных данных, нам не светит… Ну что же, умываемся и приступаем к работе.

Написание Изучение кода

В своей практике, специально под эту задачу, был разработан небольшой класс. NEW! Теперь и на гитхаб) Если не терпится, то можете сразу переходить на репозиторий, там есть экскурс.

Продолжим

Класс создаёт запрос на запрос

Немного о структуре: Переход по меню осуществляется при помощи создания запроса на запроса. Вы создаете его в нужном месте, и при следующем обращении юзера, бац, и он в «меню».

Согласен, концепция, после этого, понятной не стала… Попытаюсь разъяснить. Для понимания нужно перейти на некий уровень абстракции, то есть представьте что вся структура бота состоит из разных меню, между которыми переключается юзер(можно провести аналогию с активити андроида). При активации бота пользователь оказывается в «начальном меню», из которого он может перейти, допустим, в меню «Настройка», «Информация», и тд. И так, структура бота немного меняется, если вкратце: В начале проверяем, существует ли запрос: ДА ) Запускаем «обработчик» запросов НЕТ) Остаёмся в «начальном меню», сверяем ответ юзера с доступными командами. *это сильно упрощённый вариант, из-за этого сбивает столку. С примерами станет проще.

Продолжим..?

Начнём с установки. Для установки воспользуемся compser-ом(создаём «composer.json», после копируем в него строки ниже, подробнее читайте в офф. доках)

{   "require" : {   "s0d3s/tg-long-req": ">=1"      } }

и подключим

include_once('path/to/autoload.php'); use TgLongReqTgLongReq;

ИЛИ подключаем вручную(скачиваем в папку с проектом)

include_once('TgLongReq.php'); use TgLongReqTgLongReq;

СОЗДАЁМ ОБЪЕКТ

 function SOMTH($tg_res, $long_req_obj, $tab_key){ echo "EveryForEveryone"; return; }  $BOT_FUNC_ASSO_TAB = arrray("ECHO_SOMETHING" => "SOMTH"); //Ключ - используется при создании запроса на запрос, значение - имя ф-цииобработчика запросов  $tgreq = new TgLongReq( $usr_id,//(STR)Уникальный телеграмм-id юзера $BOT_FUNC_ASSO_TAB,//(ARRAY) $BOT_req_dir , //[OPT](STR) $tapi,  //[OPT](ANY*)  $result//[OPT](ANY**) ); // * доп параметр, можно получить через $this->tg_api // ** доп параметр, первый параметр в обработчике запросов 

СОЗДАЁМ ЗАПРОС, ПРОВЕРЯЕМ ЕГО НАЛИЧИЕ И ЗАПУСКАЕМ ОБРАБОТКУ

 $tgreq -> ReqCreate('SOMTH');//создаём запрос if($tgreq -> ReqCheck()){ //если существует, то запускаем обработчик, в нашем случае запрос всегда существует $tgreq -> ReqHand();//запускает функцию, соответствующею запросу } 

ПРЯЧЕМ И ДОСТАЁМ ВРЕМЕННЫЕ ДАННЫЕ сохраняем:

 $tgreq -> SaveToTemp('HiHabr');//Принимает любые данные, сохраняет в виде json-строки 

восстанавливаем:

 $tgreq -> GetFromTemp(false);//если истина - временный файл не удаляется, по умолчанию ложь //возвращает переменную, сохранённую с помощью SaveToTemp() 

РЕЗУЛЬТАТ ФУНКЦИИ Следует заметить, что каждая[за исключением GetFromTemp(),GetError(),ReqCheck() и конструктора] функция, возвращает массив:

 /*$function_result = array( 'func_res'=>возвращаемое функцией значение 'error'=>true, если была ошибка 'err_discript'=>описание ошибки, существует если была ошибка ); */ 

ОШИБКИ Каждая функция [за исключением GetFromTemp(),GetError(),ReqCheck() и конструктора], устанавливают ошибку, в случае неудачи, которую можно проверить с помощью:

 $error_arr = $tgreq -> GetError(); /*$error_arr = array( 'error'=>true, если была ошибка 'err_discript'=>описание ошибки, существует если была ошибка ); */ 

Всё собрали, в путь!

Будем считать что вы минимально знакомы с написанием телеграмм-ботов, если нет — %статья%, дочитайте до пункта “Написание кода бота” — первая ссылка в гугле по сабжу, можете поискать сами, главное узнайте как создать бота в самом тг, и настроить его на свой сервер. Если будет интересно, напишу статью как настроить вебхук для работы с локальным сервером(~NEW! решение обхода «проблемы» с https). Воплотим в жизнь, данный пример. Разделим пространство на два файла «botmain.php»(основное меню и обработка) и «varfunc.php»(функции обработки запросов). Для лёгкости примера будем использовать telegram-bot-sdk(хорошо сделанный и оформленный проект, удобно для небольших проектов, спасибо создателю;). В общем, листинг: composer.json

 {   "require" : {   "irazasyed/telegram-bot-sdk": ">=3", "s0d3s/tg-long-req": ">=1", "php":">=7.1"       } } 

Далее в папке проекта открываем консоль и…

>composer install ... 

UPD: В рамках Хабра исходный код становится нечитабельным, без глобальной правки. Из-за этого, если вас интересуют примеры, предлагаю вам перейти на гитхаб. Оригинал | Упрощенная версия.

Заключение

Под конец могу лишь сказать, что это не единственный возможный вариант решения данной проблемы, но с точки зрения оптимальности для МЕНЯ является фаворитом.

Используйте меню бота, чтобы помочь пользователям найти нужную информацию в вашем боте. Создавайте команды, которые запускают определенные цепочки. Открыть меню можно кликнув по иконке со знаком «/» в поле ввода сообщений.

Чтобы создать меню бота, на странице чат-бота откройте вкладку «Меню» и нажмите «Добавить элемент».

image

Введите название команды. Можно использовать до 30 символов в поле: латинские буквы, цифры и знак «_».

Введите описание — то, для чего можно использовать данную команду. В этом поле можно ввести до 200 различных символов, а также добавить эмодзи.

Выберите цепочку, которая запустится после выбора команды из списка.

Нажмите “Добавить”, чтобы добавить команду в меню.

Расширяйте меню дополнительными командами с помощью кнопки «Добавить элемент». После создания команд нажмите «Сохранить», чтобы сохранить созданные элементы.

Меню с командами готово к работе.

Вы также можете создать клавиатурное меню для пользователя из кнопок «Быстрые ответы». Вы можете добавить до 10 таких кнопок и добавить в них эмодзи.

Они отображаются у пользователя под полем ввода текста, скрываются при нажатии на соответствующий значок и пропадают после отправки следующего сообщения.

Обновлено: 09.08.2022

Всем привет! Сегодня я расскажу вам о том, как создать бота в Телеграм и зачем это может понадобиться владельцу популярного канала. Сразу хочу успокоить – уметь программировать не нужно. Хотя, конечно, если вы заядлый программист, то флаг вам в руки. Говорят, это достаточно просто.

Итак, зачем же нужны боты в Telegram и как их создать новичку? Как настроить меню, добавить команды или активировать автопостинг из социальных сетей? Давайте разбираться.

Содержание

Зачем нужны боты

Telegram — один из самых популярных мессенджеров в России, постепенно завоёвывающий любовь и признание во всём мире. Его создателем является Павел Дуров, некогда создавший социальную сеть ВКонтакте. Мессенджер обладает множеством функций, при этом он абсолютно бесплатный. Даже стикеры вы можете подключить на халяву или сделать самостоятельно.

Одной из уникальных и очень удобных фишек приложения считаются боты. Они служат для выполнения самых разных задач:

  • Создания рассылки из социальных сетей;
  • Украшения постов в чатах и каналах;
  • Проведения опросов среди подписчиков;
  • Для ответов на часто задаваемые вопросы;
  • Показа новостей;
  • Чтобы развлекать подписчиков.

Как видите, вариантов использования много, а ведь я назвал далеко не все. Но, могу вас заверить, без помощи бота создать по настоящему интересный и полезный канал, посты в котором будут привлекать пользователей и подталкивать их к подписке – невозможно.

Способы создания бота в Telegram

Всего существует два способа, как можно сделать помощника для чата или канала. Первый, как вы уже могли догадаться – для программистов. Добавлю только, что для работы придется воспользоваться Telegram API. Я в этом не силен, поэтому выбираю второй вариант. Он не требует никаких дополнительных навыков и вполне подходит новичкам.

Как создать

Для начала вам нужно найти @Manybot и подписаться на него, нажав кнопку «Запустить»:

Чтобы не париться с языком – выбираем «Русский»:

Нажимаем «Добавить нового бота»:

А теперь нужно следовать инструкции, которую пришлют в чат и подключить нового бота. Для этого нажимаем вот сюда:

Активируем его и щелкаем вот по этой команде:

Вводим имя (обязательно латиницей) и нажимаем отправить. Снова вводим название, но уже пользовательское (оно обязательно должно заканчиваться словом «bot»).

Рекомендую просто к уже придуманному имени добавить требуемое окончание.

Остается скопировать следующий API:

И прислать его Manybot:

Описываем назначение нашего бота или скипаем данный шаг.

Поздравляю, вы справились и сделали своего первого бота для чата или канала в Telegram! Теперь его можно подключать (добавить, как подписчика) и обучать различным командам.

Если не знаете, как подключить помощника к каналу, то вот инструкция. Вам нужно:

  • зайти в созданного бота и активировать его;
  • нажать на троеточие справа сверху и открыть профиль;
  • скопировать «Имя пользователя»;
  • зайти в канал, нажать троеточие справа сверху и щелкнуть «Добавить участников». Вставить скопированное название и нажать «Добавить».

Для чата процедура идентичная. Ну, если разработчики ничего не изменили. А теперь давайте научимся подключать различные команды.

Прописываем команды

Я не буду особо заморачиваться и сделаю что-нибудь простенькое. Вам главное запомнить принцип, а дальше все пойдет, как по маслу.

Чтобы прописать команду нужно:

  • набрать /commands и нажать «Создать команду»;
  • ввести подходящее название (обязательно на латинице, иначе не примет), отправить его и подобрать подходящий ответ: сообщение, картинку, файлик, после чего нажимаем «Сохранить»;

Довольно просто, правда? Теперь, когда люди активируют вашего бота и пропишут команду, получат в ответ заранее созданное сообщение.

Чтобы отредактировать уже созданную команду необходимо вернуться в главное меню и зайти в раздел «Пользовательские команды», после чего выбрать нужную:

Как создать меню в боте

Если есть время и желание довести своё творение до ума, то создание красивого меню в вашем боте – отличный выбор. Для этого нужно:

  • зайти в «Пользовательские команды» и нажать «Настроить гл. меню»;
  • нажать «Добавить»;
  • выбрать команду из списка и ввести название, под которым она будет отображаться;
  • на этом все. Данный пункт появится в меню и любой пользователь бота сможет им воспользоваться.

Если вам вдруг приспичило настроить внешний вид, переименовать кнопку или вовсе её удалить, нужно снова зайти в «Команды» и «Настройки меню», после чего нажать на желаемую клавишу. Дальше дело техники, а все возможные варианты настройки вам сразу же покажут:

Полезные фишки

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

Как включить автопостинг из соц сетей

Первая и самая интересная – автопостинг из социальных сетей (ВК, Twitter, YouTube) или RSS ленты в канал или чат в Telegram. Она позволяет сэкономить уйму времени и упростить продвижение канала. Чтобы её включить, нужно:

  • ввести специальную команду: /autoposting и выбрать источник, откуда будем брать посты;
  • опубликовать ссылку на страницу;

Всё, теперь новые записи в соц. сетях или rss ленте будут автоматически дублироваться в чате или канале.

Для ВКонтакте нужна именно публичная страница, с личной такое не прокатит.

Учимся делать отложенные посты

Еще одна полезная функция – отложенные посты. Довольно часто бывают ситуации, когда времени на публикацию нет, а сделать это просто необходимо. Чтобы не забивать голову решением подобных проблем, в Telegram можно заранее продумать темы публикаций, подготовить материал и воспользоваться ботом, который сам все отправит в указанное время.

Итак, для начала вам нужно ввести /newpost или выбрать «Отправить новое сообщение» в меню. Придумываем текст, добавляем картинки или музыку, отправляем всё это боту и нажимаем «Отложить».

Выскочит оповещение, после чего нужно указать текущее время (настраиваем часовой пояс – это делается один раз):

Теперь нужно указать время публикации. Для этого выбираем день и отправляем точное время, нажимаем «Сохранить»:

Готово! В нужный час публикация отобразится у всех пользователей.

Как создать опрос

Последняя важная функция, которую я сейчас разберу – опросы. Ну, тут без комментариев, сами должны понимать, зачем они нужны и как ими воспользоваться для продвижения канала. Моё дело рассказать, как их создать.

Для начала нажмите «Пользовательские команды» и «Создать». Введите и отправьте название:

Нажмите «Добавить вопрос» и выберете его тип (я выбрал обычный):

Введите и отправьте вопрос:

Нажмите сохранить и всё, готово. Кстати, чтобы проверить ответы, вернитесь в главное меню и нажмите «Ответы на формы», после чего найдите и выберете нужную:

Заключение

Как видите, создать бота в Телеграм достаточно просто и быстро. Они полезные, а когда дело доходит до украшения публикаций, проведения опросов и улучшения администрирования – становятся просто незаменимой палочкой выручалочкой в руках админа.

На этом всё. Подписывайтесь и до встречи в следующих статьях. Пока-пока!

Привет, друзья! На волне тренда мессенджеров и чат-ботов, наконец, добралась до создания своего бота в Телеграме. Реализовала простенького бота-помощника, а заодно решила поделиться с вами инструкцией, как я это сделала. Кроме того, в мой адрес звучали вопросы такого типа: как через бота отдавать подарок новым подписчикам. В общем-то, я этим тоже озадачилась.

На самом деле, здесь нет ничего сложного. Главное продумать действия (команды) для бота.

Для своего я сделала небольшое меню из 3 пунктов — где можно забрать полезный подарок, получить доступ к моему бесплатному курсу по партнеркам и связаться со мной в личке.

Выглядит эта менюшка следующим образом:

Какие возможности есть у бота?

1) Создание пользовательских команд и ответов на них.

2) Создание меню из команд. Это удобно, так как пользователям не надо вводить команды, а можно использовать для навигации готовое меню.

3) Возможность отправлять сообщения подписчикам (в том числе отложенные), просматривать количество подписчиков в боте.

4) Несколько языков интерфейса, в том числе русский.

5) Можно настроить автопостинг в бота из rss блога или сайта, а также с YouTube-канала, ВК, Твиттер.

Как создать своего Телеграм-бота?

Я записала пошаговую видеоинструкцию — пример создания простого бота с меню:

Посмотреть на моего бота в действии вы можете здесь. В диалоге с ним нажмите «Начать» (Start), дальнейшие действия он вам подскажет.

Итак, для начала создания своего Телеграм-бота, зайдите на сайт manybot.io, там нажмите по кнопке «Создать бота». Вас перебросит на первоначальные инструкции.

Нужно перейти на Manybot в Телеграме и нажать «Начать» (Start) в чате с ботом, чтобы получить дальнейшие инструкции.

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

После выбора русского языка вы сможете приступить к созданию бота, все инструкции будут даваться в диалоге (чате).

Первым делом вводим команду /addbot или просто жмем по ней в полученном от бота сообщении.

Далее получаем инструкцию по созданию своего бота в BotFather. Опять же, нам нужно кликнуть по логину из сообщения и перейти на диалог с BotFather.

Следующим шагом нужно напечатать в диалоге с BotFather команду /newbot и следовать дальнейшим подсказкам. А именно:

1) На английском нам предлагают указать название (имя) своего будущего бота. Я его назвала ViktoriaHelps и отправила это название в диалоге BotFather.

2) Далее указываем логин для бота. Обязательное условие, чтобы логин оканчивался на bot. Можно написать концовку слитно или через нижнее подчеркивание: _bot.

3) После этого получила сообщение с поздравлением, что мой бот создан, ссылку на него в Телеграм, а также токен, который мне нужно скопировать.

Далее возвращаюсь к диалогу с Manybot (выбираю его в контактах слева) и отправляю в чат сообщение со скопированным токеном.

В ответ получаю сообщение о том, что мне нужно добавить описание (приветственное сообщение) для своего бота. Это описание пользователь будет видеть в чате с ботом, когда перейдет на него.

Отправив Manybot описание, вижу сообщение, что мой бот успешно создан. Чтобы он появился в контактах слева, перейдите по ссылке на него и нажмите в чате «Начать».

Кстати, описание бота в любое время можно отредактировать. Делается это через команду /setdescription в диалоге с Manybot.

Настраиваем команды и меню в боте

Далее переходим к настройкам нашего бота и переключаемся на диалог с ним. Жмем внизу чата «Начать».

В ответ получаем сообщение с описанием нашего бота (то, что мы указали на предыдущем шаге). Его же будут видеть и подписчики вашего бота.

В сообщении ниже отобразится меню для управления вашим ботом (его видите только вы, как владелец бота). Если это сообщение не появилось, вы можете вызвать его сами, введя в чат команду /help или выбрав раздел «Помощь» в меню бота.

В этом сообщении отображаются команды, которые вы можете использовать для управления ботом. Например, чтобы отправить новое сообщение подписчикам, воспользуйтесь командой /newpost. Просто кликните по ней, либо отправьте в диалог боту и следуйте дальнейшим подсказкам. То же и с другими командами.

Давайте для примера создадим несколько своих команд в боте и затем встроим их в меню, чтобы новые подписчики могли взаимодействовать с вашим ботом.

Для этого в меню под полем ввода сообщения кликаем по пункту «Пользовательские команды».

Выбираем «Создать команду».

Указываем название нашей команды – оно должно быть латиницей и без пробелов. Название может содержать цифры и нижнее подчеркивание (для разделения слов). Перед командой используем значок слеш (косую черту) /.

Вводим команду в поле сообщения и жмем Enter.

Следующим шагом нужно задать ответ бота на команду. То есть, подписчик вводит в чат команду и получает на нее заготовленный ответ. Так это работает.

Мой пример ответа ниже, чтобы его сохранить, жмем «Enter», а затем кнопку «Сохранить».

Получаем сообщение, что команда успешно создана, видим ее в меню бота ниже. Таким же образом создаем и другие команды. В частности, команду, при нажатии на которую пользователь будет получать сообщение со ссылкой на скачивание подарка.

Кстати, при создании команды мы можем добавить вопрос – обычный, развернутый, с вариантами ответа. Чтобы добавить вопрос, следуйте подсказкам бота.

Если вы хотите отредактировать или удалить команду, кликните по ней в меню.

Откроется новое меню, в котором вы сможете выбрать желаемое действие.

Например, выбираем редактирование. Здесь действия будут следующими:

1) Сначала нам нужно удалить предыдущий ответ на команду и подтвердить действие.

2) Затем нажать «Добавить сообщения к команде».

3) Вводим новый ответ, отправляем боту, сохраняем.

4) Получаем сообщение, что команда успешно отредактирована.

Чтобы вернуться к предыдущему меню, нажимаем «Назад».

Как добавить команду в меню бота?

Теперь покажу, как добавить команду в меню. Это меню делается для удобства пользователя в диалоге с ботом, чтобы ему не приходилось вбивать команды вручную.

Нажимаем по кнопке «Настроить главное меню».

Выбираем «Добавить пункт меню».

Выбираем нашу ранее созданную команду.

Вводим название для данного пункта меню и отправляем боту. Например, я назову «Перейти в блог».

Видим, что новый пункт добавился в меню!

Далее, если проскроллим эту менюшку вниз, увидим кнопки для добавления нового пункта меню. Все точно также – сначала создаем команду, затем добавляем ее в меню.

А также кнопку возврата на предыдущее меню.

Как удалить команду из меню?

Если вы хотите удалить пункт меню или поменять его название, просто кликните по нему.

У вас откроется другое меню с доступными действиями. Здесь много настроек, в частности можно менять расположение пунктов, создавать многоуровневые меню. Но сейчас не об этом…

Опять же, проскроллив менюшку вниз, вы увидите кнопки «Переименовать» и «Убрать пункт из меню». Выбираете нужное действие и следуете подсказкам бота.

Например, я просто удалю пункт «Перейти в блог» из меню.

Вернуться к главному меню и настройкам бота

Для этого кликаем на кнопку «Назад» в открывающихся меню, пока не выйдем на главное.

Здесь, кстати, есть еще один интересный пункт «Ответы на формы». Он работает в паре с вопросами, которые можно добавлять к командам. То есть, эти формы нужны, чтобы получать обратную связь от подписчиков. Поэтому сначала нужно добавить вопрос к команде, а затем в этом разделе вы найдете ответы пользователей на ваши вопросы. Там же будет и логин пользователя, поэтому вы сможете связаться с ним в личке.

Ну а в пункте «Настройки» главного меню можно подключать Телеграм-каналы для постинга из бота, настроить автопостинг из RSS, Twitter, YouTube, VK. А также настроить часовой пояс.

Как увидеть меню своего бота и покликать по нему в качестве нового пользователя?

Здесь вам понадобится другой аккаунт Телеграм. Вы можете создать его на другой номер телефона. Выйти из аккаунта под одним логином и зайти уже под новым. Далее переходите по ссылке на своего бота и тестируете его, как новый пользователь.

Итак, в этой статье с видеоуроком мы разобрали процесс создания своего бота в Телеграм, научились задавать команды для нашего бота и ответы на них, а также сделали меню из этих команд для удобства пользователей.

Друзья, если у вас есть вопросы по уроку, буду рада подсказать в комментариях.

Желаю успехов!

С уважением, Виктория Карпова

ТАКЖЕ РЕКОМЕНДУЮ ЭТИ МАТЕРИАЛЫ:

Как установить мессенджер Телеграм и начать им пользоваться Как создать и использовать канал в Telegram Как пользоваться блог-платформой Telegraph от Telegram

Обсудить …

22.06.2022     👁 584

image В продолжении предыдущей статьи “Как создать простого бота для Телеграм на PHP”, представляем вам продолжение данной темы: “Как добавить меню в простого Телеграм бота на PHP”. Добавляем пункты меню в Телеграм бота на PHP Итак, бота вы уже сделали, благодаря предудущей статье. Будем использовать код из этой статьи, который вы можете скачать тут: verysimple_bot.zip (2 Kb). Для этого перепишем функцию отправки сообщения от бота message_to_telegram Для вывода меню снизу сообщения бота, нужно при каждой передачи сообщения от бота в диалог, передавать массив $reply_markup в формате json. Мы будем использовать тип меню, который привязан к сообщению, поэтому и нужно передавать каждый раз, а бывает меню привязанное ко всему диалогу. При этом будем выводить меню по-умолчанию, если мы не передали массив. Это нужно для организации меню второго уровня. Сделаем это на примере входа в раздел Услуги и там выведем подменю в виде нескольких услуг. Общее меню будет: О нас, Услуги, Контакты, Заявка Меню раздела Услуги будет содержать: Услуга 1, Услуга 2 При этом при нажатии на меню будет происходить передача команды в диалог бота, например при нажатии на “О нас” будет передана команда /about — это наиболее простой способ организации диалогового меню. function message_to_telegram($bot_token, $chat_id, $text, $reply_markup = '') { $ch = curl_init(); if ($reply_markup == '') { $btn[] = ["text"=>"О нас", "callback_data"=>'/about']; $btn[] = ["text"=>"Услуги", "callback_data"=>'/srv']; $btn[] = ["text"=>"Контакты", "callback_data"=>'/contact']; $btn[] = ["text"=>"Заявка", "callback_data"=>'/order']; $reply_markup = json_encode(["keyboard" => [$btn], "resize_keyboard" => true]); } $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); } Теперь перепишем бота, добавив обработку меню бота В частности выведем раздел Услуги и подменю в нем. И дополним обработку вывода текста по Услуга 1 и Услуга 2. /** * Very simple chat bot @verysimple_bot_menu by Novelsite.ru * + menu * 22.06.2022 */ header('Content-Type: text/html; charset=utf-8'); // на всякий случай досообщим PHP, что все в кодировке UTF-8 $site_dir = dirname(dirname(__FILE__)).'/'; // корень сайта $bot_token = '1234567899:AAKJhkkjhkjhKhKhjkhkhk_kJhgkjhJhgjghjhG'; // токен вашего бота $data = file_get_contents('php://input'); // весь ввод перенаправляем в $data $data = json_decode($data, true); // декодируем json-закодированные-текстовые данные в PHP-массив $order_chat_id = '123456789'; //chat_id менеджера компании для заявок $bot_state = ''; // состояние бота, по-умолчанию пустое // Для отладки, добавим запись полученных декодированных данных в файл message.txt, // который можно смотреть и понимать, что происходит при запросе к боту // Позже, когда все будет работать закомментируйте эту строку: file_put_contents(__DIR__ . '/message.txt', print_r($data, true)); // Основной код: получаем сообщение, что юзер отправил боту и // заполняем переменные для дальнейшего использования if (!empty($data['message']['text'])) { $chat_id = $data['message']['from']['id']; $user_name = $data['message']['from']['username']; $first_name = $data['message']['from']['first_name']; $last_name = $data['message']['from']['last_name']; $text = trim($data['message']['text']); $text_array = explode(" ", $text); // получим текущее состояние бота, если оно есть $bot_state = get_bot_state ($chat_id); // если текущее состояние бота отправка заявки, то отправим заявку менеджеру компании на $order_chat_id if (substr($bot_state, 0, 6) == '/order') { $text_return = " Заявка от @$user_name: Имя: $first_name $last_name $text "; message_to_telegram($bot_token, $order_chat_id, $text_return); set_bot_state ($chat_id, ''); // не забудем почистить состояние на пустоту, после отправки заявки } // если состояние бота пустое -- то обычные запросы else { // вывод информации Помощь if ($text == '/help') { $text_return = "Привет, $first_name $last_name, вот команды, что я понимаю: /help - список команд /about - о нас /order - оставить заявку "; message_to_telegram($bot_token, $chat_id, $text_return); set_bot_state ($chat_id, '/help'); } // вывод информации о нас elseif ($text == '/about') { $text_return = "verysimple_bot: Я пример самого простого бота для телеграм, написанного на PHP. Мой код можно скачивать, дополнять, исправлять. Код доступен в этой статье: https://www.novelsite.ru/kak-sozdat-prostogo-bota-dlya-telegram-na-php.html также есть дополнение статиь про добавление пунктов меню в бота: https://www.novelsite.ru/dobavlyaem-punkty-menyu-telegram-bota-na-php.html "; message_to_telegram($bot_token, $chat_id, $text_return); set_bot_state ($chat_id, '/about'); } // вывод информации об услугах и подменю elseif ($text == '/srv') { $num = (int)$text_array[array_key_last($text_array)]; if ($num == 1) { $ret = ["text"=>"⬅️ Вернуться", "callback_data"=>'/srv'],; $text_return = "Услуга 1: --------------------- Текст об услуга 1 услуга 1 услуга 1 услуга 1 услуга 1 услуга 1 услуга 1. "; } elseif ($num == 2) { $ret = ["text"=>"⬅️ Вернуться", "callback_data"=>'/srv'],; $text_return = "Услуга 2: --------------------- Текст об услуга 2 услуга 2 услуга 2 услуга 2 услуга 2 услуга 2 услуга 2. "; } else { $ret = []; $text_return = "Услуги: --------------------- 1. Услуга 1 2. Услуга 2 "; } $reply_markup = json_encode([ "inline_keyboard" => [ [ ["text"=>"Услуга 1", "callback_data"=>'/srv 1'], ["text"=>"Услуга 2", "callback_data"=>'/srv 2'], ], $ret, ] ]); message_to_telegram($bot_token, $chat_id, $text_return, $reply_markup); set_bot_state ($chat_id, '/srv'); } // переход в режим Заявки elseif ($text == '/order') { $text_return = "$first_name $last_name, для подтверждения Заявки введите текст вашей заявки и нажмите отправить. Наши специалисты свяжутся с вами в ближайшее время! "; message_to_telegram($bot_token, $chat_id, $text_return); set_bot_state ($chat_id, '/order'); } } } // функция отправки сообщения от бота в диалог с юзером function message_to_telegram($bot_token, $chat_id, $text, $reply_markup = '') { $ch = curl_init(); if ($reply_markup == '') { $btn[] = ["text"=>"О нас", "callback_data"=>'/about']; $btn[] = ["text"=>"Услуги", "callback_data"=>'/srv']; $btn[] = ["text"=>"Контакты", "callback_data"=>'/contact']; $btn[] = ["text"=>"Заявка", "callback_data"=>'/order']; $reply_markup = json_encode(["keyboard" => [$btn], "resize_keyboard" => true]); } $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); } // сохранить состояние бота для пользователя function set_bot_state ($chat_id, $data) { file_put_contents(__DIR__ . '/users/'.$chat_id.'.txt', $data); } // получить текущее состояние бота для пользователя function get_bot_state ($chat_id) { if (file_exists(__DIR__ . '/users/'.$chat_id.'.txt')) { $data = file_get_contents(__DIR__ . '/users/'.$chat_id.'.txt'); return $data; } else { return ''; } } Скачать данный пример: verysimple_bot_menu.php (2.7 kb) P.S. Для текста в кнопках меню бота можно использовать Эмодзи. Не все корректно работают, но многие общеупотребительные работают правильно. Вставлять обычным образом копи-паст, а искать в интренете поиском например так: “Эмодзи для сайта”. image Николай Комарков

Обсуждение статьи в телеграм-канале image

Оцените статью
Рейтинг автора
4,8
Материал подготовил
Егор Новиков
Наш эксперт
Написано статей
127
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий