Как создать бота в telegram без программирования. Flibusta, Антон и прочие боты в telegram — обзор
А если вы не подписались на бота от сайт, то пришла пора сделать это! @iPhonesRu_Bot
Сейчас очень модно заводить Telegram-боты. У каждого крупного интернет-ресурса или крупной компании есть свой бот, в которых клиенты получают ответы на вопросы или читают новости. Если у вас есть свой сайт, группа в соцсети или просто интересная идея бота, то эта инструкция поможет вам с минимальным усилиями внести свой вклад в волшебный мир Telegram.
Есть два пути создания ботов. Первый - написать приложение с помощью Telegram API, а второй - воспользоваться сервисом для создания ботов. Один из таких, manybot.io , мы будем использовать в статье.
Устанавливаем Telegram
Инструкцию из статьи можно выполнить в версии Telegram для любой платформы:
- Windows/Linux/OS X (по ссылке откроется версия для операционной системы с которой сидите)
Сама я буду использовать версию для OS X, так как без полноценной клавиатуры создавать бота не совсем удобно.
Создаем бота
1. Набираем в поиске Manybot, кликаем на значок бота и нажимаем на кнопку Start :
2. Нажимаем на кнопку Добавить нового бота
:
4. Переходим в @BotFather
, нажимаем кнопку Start
и вводим команду /newbot
:
6. Вводим имя бота, которое будет отображаться при поиске и техническое имя бота, копируем полученный API-токен:
7. Возвращаемся в @Manybot и вставляем в него API-токен из буфера обмена:
8. Указываем описание бота:
9. Бот готов:
10. Находим свой бот через поиск и начинаем пользоваться:
Создаем свою команду
В хорошем боте должны быть команды. Чтобы пользователь вводил запрос, а в ответ ему приходило что-то интересное/полезное. Вот инструкция, как создать простейшую команду:
1. Набираем /commands
:
2. Набираем имя новой команды и текст, который она будет выдавать в ответ (при желании к тексту можно прикрепить файлы):
3. Нажимаем кнопку Сохранить
и дожидаемся завершения создания команды:
Для того, чтобы отредактировать команду /hello
надо набрать /commands
, /hello
:
Чтобы увидеть ответ команды, надо нажать кнопку Показать команду
. К сожалению, я не нашла способа проверить как будет выглядеть бот в приложении у подписчиков, кроме как попросить кого-нибудь зайти со своего аккаунта и посмотреть:
Добавляем пункт в меню
При желании, для команды можно сделать кнопку в меню, которая будет ее запускать.
1. Набираем /commands
:
2. Нажимаем на кнопку Настроить главное меню
, а затем на кнопку Добавить пункт меню
:
3. Выбираем из списка команду, которую хотим добавить в меню и указываем название для кнопки:
Включаем автопостинг из соцсетей
В ботах можно настроить трансляцию новостей из Twitter, Youtube, VK или RSS.
1. Набираем команду /autoposting
:
2. Нажимаем кнопку с нужной соцсетью и указываем ссылку на страницу:
Создаем отложенный пост
В ботах Telegram можно отправлять сообщения, которые будут приходить всем его подписчикам. Вот инструкция, как создать такое сообщение и запланировать его отправку на определенное время:
1. Набираем команду /newpost
:
2. Вводим текст поста и нажимаем на кнопку Отложить пост
, указываем текущее время:
3. Указываем время поста и сохраняем пост:
Собираем данные
Еще с помощью ботов можно проводить опросы среди подписчиков:
1. Набираем /commands
, выбираем пункт меню Создать команду
и вводим имя для новой команды:
2. Нажимаем на кнопку Добавить вопрос
, выбираем тип ответа и вводим текст вопроса:
В последнее время Telegram у всех на слуху. Нужно отдать должное отделу маркетинга этого приложения, шумиху подняли на славу. Одной из основных "фишек" Telegram является его якобы защищённость - по словам Павла Дурова вся переписка между пользователями шифруется. Более того, ни одна спец.служба мира не будет иметь доступ к вашим сообщениям. Но в данной статье речь не об этом. Сегодня хотелось бы поговорить о не менее крутой фишке в Telegram, а именно о ботах. Помимо того, что в сети уже полно информации о различного рода Telegram ботах (github бот, например), мессенджер открыл своё API для разработчиков, и теперь каждый может создать своего собственного бота с блэкджеком и плюшками.
В статье я приведу пример написания онлайн бота с использованием Python и Django фреймворка. То есть мы "запилим" полноценное веб-приложение, которое будет крутиться на удалённом хосте и принимать команды от пользователей. Весь исходный текст доступен в моём github репозитории .
Документация, описывающая процесс взаимодействия с ботами Telegram находится . Чтобы не изобретать велосипед, я нашел неплохую Python библиотеку, реализующую все основные функции ботов - telepot . Как я уже упоминал ранее, для того, чтобы обслуживать пользователей нашего бота мы будет разрабатывать веб-приложение, используя Django фреймворк.
Как создать Telegram бота?
Для начала нам необходимо зарегистрировать в Telegram нашего будущего бота. Это делается следующим образом:
- Необходимо установить приложение Telegram на телефон или компьютер. Скачать приложение можно
- Добавляем к себе в контакт-лист бота с именем BotFather
- Запускаем процедуру "общения" с ботом нажатием кнопки Start . Далее перед нами предстанет список команд точно как на скриншоте.
- Для того, чтобы создать нового бота необходимо выполнить команду /newbot и следовать инструкциям. Обратите внимание, что username для бота должен всегда содержать в конце слово bot . Например, DjangoBot или Django_bot.
- Для нашего бота я выбрал имя PythonPlanetBot, так как его основная функция заключается в парсинге RSS feed сайта Python Planet и выдача информации о последних постах пользователю:)
После создания бота, обратите внимание на строку с текстом:
Use this token to access the HTTP API:
За которой следует т.н. token по которому мы будем манипулировать нашим ботом. Помимо функции создания telegram бота, BotFather также имеет ряд других возможностей:
- Присвоить боту описание
- Установить аватар
- Поменять token
Приступаем к кодированию
Как я ранее уже упоминал, мы будем писать веб-приложение на Django . Но стоит отметить, что это делать необязательно. Можно обойтись и обычным Python скриптом, правда в этом случае необходимо будет периодически опрашивать Telegram на предмет новых запросов от пользователей бота (используя метод getUpdates ) и увеличивая offset для получения самых последних данных без повторений. В Telegram существует два взаимоисключающих метода получения команд/сообщений для вашего бота.
- Использование вызова API метода getUpdates
- Установка Webhook
Установка Webhook заключается в передаче боту специального URL адреса на который будет поступать POST запрос каждый раз, когда кто-то начнёт посылать сообщения боту. Именно этот вариант мы и будем использовать для взаимодействия между ботом и его пользователем. Для того, чтобы задать URL, необходимо использовать API метод setWebhook . Отмечу, что URL должен начинаться с https, то есть иметь защищённое SSL соединение с валидным сертификатом. Telegram разрешает использовать самоподписанный сертификат, правда для этого необходимо в методе setWebhook передавать также публичный ключ в PEM формате (ASCII base64). Либо же можно получить от Let"s Encrypt.
Подробнее о getUpdates и setWebhook можно почитать соответственно и .
Итак, вернёмся к python библиотеке для работы с Telegram - telepot . На текущий момент самой последней её версий является 6.7. Устанавливаем её в виртуальное окружение python virtualenv:
Pip install telepot
Самый простой вариант взаимодействия с Telegram ботом на Python выглядит следующим образом:
Import telepot token = "123456" TelegramBot = telepot.Bot(token) print TelegramBot.getMe()
Переменной token присваиваем значение токена, полученного при создании бота через BotFather. В итоге после выполнения этих команд мы получим:
{u"username": u"PythonPlanetBot", u"first_name": u"Python Planet Bot", u"id": 199266571}
Поздравляю! Мы вызывали самый простой API запрос getMe, который возвращает информацию о боте: username, id, first_name.
Добавим нашего бота к себе в контакт-лист и пошлём ему первую стандартную команду /start
Выполняем код:
TelegramBot.getUpdates() [{u"message": {u"date": 1459927254, u"text": u"/start", u"from": {u"username": u"adilkhash", u"first_name": u"Adil", u"id": 31337}, u"message_id": 1, u"chat": {u"username": u"adilkhash", u"first_name": u"Adil", u"type": u"private", u"id": 7350}}, u"update_id": 649179764}]
Процесс общения с telegram ботом происходит по HTTPS; для передачи данных используется JSON. Метод getUpdates возвращает список/массив из объектов типа Update . Внутри Update находится объект Message . Для стандартного взаимодействия с ботом нас фактически интересует именно объект Message, у которого мы считываем атрибут text, хранящий в себе текст, переданный боту и объект chat, в котором лежит информация о пользователе, инициировавшем общение с нашим Telegram ботом. Также имеется параметр update_id, который служит в качестве offset параметра при вызове метода getUpdates. То есть update_id+1 вернёт все сообщения, поступившие после последнего update_id, при этом все предыдущие сообщения будут удалены.
TelegramBot.getUpdates(649179764+1) [{u"message": {u"date": 1459928527, u"text": u"hello bro", u"from": {u"username": u"adilkhash", u"first_name": u"Adil", u"id": 31337}, u"message_id": 13, u"chat": {u"username": u"adilkhash", u"first_name": u"Adil", u"type": u"private", u"id": 7350}}, u"update_id": 649179765}]
На этапе написания простейшего Telegram бота нам этих вызовов достаточно. Приступим к написанию Django приложения для обслуживания наших пользователей.
Простая функция парсинга RSS фида Planet Python выглядит вот так:
# -*- coding: utf8 -*- from xml.etree import cElementTree import requests def parse_planetpy_rss(): """Parses first 10 items from http://planetpython.org/rss20.xml """ response = requests.get("http://planetpython.org/rss20.xml") parsed_xml = cElementTree.fromstring(response.content) items = for node in parsed_xml.iter(): if node.tag == "item": item = {} for item_node in list(node): if item_node.tag == "title": item["title"] = item_node.text if item_node.tag == "link": item["link"] = item_node.text items.append(item) return items[:10]
Боты (иногда их называют роботами) являются специальными аккаунтами в мессенджере Telegram, которые осуществляют автоматическую обработку и отправку сообщений.
Создать их могут не только программисты, но и обычные пользователи, желающие ознакомиться с особенностями этих роботов.
Вся прелесть ботов состоит в том, что они способны выполнить практически любую задачу, которую вы им прикажете сделать. Роботы могут производить регистрацию пользователей на ресурсе, заниматься рассылкой новостей, отвечать на вопросы и так далее. Как видите, сфера их применения буквально безгранична.
Чтобы создать бота Telegram , вам, естественно, понадобится аккаунт в этом мессенджере. Не стоит думать, что для работы с ними необходимо обладать феноменальными знаниями, ведь все процессы происходят на сервере, где запускается бот.
Итак, теперь перейдем непосредственно к процессу разработки. Сначала вам нужно запустить приложение и в поиске ввести «Manybot». Он представляет собой некий конструктор ботов Telegram , поэтому в процессе вы точно не столкнетесь с трудностями:
Затем начинайте следовать инструкциям робота и нажимайте Start:
После этого Manybot начнет давать вам подсказки на вашем родном языке и предложит несколько вариантов действий. В нашем случае необходимо выбрать «Добавить нового бота»:
Затем будет предложено добавить в контакты BotFather, который в кругах приложения известен как родоначальник всех ботов, которые когда-либо создавались в мессенджере. Начать диалог с ним довольно-таки легко. Просто наберите и отправьте сообщение /newbot:
С этого момента и начинается непосредственная разработка ботов для Telegram . Первым делом, дайте имя своему роботу. Придумайте его и отправьте текст с именем в чат. Помните, что имя бота должно заканчиваться на «bot»:
Вам сразу же будет выдан специальный код бота, который необходимо скопировать и выслать в диалог с Manybot:
В принципе, этот шаг уже считается завершающим, поэтому инструкция о том, как создать бота в Телеграмм , подходит к концу. Робот практически создан и может начинать самостоятельное функционирование. Теперь просто задайте его описание:
Все сложилось удачно? Тогда это говорит о том, что мы успешно пишем бота для Telegram . С данного момента вы будете работать конкретно с вашим ботом. Посторонние диалоги больше не понадобятся:
После попробуйте нажать кнопку «Настройки», дабы вы смогли задать цель жизни робота. Если вам необходима автоматическая трансляция обновлений на сайте, выберите функцию «Автопостинг»:
Трансляция может осуществляться из YouTube, VK, Twitter и RSS:
Если вам хочется отправлять RSS-ленту с ресурса в чат, достаточно выбрать соответствующую строку. Теперь вашим подписчикам будет намного проще следить за свежими материалами сайта:
Итак, вопрос о том, как написать бота для Telegram , может считаться закрытым. Вы сами смогли убедиться в том, что ничего сверхъестественного в этом процессе нет. Самое главное – ваши пользователи всегда будут оставаться в курсе событий.
Делаем простого бота для публикации новостей в канал и автоматические ответы на вопросы за 6 шагов.
В закладки
Материал подготовлен при поддержке
После бурных обсуждений в ИТ-прессе по поводу эффективности чат-ботов, они заняли свою нишу в экосистеме пользователей и компаний. Например, часто проекты внедряют ботов для оповещения о каких-либо событиях, а службы поддержки используют их для того, чтобы быстро отвечать на часто задаваемые вопросы клиентов.
В этой инструкции мы рассмотрим наиболее простой способ создать бота собственными руками и объясним, как он работает.
Начнем с разработки бота, который сможет автоматически отправлять в Telegram-канал новости компании, опубликованные на сайте или в Facebook.
Шаг 1. Создаём бота в Telegram
Бот в Telegram создается при помощи другого бота под названием BotFather . Отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов, и адрес. Например, «Бот для DTF» с адресом «dtf_news_bot».
Если адрес не занят, а имя введено правильно, BotFather пришлет в ответ сообщение с токеном - «ключом» для доступа к созданному боту. Его нужно сохранить и никому не показывать.
Через BotFather также можно добавить аватарку для бота, описание и прочее.
Шаг 2. Создаём канал в Telegram
Теперь создаём канал с любым названием и адресом, и переходим в его настройки. Всё, что требуется - добавить в список администраторов созданного нами бота - именно он будет публиковать заметки в канал.
Для поиска бота можно использовать его адрес. Например, «dtf_news_bot».
Шаг 3. Создание условия
Следующий этап - научить бота отправлять новости с сайта в созданный канал. Для этого воспользуемся популярным сервисом для автоматизации IFTTT .
С его помощью можно создавать инструкции для работы бота. В нашем случае она выглядит так: каждый раз, когда в RSS-ленте сайта появляется новая запись, он должен отправлять сообщение в канал Telegram.
IFTTT расшифровывается как If This Then That
Переходим в раздел IFTTT "My Applets", нажимаем на кнопку "New Applet " и далее на ссылку "This". Находим в списке функций триггер Feed , New feed item и указываем URL-адрес нашей RSS-ленты. Например, у Wordpress-сайтов она обычно расположена по адресу example.com/feed/.
Вместо RSS-ленты можно отслеживать появление новых записей в Twitter или Facebook -аккаунте - для каждой функции в IFTTT предусмотрены отдельные модули.
Теперь переходим ко второму шагу - выбираем действие, которое будет выполняться при обнаружении новой записи в RSS. Нажимаем на "That" и ищем Maker Webhook , "Make a web request" - с помощью этого модуля можно отправлять запросы к любым сервисам. В нашем случае - к боту в Telegram.
В открывшейся форме в поле URL нужно указать ссылку https://api.telegram.org/botТОКЕН /sendMessage, подставив в неё токен, сгенерированный на первом шаге. Метод: POST, тип контента: application/json.
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 можно настроить на отправку стоимости акций при закрытии торгов.
Теперь решим более сложную задачу - научим созданного бота отвечать на сообщения пользователей. Например, присылать по команде прайс-лист, контакты или отвечать на часто задаваемые вопросы клиентов.
Шаг 4. Подключаем сервер
На этом этапе понадобится веб-хостинг и сертификат SSL, который можно получить бесплатно с помощью сервиса Let"s Encrypt.
Удобнее всего создать отдельный поддомен для бота - например, bot.example.com - и разместить на нём один файл index.php. Внутри файла размещаем код простейшего бота c сайта Telegram.
В код бота нужно внести всего два изменения:
- в строке 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-бота и сервер
Теперь необходимо связать Telegram и файл на сервере, чтобы запросы, отправленные боту в мессенджере, обрабатывал наш скрипт.
Для этого понадобится консоль. У разных хостинг-провайдеров она может находиться в разных разделах интерфейса управления сайтом. Кроме того, можно воспользоваться программой Terminal на macOS, введя через неё команду ssh имя_пользователя@адрес_домена .
После ввода пароля, печатаем для нашего поддомена простую команду:
php -f /var/www/bot.example.com/index.php
Nice to meet you - ответ бота на отправленное пользователем сообщением.
Ниже в коде добавляем дополнительные ответы. Например, чтобы в зависимости от отправленного слова, бот присылал необходимую информацию пользователю (как в
Делаем простого бота для публикации новостей в канал и автоматические ответы на вопросы за 6 шагов.
В закладки
Материал подготовлен при поддержке
После бурных обсуждений в ИТ-прессе по поводу эффективности чат-ботов, они заняли свою нишу в экосистеме пользователей и компаний. Например, часто проекты внедряют ботов для оповещения о каких-либо событиях, а службы поддержки используют их для того, чтобы быстро отвечать на часто задаваемые вопросы клиентов.
В этой инструкции мы рассмотрим наиболее простой способ создать бота собственными руками и объясним, как он работает.
Начнем с разработки бота, который сможет автоматически отправлять в Telegram-канал новости компании, опубликованные на сайте или в Facebook.
Шаг 1. Создаём бота в Telegram
Бот в Telegram создается при помощи другого бота под названием BotFather . Отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов, и адрес. Например, «Бот для DTF» с адресом «dtf_news_bot».
Если адрес не занят, а имя введено правильно, BotFather пришлет в ответ сообщение с токеном - «ключом» для доступа к созданному боту. Его нужно сохранить и никому не показывать.
Через BotFather также можно добавить аватарку для бота, описание и прочее.
Шаг 2. Создаём канал в Telegram
Теперь создаём канал с любым названием и адресом, и переходим в его настройки. Всё, что требуется - добавить в список администраторов созданного нами бота - именно он будет публиковать заметки в канал.
Для поиска бота можно использовать его адрес. Например, «dtf_news_bot».
Шаг 3. Создание условия
Следующий этап - научить бота отправлять новости с сайта в созданный канал. Для этого воспользуемся популярным сервисом для автоматизации IFTTT .
С его помощью можно создавать инструкции для работы бота. В нашем случае она выглядит так: каждый раз, когда в RSS-ленте сайта появляется новая запись, он должен отправлять сообщение в канал Telegram.
IFTTT расшифровывается как If This Then That
Переходим в раздел IFTTT "My Applets", нажимаем на кнопку "New Applet " и далее на ссылку "This". Находим в списке функций триггер Feed , New feed item и указываем URL-адрес нашей RSS-ленты. Например, у Wordpress-сайтов она обычно расположена по адресу example.com/feed/.
Вместо RSS-ленты можно отслеживать появление новых записей в Twitter или Facebook -аккаунте - для каждой функции в IFTTT предусмотрены отдельные модули.
Теперь переходим ко второму шагу - выбираем действие, которое будет выполняться при обнаружении новой записи в RSS. Нажимаем на "That" и ищем Maker Webhook , "Make a web request" - с помощью этого модуля можно отправлять запросы к любым сервисам. В нашем случае - к боту в Telegram.
В открывшейся форме в поле URL нужно указать ссылку https://api.telegram.org/botТОКЕН /sendMessage, подставив в неё токен, сгенерированный на первом шаге. Метод: POST, тип контента: application/json.
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 можно настроить на отправку стоимости акций при закрытии торгов.
Теперь решим более сложную задачу - научим созданного бота отвечать на сообщения пользователей. Например, присылать по команде прайс-лист, контакты или отвечать на часто задаваемые вопросы клиентов.
Шаг 4. Подключаем сервер
На этом этапе понадобится веб-хостинг и сертификат SSL, который можно получить бесплатно с помощью сервиса Let"s Encrypt.
Удобнее всего создать отдельный поддомен для бота - например, bot.example.com - и разместить на нём один файл index.php. Внутри файла размещаем код простейшего бота c сайта Telegram.
В код бота нужно внести всего два изменения:
- в строке 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-бота и сервер
Теперь необходимо связать Telegram и файл на сервере, чтобы запросы, отправленные боту в мессенджере, обрабатывал наш скрипт.
Для этого понадобится консоль. У разных хостинг-провайдеров она может находиться в разных разделах интерфейса управления сайтом. Кроме того, можно воспользоваться программой Terminal на macOS, введя через неё команду ssh имя_пользователя@адрес_домена .
После ввода пароля, печатаем для нашего поддомена простую команду:
php -f /var/www/bot.example.com/index.php
Nice to meet you - ответ бота на отправленное пользователем сообщением.
Ниже в коде добавляем дополнительные ответы. Например, чтобы в зависимости от отправленного слова, бот присылал необходимую информацию пользователю (как в