November 1, 2018

Инструкция: Создание бота для Telegram без навыков программирования

Тестовый бот

В этом гайде, за 6 шагов, сделаем простого бота. У него будет всего 2 функции: публикация новостей из ФБ в телеграм + автоматические ответы на вопросы.

Шаг 1: Батя ботов

Бот в Telegram создается при помощи другого отца ботов @BotFather.

Алгоритм прост:

  1. Открываем бота @BotFather
  2. Отправляем команду /newbot
  3. Создаём имя бота и адрес (например, «Бот для Диджиталов» с адресом «dgtlsnewsbot»)

Если всё окей, BotFather выдаст токен — ключ для доступа к боту. Его лучше не терять и никому не передавать.

Дополнительно:

Через BotFather можно установить аватар бота, добавить описание, изменить имя бота, и всё прочее по мелочам оформления.

Шаг 2: Назначаем администратора

Бот готов, теперь ему нужен канал, в котором он будет работать.

После создания канала нужно добавить бота в список администраторов — тогда он сможет публиковать заметки в канал

Шаг 3: Обучение бота

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

Наш алгоритм:

Если в RSS-ленте сайта появляется новая запись, бот дублирует её в указанный Telegram-канал.

Инструкция по IFTTT (1 этап):

  1. открываем раздел "My Applets"
  2. нажимаем на кнопку "New Applet"
  3. далее жмём на ссылку "This".
  4. выбираем в списке функций триггер Feed
  5. клацаем New feed item и указываем URL-адрес RSS-ленты
Вместо RSS-ленты можно выбрать репостинг из Twitter или Facebook — для каждой соцсети в IFTTT есть отдельные модули (ссылки на модули вставлены в названия соцсетей).

Инструкция по IFTTT (2 этап):

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

  1. нажимаем на "That"
  2. выбираем Maker Webhook
  3. там клацаем "Make a web request" (модуль помогает задать параметр, что при выполненном условии IF делать боту и в какой веб-источник)
  4. в открывшейся форме в поле URL пишем ссылку https://api.telegram.org/bot[ТОКЕН]/sendMessage
  5. выбираем "Метод: POST", "тип контента: application/json"

Примечание:

Body — поле для шаблона запроcа, который будет отправляться в Telegram.

В нём указываем, в какой канал нужно отправить сообщение и что в нём должно быть написано:

{"chat_id":"@адрес_канала", "text":"{{EntryTitle}} {{FeedUrl}}"}

  • chat_id — адрес канала, в который полетит сообщение. Одного бота можно подключить сразу к нескольким каналам. В качестве адресата можно указать и конкретного пользователя.
  • text — содержание сообщения. Например, заголовок материала из RSS (EntryTitle), его содержание (EntryContent) и ссылка (FeedUrl). Больше функций можно посмотреть в кнопке +Ingredient.

Если всё сделано без ошибок, бот перешлёт пост из RSS-ленты в канал. В IFTTT есть небольшая задержка, поэтому репосты из RSS-ленты попадают в Telegram в среднем через 30-60 минут.

Следующая задача

Научим бота автоматическим ответам по сценарию.

Шаг 4: Сервер

Теперь нам нужен веб-хостинг и сертификат SSL. Для этого воспользуемся бесплатным сервисом "Let's Encrypt".

Для бота лучше сделать отдельный поддомен — например, bot.example.com — и разместить на нём один файл index.php. Так проще не запутаться.

Внутри файла размещаем код бота c сайта Telegram.

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

В код бота нужно внести всего два изменения:

  • в строке 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.php.

Шаг 5: Подключаем бота к серверу

Чтобы бот работал, нужно связать Telegram и файл на сервере. Тогда скрипт будет обрабатывать все сообщения, отправленные боту.

Для этого понадобится консоль.

У разных хостинг-провайдеров она может находиться в разных разделах интерфейса управления сайтом.

Альтернатива для macOS: можно воспользоваться программой Terminal, ввести через неё команду [ssh имя_пользователя@адрес_домена].

После ввода пароля, печатаем для нашего поддомена простую команду:

php -f /var/www/bot.example.com/index.php

Если всё сделано правильно, бот напишет в Telegram сообщение "Hello".

Шаг 6: Настраиваем текст автоответов бота

Добавим различные сценарии для ответов бота. Открываем созданный ранее файл 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 — реакция бота на текст

Ниже в коде можно дописать сценарий и на другие ответы:

} else if ($text === "Цены") {

apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'Прайс-лист можно скачать по ссылке example.com/price'));

Ограничений по количеству фраз и ответов на них нет. Можно изменить кнопки для работы с ботом. Для этого в строчке кода 'keyboard' => array(array('Hello', 'Hi')) вместо «Hello» и «Hi»пишем «Цены» и «Контакты».

Изменения вступят в силу сразу после сохранения файла.

Автор - Vlad Teplinskiy

Подписывайся на наш канал: https://t.me/business_ru

Чат для предпринимателей - https://t.me/business_ru_chat