"Создание чат-бота в Telegram" (конкурс)

grabshot

Script Kiddie
25.05.2020
15
7
6
Здравствуйте, пользователи и участники форума! Мне хотелось бы поделиться с Вами весьма полезной и интересной информацией, но сразу предупреждаю, опыта у меня мало, мне ещё предстоит изучить кучу литературы...ну а пока, приятного вам чтения и спасибо, что уже смогли уделить мне несколько секунд своей жизни!
В данной статье я бы хотела поделиться краткой информацией по созданию чат-бота в Telegram, так как совсем недавно сама интересовалась и блуждала по просторам интернета, дабы найти ответы на свои вопросы, касающиеся этой темы. Ну что ж, поехали...
Для начала стоит разобраться, что же из себя представляет чат-бот. Это своего рода программа, которая имитирует живого собеседника в мессенджере, отвечая на вопросы собеседника разными заранее предоставленными вариантами разработчиками чат-бота. Так же чат-бот умеет задавать встречные вопросы и запрашивать информацию. Что больше меня удивило, так это наличие чат-бота психолога 🧐
Хватит объяснений- переходим к созданию своего детища:
1) бот в Telegram создается при помощи другого бота под названием BotFather. Отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов, и адрес. Например, «Бот-консультант» с адресом "sovet_bot";
2) если адрес не занят, а имя введено правильно, BotFather пришлет в ответ сообщение с токеном — «ключом» для доступа к созданному боту. Его нужно сохранить и никому не показывать.
1b28d2e0b91a8e.png
3) теперь создаём канал с любым названием и адресом, и переходим в его настройки. Всё, что требуется — добавить в список администраторов созданного нами бота — именно он будет публиковать заметки в канал;4) создали бота- теперь надо воспитать, научить бота отправлять новости с сайта в созданный канал. Для этого воспользуемся популярным сервисом для автоматизации IFTTT. С его помощью можно создавать инструкции для работы бота. В нашем случае она выглядит так: каждый раз, когда в RSS-ленте сайта появляется новая запись, он должен отправлять сообщение в канал Telegram;
4) переходим в раздел IFTTT "My Applets", нажимаем на кнопку "New Applet" и далее на ссылку "This". Находим в списке функций триггер Feed, New feed item и указываем URL-адрес нашей RSS-ленты. Например, у Wordpress-сайтов она обычно расположена по адресу example.com/feed/.
5) вместо RSS-ленты можно отслеживать появление новых записей в Twitter или Facebook-аккаунте — для каждой функции в IFTTT предусмотрены отдельные модули. Теперь переходим ко второму шагу — выбираем действие, которое будет выполняться при обнаружении новой записи в RSS. Нажимаем на "That" и ищем Maker Webhook, "Make a web request" — с помощью этого модуля можно отправлять запросы к любым сервисам. В нашем случае — к боту в Telegram.
1598789155353.png
6) Body — поле для шаблона запроcа, который будет отправляться в Telegram. В нём указываем, в какой канал нужно отправить сообщение и что в нём должно быть написано: {"chat_id":"@адрес_канала", "text":"{{EntryTitle}} {{FeedUrl}}"}

  • chat_id — адрес канала, в который необходимо отправить сообщение. Таким образом одного бота можно подключить сразу к нескольким каналам. В качестве адресата можно указать и конкретного пользователя. В таком случае вместо адреса канала необходимо указать его ID (можно получить при помощи бота).
  • text — содержание сообщения. Например, заголовок материала из RSS (EntryTitle), его содержание (EntryContent) и ссылка (FeedUrl). Список доступных опций можно посмотреть по кнопке Ingredient.
Если всё настроено верно, бот отправит сообщение из RSS-ленты в канал. У триггера в IFTTT есть задержка, поэтому сообщение, появившееся в RSS-ленте, отправится в Telegram не сразу, а спустя 30-60 минут.
В качестве условия для отправки сообщения можно выбрать любой другой сценарий, доступный на IFTTT. Например, Weather Underground умеет каждый день отправлять сообщение с прогнозом погоды на завтра. Триггер Stocks можно настроить на отправку стоимости акций при закрытии торгов. Теперь решим более сложную задачу — научим созданного бота отвечать на сообщения пользователей. Например, присылать по команде прайс-лист, контакты или отвечать на часто задаваемые вопросы клиентов.
7) Подключаем сервер. На этом этапе понадобится веб-хостинг и сертификат SSL, который можно получить бесплатно с помощью сервиса Let's Encrypt. Удобнее всего создать отдельный поддомен для бота — например, bot.example.com — и разместить на нём один файл index.php. Внутри файла размещаем код простейшего бота c сайта Telegrаm.
42d5dbe6e66743.png
8) В код бота нужно внести всего два изменения:
- в строке define('BOT_TOKEN', '12345678:replace-me-with-real-token'); вместо 12345678:replace-me-with-real-token написать токен, полученный на первом шаге;
- в строке define('WEBHOOK_URL', 'https://my-site.example.com/secret-path-for-webhooks/'); вместо https://my-site.example.com/secret-path-for-webhooks/ указать URL-адрес файла с кодом для бота: https://bot.example.com/index.ph
9) Связываем Telegram-бота и сервер.
Теперь необходимо связать Telegram и файл на сервере, чтобы запросы, отправленные боту в мессенджере, обрабатывал наш скрипт. Для этого понадобится консоль. У разных хостинг-провайдеров она может находиться в разных разделах интерфейса управления сайтом. Кроме того, можно воспользоваться программой Terminal на macOS, введя через неё команду ssh имя_пользователя@адрес_домена. После ввода пароля, печатаем для нашего поддомена простую команду: php -f /var/www/bot.example.com/index.php
1598790437190.png
10) Если всё сделано правильно, бот сразу отправит в Telegram сообщение "Hello".
11)
Настраиваем текст автоответов бота
Добавим различные сценарии для ответов бота. Открываем созданный ранее файл index.php и находим в нём строчку:

} else if ($text === "Hello" || $text === "Hi") { apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'Nice to meet you'));
  • Hello и Hi — текст пользователя, на который бот должен отреагировать.
  • Nice to meet you — ответ бота на отправленное пользователем сообщением.

Ниже в коде добавляем дополнительные ответы. Например, чтобы в зависимости от отправленного слова, бот присылал необходимую информацию пользователю (как в боте vc.ru для «ВКонтакте»):

} else if ($text === "Цены") { apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'Прайс-лист можно скачать по ссылке example.com/price')); } else if ($text === "Контакты") { apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'Контактный адрес для связи — [email protected]'));
Можем указать любое количество фраз и ответов на них. Также можно изменить кнопки, доступные пользователю во время работы с ботом. Находим строчку кода 'keyboard' => array(array('Hello', 'Hi')) и вместо Hello и Hi указываем «Цены» и «Контакты».
После сохранения файла изменения сразу вступят в силу.
Вот и всё, надеюсь, в дальнейшеим кому-то из Вас данная статья бует полезна! Спасибо за внимание, до новых встреч)
 

Вложения

  • Like
Реакции: Lara Croft и Tomas Shelby

admin

Administrator
Команда форума
05.03.2020
1 844
11
78
К КОНКУРСУ ДОПУЩЕНА
 

Об LS-LA

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

About LS-LA

  • We, a group of like-minded people, whose main goal is to increase the level of knowledge and skills.
    Not forgetting about everyone’s material well-being)

Быстрая навигация

Пользовательское меню