User Tools

Site Tools


bot_on_php

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
bot_on_php [2021/02/14 20:19] chifekbot_on_php [2023/09/14 06:06] (current) – external edit 127.0.0.1
Line 16: Line 16:
  
 1) Открываете чат с @BotFather; 1) Открываете чат с @BotFather;
 +
 2) Вводите или выбираете из списка команду /newbot; 2) Вводите или выбираете из списка команду /newbot;
 +
 3) Отправляете желаемое название для бота; 3) Отправляете желаемое название для бота;
 +
 4) Пишете юзернейм бота, по которому его будут находить через поиск. Обязательно на конце вашего юзернейма должно быть слово «bot» или «_bot». Например, NetologyRSSbot; 4) Пишете юзернейм бота, по которому его будут находить через поиск. Обязательно на конце вашего юзернейма должно быть слово «bot» или «_bot». Например, NetologyRSSbot;
 +
 5) По желанию можно сразу настроить полное или краткое описание, список команд и аватарку. 5) По желанию можно сразу настроить полное или краткое описание, список команд и аватарку.
  
Line 46: Line 50:
  
 Перво-наперво привязываем через метод SetWebhook бота к нашему файлу-обработчику. Сделать это можно при помощи библиотеки, но есть вариант быстрее и проще – это построить вот такую ссылку: Перво-наперво привязываем через метод SetWebhook бота к нашему файлу-обработчику. Сделать это можно при помощи библиотеки, но есть вариант быстрее и проще – это построить вот такую ссылку:
 +<code>
 https:// api. telegram. org/bot375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s/setWebhook?url=https:// yoursitehere .ru/directory/bot.php, https:// api. telegram. org/bot375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s/setWebhook?url=https:// yoursitehere .ru/directory/bot.php,
 +</code>
 где где
 +<code>
 375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s — это наш токен, 375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s — это наш токен,
 https:// yousitehere. ru/directory/bot.php — ссылка на файл-обработчик на нашем сайте. https:// yousitehere. ru/directory/bot.php — ссылка на файл-обработчик на нашем сайте.
 +</code>
  
 Открыв в браузере эту ссылку, должен прийти JSON-ответ со значением «Webhook was set», что будет означать, что вебхук установлен, и теперь все запросы от пользователей будут присылаться по адресу файла-обработчика.  Открыв в браузере эту ссылку, должен прийти JSON-ответ со значением «Webhook was set», что будет означать, что вебхук установлен, и теперь все запросы от пользователей будут присылаться по адресу файла-обработчика. 
 +
 +
  
 Переходим к самому главному — обработке этих самых запросов и написанию функционала бота. Переходим к самому главному — обработке этих самых запросов и написанию функционала бота.
  
-Ниже представлен полный листинг файла-обработчика: 
  
  
 +Ниже представлен полный листинг файла-обработчика:
  
-'' 
-<?php 
  
-    include('vendor/autoload.php'); //Подключаем библиотеку 
-    use Telegram\Bot\Api;  
  
 +<code>
 +    include('vendor/autoload.php');//Подключаем библиотеку
 +    use Telegram\Bot\Api;
     $telegram = new Api('375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s'); //Устанавливаем токен, полученный у BotFather     $telegram = new Api('375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s'); //Устанавливаем токен, полученный у BotFather
     $result = $telegram -> getWebhookUpdates(); //Передаем в переменную $result полную информацию о сообщении пользователя     $result = $telegram -> getWebhookUpdates(); //Передаем в переменную $result полную информацию о сообщении пользователя
-     
     $text = $result["message"]["text"]; //Текст сообщения     $text = $result["message"]["text"]; //Текст сообщения
     $chat_id = $result["message"]["chat"]["id"]; //Уникальный идентификатор пользователя     $chat_id = $result["message"]["chat"]["id"]; //Уникальный идентификатор пользователя
     $name = $result["message"]["from"]["username"]; //Юзернейм пользователя     $name = $result["message"]["from"]["username"]; //Юзернейм пользователя
     $keyboard = [["Последние статьи"],["Картинка"],["Гифка"]]; //Клавиатура     $keyboard = [["Последние статьи"],["Картинка"],["Гифка"]]; //Клавиатура
- 
     if($text){     if($text){
          if ($text == "/start") {          if ($text == "/start") {
Line 101: Line 107:
     $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Отправьте текстовое сообщение." ]);     $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Отправьте текстовое сообщение." ]);
     }     }
-?> +</code>
-''+
  
  
Line 108: Line 113:
    
  
-1. Сначала мы подключаем скачанную библиотеку, указав путь (лучше полный) до файла автозагрузчика.+==== 1. Сначала мы подключаем скачанную библиотеку, указав путь (лучше полный) до файла автозагрузчика. ==== 
  
 <code> <code>
Line 115: Line 121:
 </code> </code>
  
-2. Создаем экземпляр класса в переменной $telegram и передаем в него наш токен. +==== 2. Создаем экземпляр класса в переменной $telegram и передаем в него наш токен. ==== 
 + 
  
 В переменной $result получаем информацию о сообщении, которое пришлет нам Telegram. В переменной $result получаем информацию о сообщении, которое пришлет нам Telegram.
Line 124: Line 131:
 </code> </code>
  
-3. Затем определяем главные переменные: текстовое сообщение, уникальный идентификатор пользователя и его юзернейм. Если предстоит работа с БД, то не забывайте про фильтрацию (или лучше используйте PDO).+==== 3. Затем определяем главные переменные: текстовое сообщение, уникальный идентификатор пользователя и его юзернейм. Если предстоит работа с БД, то не забывайте про фильтрацию (или лучше используйте PDO). ====
  
 +
 +<code>
 $text = $result["message"]["text"]; //Текст сообщения $text = $result["message"]["text"]; //Текст сообщения
 $chat_id = $result["message"]["chat"]["id"]; //Уникальный идентификатор пользователя $chat_id = $result["message"]["chat"]["id"]; //Уникальный идентификатор пользователя
 $name = $result["message"]["from"]["username"]; //Юзернейм пользователя $name = $result["message"]["from"]["username"]; //Юзернейм пользователя
 +</code>
  
-4. Создаем нашу клавиатуру, состоящую из трех кнопок. 
  
 +==== 4. Создаем нашу клавиатуру, состоящую из трех кнопок. ====
 +
 +
 +
 +<code>
 $keyboard = [["Последние статьи"],["Картинка"],["Гифка"]]; //Клавиатура $keyboard = [["Последние статьи"],["Картинка"],["Гифка"]]; //Клавиатура
 +</code>
 +
 +
 +==== 5. Теперь, когда мы обозначили все переменные, можно перейти к обработке полученного сообщения. Для этого можно использовать конструкцию switch-case либо if-else. Так как принципиальной разницы между ними нет, остановимся на втором варианте, как наиболее привычном. ====
  
-5. Теперь, когда мы обозначили все переменные, можно перейти к обработке полученного сообщения. Для этого можно использовать конструкцию switch-case либо if-else. Так как принципиальной разницы между ними нет, остановимся на втором варианте, как наиболее привычном. 
  
 В самом начале проверяем, заполнена ли переменная $text и является ли сообщение пользователя текстовым. В самом начале проверяем, заполнена ли переменная $text и является ли сообщение пользователя текстовым.
Line 151: Line 168:
 Если нет, то отправляем пользователю с помощью метода sendMessage сообщение с просьбой ввести текстовое сообщение. Если нет, то отправляем пользователю с помощью метода sendMessage сообщение с просьбой ввести текстовое сообщение.
  
-6. Рассмотрим вариант, когда пользователь прислал сообщение с командами /start или /help+==== 6. Рассмотрим вариант, когда пользователь прислал сообщение с командами /start или /help ==== 
  
  
Line 170: Line 188:
 Реализуется это с помощью метода replyKeyboardMarkup, параметрами которого являются: Реализуется это с помощью метода replyKeyboardMarkup, параметрами которого являются:
  
 +<code>
 'keyboard' => $keyboard, передаем нашу клавиатуру 'keyboard' => $keyboard, передаем нашу клавиатуру
 'resize_keyboard' => true, клавиатура будет сжата в размерах. 'resize_keyboard' => true, клавиатура будет сжата в размерах.
 'one_time_keyboard' => false, клавиатура не исчезнет после нажатия на какую-то кнопку. 'one_time_keyboard' => false, клавиатура не исчезнет после нажатия на какую-то кнопку.
 +</code>
 +
 +==== 7. После появления клавиатуры пользователь явно захочет попробовать потыкать на расположенные на ней кнопки, и вот что у нас «под капотом» в этом случае: ====
  
-7. После появления клавиатуры пользователь явно захочет попробовать потыкать на расположенные на ней кнопки, и вот что у нас «под капотом» в этом случае: 
  
 <code> <code>
Line 191: Line 212:
         }         }
 </code> </code>
-8. Для отправки картинки используется метод sendPhoto, для отправки гифки – sendDocument. В обоих случаях Telegram позволяет передавать прямую ссылку на файл, что безусловно очень удобно, но не так быстро, как если бы мы передавали file_id уже отправленной на сервера Telegram картинки или гифки.+==== 8. Для отправки картинки используется метод sendPhoto, для отправки гифки – sendDocument. В обоих случаях Telegram позволяет передавать прямую ссылку на файл, что безусловно очень удобно, но не так быстро, как если бы мы передавали file_id уже отправленной на сервера Telegram картинки или гифки. ==== 
 + 
 + 
 +==== 9. Для получения последних статей используется простой парсинг RSS ленты Нетологии при помощи встроенной в PHP функции simplexml_load_file. ====
  
-9. Для получения последних статей используется простой парсинг RSS ленты Нетологии при помощи встроенной в PHP функции simplexml_load_file. 
  
 В параметрах метода sendMessage можно заметить два новых значения: В параметрах метода sendMessage можно заметить два новых значения:
Line 206: Line 229:
 чтобы к сообщению со ссылкой не подгружалось превью. чтобы к сообщению со ссылкой не подгружалось превью.
  
-10. В качестве смайла (стрелка вправо) используются символы \xE2\x9E\xA1. Список всех смайлов в таком виде можно найти на специальном сайте.+==== 10. В качестве смайла (стрелка вправо) используются символы \xE2\x9E\xA1. Список всех смайлов в таком виде можно найти на специальном сайте. ====
  
  
  
-11. После того, как вы протестируете бота и будете уверены в его работоспособности, можно отправлять его на всеобщее обозрение. + 
 +==== 11. После того, как вы протестируете бота и будете уверены в его работоспособности, можно отправлять его на всеобщее обозрение. ==== 
 + 
  
 Благодаря удобному API, боты Telegram могут стать хорошей платформой для автоматизации рутинных действий, настройки уведомлений, удобному и быстрому получению информации и созданию игр. Благодаря удобному API, боты Telegram могут стать хорошей платформой для автоматизации рутинных действий, настройки уведомлений, удобному и быстрому получению информации и созданию игр.
Line 217: Line 242:
  
 А анализировать активность пользователей можно с помощью бесплатного инструмента для аналитики ботов от Яндекса — Botan. А анализировать активность пользователей можно с помощью бесплатного инструмента для аналитики ботов от Яндекса — Botan.
 +
 +
 +[[https://habr.com/ru/company/netologyru/blog/326174/|ссылка на статью]]
 +
 +
bot_on_php.1613333973.txt.gz · Last modified: 2023/09/14 06:06 (external edit)