Как сделать бота в телеграмме на русском. Пример создания своего чат-бота для телеграм

Нужен чат-бот, но не умеете программировать? Предлагаем подборку лучших сервисов проектирования ботов. А некоторые из них - даже бесплатны 🙂

Если вы бизнесмен, чат-боты наверняка пригодятся вам в скором времени. Звучит категорично, но это так. У компании, работающей с клиентами (то есть, у каждой бренда) найдется пара-тройка процессов для автоматизации. Боты в мессенджерах разгрузят саппорт, повысят уровень обслуживания клиентов, сократят затраты на персонал и так далее

И для этого необязательно работать онлайн. Чат-боты заменят даже официантов - и такие кейсы уже появляются в Штатах. Пофантазируем: вы заходите в любимое кафе, где завтракаете каждое утро. На стене у стойки - плакат с именем бота-официанта (найти его можно по поиску в приложениях). Вы загружаете мессенджер и пишете:

Привет, бот!

Привет, Андрей. Тебе как обычно?

Да, только эспрессо вместо сока.

Заказ принят!

Через 15 минут вам приносят завтрак. Бот, имитирующий человека, принимает заказы через мессенджер, консультирует по меню - и главное, хранит историю запросов. Поэтому необязательно каждый раз повторять одно - системе достаточно отправить «Мне как в прошлый раз», и она поймет. После оформления заказ отправляется на кухню, и чуть позже еду приносит «живой» официант.

Это не отвлеченная фантазия. Похожие боты уже внедряются в кофейнях США - и ждет первопроходцев в России. Создать такого робота достаточно просто, а взаимодействие с ним впечатляет. Как видите, автоматизация процессов чат-ботами доступна не только онлайн, но и в индустрии общепита. Боты уже умеют бронировать билеты, искать информацию в сети (текст, визуальный контент), консультировать по продуктам компании и прочее. Задумайтесь, как можно применить ботов к вашему бизнесу? И сколько они вам сэкономят?

Повторимся, создание чат-ботов - не такой сложный процесс, каким кажется. Появилось достаточно платформ, позволяющих спроектировать «робота» для мессенджеров без познаний в дизайне и кодинге. Рассмотрим 5 удобных сервисов проектирования чат-ботов.

5 лучших решений

Мультиплатформенное решение по созданию ботов. Поддерживаемые площадки:

Особенности сервиса:

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

И главное - сервис бесплатный! Кроме продвинутых услуг: обучение персонала, обзор кода, хостинг и лицензии, расширенная поддержка и прочее. Также платформа предлагает интересное решение: AIaaS (искусственный интеллект как услуга). Используя ресурсы Pandorabots (или свой любимый текстовый редактор), вы создаете бота, а затем активируете его за считанные минуты через встроенный RESTful API.

«Все, что вам нужно при создании ботов. Для мессенджеров, Slack и Telegram», - гласит первое окно сервиса. Заявленные преимущества:

  • Настоящая кросс-платформенность. Бот, созданный единожды, работает на всех площадках;
  • Удобный редактор бота, не требует знания кода;
  • Более 90 встроенных интеграций;
  • Хостинг.

Ценообразование включает два тарифа: бесплатный (5 ботов, 100 интеракций, email-поддержка) и стандартный ($19/месяц, 15 ботов, 1500 интеракций). Но не только. К стандартному плану за $10/месяц добавляется 5 ботов, а за $25 -25000 интеракций.

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

Платформа создания facebook-ботов с очаровательным логотипом-осьминогом 🙂 Сервис не требует знания кода, он бесплатный и простой. Но - забудьте о кросс-платформенности, ведь ManyChat поддерживает только Facebook Messenger.

Бот проектируется на площадке за несколько минут - интуитивно-понятный интерфейс способствует этому. Работа с мессенджером Facebook предполагает несколько преимуществ, на которых фокусируется ManyChat. Так, когда человек начинает переписываться с вашей корпоративной страницей (ботом), он автоматически становится подписчиком. Теперь ему можно рассылать обновления, уведомления, прочий контент.

Автоматизируйте взаимодействия бота с пользователями, создайте контент для рассылок, настройте дату/время отправки - и отдыхайте, остальное бот сделает сам;) К тому же, ManyChat применим как платформа автопостинга по RSS, Facebook, Twitter, YouTube.

Словом, ManyChat - удобное решение, которому недостает лишь кросс-платформенности.

Сервис работает со многими платформами: Facebook Messenger, Twitter, Slack, Smooch, Intercom, Telegram, KiK, Twilio, Webhooks, Luis.ai, Wit.ai, GitHub. Из особенностей:

У Meya подробнейший прайс-лист (на фоне остальных героев подборки) - целых 5 тарифов. Не факт, что это хорошо - глаза слегка разбегаются от обилия вариантов.

  • Бесплатный (200 сообщений, 1 бот, 1 сотрудник, поддержка сообщества);
  • Стартап ($49/месяц, 10 000 сообщений, 5 ботов, 2 сотрудника, «бронзовый» саппорт и аналитика);
  • Бизнес ($99/месяц, 20000 сообщений, боты и сотрудники без ограничений, «серебряный» саппорт, аналитика, экспорт Github);
  • Организация ($199/месяц, гибкое ценообразование - 50 000 сообщений или 10 000 пользователей, боты и сотрудники без ограничений, «золотой» саппорт, аналитика, экспорт Github);
  • Предприятие (цена по договоренности, гибкое ценообразование - более 50 000 сообщений или 10 000 пользователей, боты и сотрудники без ограничений, «платиновый» саппорт, аналитика, экспорт Github).

Как резюме: интересная платформа с широким функционалом.

Гвоздь подборки. Платформа позволяет создавать ботов для Facebook и Telegram. На подходе Slack, KiK, WhatsApp и Viber. Сервис предлагает интуитивно-понятный функционал, не требующий знания кода. ИИ платформы распознает запросы пользователей в широком диапазоне, и отвечает на них, а само решение поддерживает интеграцию со многими сервисами (twitter, YouTube, Instagram и прочее).

ChatFuel уже используют National Geographic, TechCrunch, UBER. А главное - платформа бесплатная! Поправка - до 100 000 активаций бота в месяц. Но этот лимит - условный, ведь он в 2-5 раз шире, чем условия конкурентов. Кажется, создатели ChatFuel сделали самое привлекательное решение на рынке. Как минимум, по соотношению цены/качества.

Вместо заключения

Мы рассмотрели ТОП-5 решений по созданию ботов. Список доступных платформ, функционал, цена - все разнится от решения к решению, но вы наверняка найдете сервис по своим нуждам.

Но помните, если ваше время стоит дорого, и тратить его на проектирование бота вы не хотите, или если вам нужен нестандартный продукт с особенным функционалом - берите свои идеи и обращайтесь в РобоМаркетинг 🙂 Мы спроектируем для вас ботов любой сложности, без функциональных ограничений, лимитов и ежемесячных плат за подписку.

К сожалению, на данный момент нет хороших библиотек на Python2, для того, чтобы быстро создать чат-бота. Ниже я покажу, как легко можно написать примитивного чат бота для VK, используя API VK.


Статья написана для новичков, чтобы показать, что ничего сложного в написании ботов на Python нет.

Авторизация

Нам понадобится библиотека vk_api . Авторизоваться в вк можно двумя способами:
- Как пользователь
- Как сообщество


В первом случае надо будет ввести логин и пароль. Во втором случае в группе надо включить "Сообщения сообщества" и создать ключ доступа к API:





import time import vk_api vk = vk_api.VkApi(login = "login", password = "password") #vk_api.VkApi(token = "a02d...e83fd") #Авторизоваться как сообщество vk.auth()

Отправка сообщений

Теперь напишем короткую функцию, которая отправляет сообщение выбранному человеку.


P.S. Сообщество может отправлять сообщения только ранее писавшим пользователям.


def write_msg(user_id, s): vk.method("messages.send", {"user_id":user_id,"message":s})

В vk.method мы можем вызывать любой метод из VK API и передавать параметры в виде словаря.


В данном случае мы вызываем метод messages.send и в качестве параметров передаем id пользователя и текст сообщения.

Прием сообщений

Отлично! Отправлять сообщения мы научились, осталось научиться их принимать. Для этого нам нужен метод messages.get .


Несколько параметров, на которые стоит обратить внимание:


1) out - если этот параметр равен 1, сервер вернет исходящие сообщения.
2) count - количество сообщений, которое необходимо получить.
3) time_offset - максимальное время, прошедшее с момента отправки сообщения до текущего момента в секундах.
4) last_message_id - идентификатор сообщения, полученного перед тем, которое нужно вернуть последним (при условии, что после него было получено не более count сообщений)


values = {"out": 0,"count": 100,"time_offset": 60} vk.method("messages.get", values)

В нашем случае этот метод вернет все полученные сообщения за последние 60 сек, если их конечно было меньше 100, а если больше, то последние 100.


В итоге мы получаем список items:


{u"count": 3441, u"items": [{u"body": u"\u041f\u0438\u0448\u0435\u043c \u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u0432\u043a!", u"date": 1491934484, u"id": 7387, u"out": 0, u"read_state": 0, u"title": u" ... ", u"user_id": 23107592}, {u"body": u"\u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440!", u"date": 1491934479, u"id": 7386, u"out": 0, u"read_state": 0, u"title": u" ... ", u"user_id": 23107592}]}

Если объяснять простыми словами, то items - это то, что можно выделить в диалоге.



Финальный аккорд, делаем вечный цикл, где на каждое сообщение будем отвечать "Привет, Хабр!".


while True: response = vk.method("messages.get", values) if response["items"]: values["last_message_id"] = response["items"]["id"] for item in response["items"]: write_msg(item,u"Привет, Хабр!") time.sleep(1)

Чат-бот готов.


P.S. Мы запоминаем параметр last_message_id, чтобы в следующий раз обрабатывать только новые сообщения.


Полный код

# -*- coding: utf-8 -*- import time import vk_api vk = vk_api.VkApi(login = "login", password = "password") #vk_api.VkApi(token = "a02d...e83fd") #Авторизоваться как сообщество vk.auth() values = {"out": 0,"count": 100,"time_offset": 60} def write_msg(user_id, s): vk.method("messages.send", {"user_id":user_id,"message":s}) while True: response = vk.method("messages.get", values) if response["items"]: values["last_message_id"] = response["items"]["id"] for item in response["items"]: write_msg(item,u"Привет, Хабр!") time.sleep(1)


Получилось 17 строк кода. Успехов!


UPD 17.09.18:
К сожалению в новой версии (5.80) VK API был убран метод "messages.get" и данная статья потеряла актуальность. Теперь для создания ботов используйте систему longpoll. Пример на модуле vk_api для Python вы можете найти .

Telegram - популярный мессенджер, за разработку которого отвечает Павел Дуров. На данный момент его используют более сотни миллионов человек. Такая популярность связана с внушительными возможностями приложения. Помимо отправки сообщений живым людям, мессенджер предлагает ряд других функций. И в первую очередь - взаимодействие с ботами . Это специальные программы, запрограммированные на выполнение определенных действий, реализованные через чат Telegram.

Сейчас роботы в Телеграмм очень востребованы. Они имеются практически у любого популярного интернет-ресурса, добавляя пользователям комфорта. Поэтому владельцев крупных групп, сайтов, порталов или просто обычных посетителей интернета интересует то, как создать бота в Телеграмм.


Есть два варианта решения этой задачи. Первый является самым сложным, для его реализации требуются знания в области программирования. Бота можно создать посредством Telegram API . Второй - гораздо более простой. Можно воспользоваться специальным ресурсом, который составит программу бота по вашим указаниям. Сайтов, предлагающих такие возможности очень много. Также существуют специальные боты в Telegram, выполняющие данную задачу. Но в статье пойдет речь о ресурсе manybot.io, который является одним из самых популярных.

Процедура создания

Для создания бота достаточно выполнить 7 простых шагов:

  1. Вводим в окне поиска Manybot, открываем и кликаем на кнопку Start;
  2. В появившемся меню выбираем русский язык, далее - пункт «Добавить нового бота»;
  3. Вам предложат перейти на @BotFather, делаем это, начинаем с ним чат, отправляем сообщение /newbot;
  4. Поочередно вводим название аккаунта и техническое имя;
  5. Сохраняем отправленный API-токен;
  6. Переходим обратно к @Manibot, отправляем ему полученный API-токен;
  7. Вводим описание аккаунта.

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

Это довольно простой способ того, как сделать бота в Telegram . Если же вы хорошо разбираетесь в программировании, то можно взяться за выполнение задачи собственными силами. На сайте code.telegram.org подробно расписана информация о Telegram API и программировании на нем. Все статьи представлены на английском языке.

В последнее время 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]

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

Шаг 1

Создаем профиль на iii.ru

Видим кнопку «Создать инфа» — она перебросит вас на страницу регистрации

Проходим элементарную регистрацию (можно войти через одну из трех социалок на выбор)

У вас будет немного другой интерфейс, но это сейчас не суть. Вам нужно будет создать «инфа» и получить его уникальный идентификатор

Так выглядит уникальный идентификатор (все, что идет после iii.ru/inf/)

Шаг 2

Скачиваем программу с сайта qsme.ru (название программы банально до невозможного «Бот»). Есть версии под Windows, Linux и MacOS. Перед установкой программы нужно убедиться, что у вас стоит Java Runtime Environment, так как без него программа даже не запустится (скачать последний JRE можно , если что). После того, как вы установили JRE и установили программу «Бот» — «софтина» запросит у вас ключ. Не бойтесь — полный функционал программы доступен бесплатно. Все, что нужно сделать — запросить ключ на почту и после получения ввести его в поле, которое появляется после загрузки программы. Программа позволит вам использовать один профиль любой из возможных социалок, с которыми работает Qsme «Бот» (Одноклассники, Мамба, Вконтакте и LovePlanet).

В нашем случае это Вконтакте 🙂

Шаг 3

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

Приблизительные настройки задания для анкеты

Остальные настройки, как говорится, по вашему вкусу. 😉

Финита ля комедиа

Собственно говоря — это все, но есть еще несколько мелких деталей. Во-первых напомню, что своего бота вы можете «кастомизировать» и «модифицировать» так, как вашей душеньке угодно. Научив его отвечать на сообщения так, как хочется вам. Ну или может быть вы филолог и хотите наловчиться в семантических связях или что-то еще. В любом случае — это уже совершенно другая история. О кастомизации я раскажу несколько позже.