Как создать ботов в контакте. Как создать бот собственными силами за пять минут

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

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

Рассмотрим, как создать бота для группы в социальной сети «Вконтакте».

Способ №1. Бот «Робочат» позволят создавать ботов для сообществ

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

Для его установки перейдите на сайт robochat.io , и нажмите на кнопку «Создать бота» (при необходимости, пройдите процедуру регистрации через ваш е-мейл).


Нажмите на «Создать бота» для начала процедуры создания бота для вашего сообщества в ВК

Вы перейдёте на экран настройки бота, где вам будет необходимо подключить бота к вашему сообществу.

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

Нажмите на «Подключить сейчас» для подключения бота к вашему сообществу

Приложение запросит доступ к вашему аккаунту в VK (данный аккаунт должен одновременно иметь права администратора в нужном вам сообществе «Вконтакте»). Нажмите на «Разрешить».

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

Теперь вернитесь на вашу страницу на сайте Robochat.io, перейдите во вкладку «Чат-бот» слева, в которой будут располагаться три подвкладки («Основное», «Сообщения ВК», «Ключевые слова»).


Нажмите на вкладку «Чат-бот» для настройки вашего бота

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

Способ №2. Бот «BotVK» — автоматизированные ответы на сообщения пользователей паблика

Установка данного бота в ВК с сайта bot-vk.ru похожа по своему алгоритму на установку предыдущего бота «Робочат». При этом настройка «BotVK» также интуитивно проста, и не требует от пользователя каких-либо специальных знания по программированию

Для начала работы с данным ботом перейдите на сайт bot-vk.ru , и нажмите на кнопку «Создать бота».


Нажмите на кнопку «Создать бота» для начала подключения «BotVK» к вашей группе

Затем нажмите на кнопку «Войти или создать аккаунт», и нажмите на «Разрешить» справа внизу для предоставления приложению доступа к вашему аккаунту. Вы перейдёте в панель управления вашим ботом. Нажмите на кнопку «Подключить группу» для подключения вашей группы, выберите вашу группу в списке, и нажмите на «Подключить», а потом на «Разрешить».

Справа будет располагаться меню управления нашим ботом.

Меню управления «BotVK»

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


Меню настройки «BotVK» для вашей группы в VK

Как визуально выглядит процедура работы с данным ботом можно посмотреть на видео:

Способ №3. Чат-боты на сайте bots.hsstore.ru

Также вы можете воспользоваться платными ботами на сайте bots.hsstore.ru . Здесь представлены множество платных ботов для VK, функционал которых доступен за ежемесячную плату в 990 рублей. Среди них википедия-бот (присылает статьи с Википедии по запросам), бот для общения (умеет соединять вас анонимно с другим неизвестным пользователем), бот для демонстрации гороскопов и так далее.


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

Заключение

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

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

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

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

Привет, бот!

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

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

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

Через 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 решений по созданию ботов. Список доступных платформ, функционал, цена - все разнится от решения к решению, но вы наверняка найдете сервис по своим нуждам.

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

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

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

Выглядит эта менюшка следующим образом:

Самого бота я создала через платформу Manybot. Сделать это можно бесплатно, однако в диалоге с вашим ботом пользователи будут видеть ссылку на разработчика.

Какие возможности есть у бота?

1) Создание пользовательских команд и ответов на них.

2) Создание меню из команд. Это удобно, так как пользователям не надо вводить команды, а можно использовать для навигации готовое меню.

3) Возможность отправлять сообщения подписчикам (в том числе отложенные), просматривать количество подписчиков в боте.

4) Несколько языков интерфейса, в том числе русский.

5) Можно настроить автопостинг в бота из rss блога или сайта, а также с YouTube-канала, ВК, Твиттер.

Как создать своего Телеграм-бота?

Я записала пошаговую видеоинструкцию – пример создания простого бота с меню:

Посмотреть на моего бота в действии вы можете здесь . В диалоге с ним нажмите «Начать» (Start), дальнейшие действия он вам подскажет.

Итак, для начала создания своего Телеграм-бота, зайдите на сайт manybot.io, там нажмите по кнопке «Создать бота». Вас перебросит на первоначальные инструкции.

Нужно перейти на Manybot в Телеграме и нажать «Начать» (Start) в чате с ботом, чтобы получить дальнейшие инструкции.

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

После выбора русского языка вы сможете приступить к созданию бота, все инструкции будут даваться в диалоге (чате).

Первым делом вводим команду /addbot или просто жмем по ней в полученном от бота сообщении.

Следующим шагом нужно напечатать в диалоге с BotFather команду /newbot и следовать дальнейшим подсказкам. А именно:

1) На английском нам предлагают указать название (имя) своего будущего бота. Я его назвала ViktoriaHelps и отправила это название в диалоге BotFather.

3) После этого получила сообщение с поздравлением, что мой бот создан, ссылку на него в Телеграм, а также токен, который мне нужно скопировать.

В ответ получаю сообщение о том, что мне нужно добавить описание (приветственное сообщение) для своего бота. Это описание пользователь будет видеть в чате с ботом, когда перейдет на него.

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

Кстати, описание бота в любое время можно отредактировать. Делается это через команду /setdescription в диалоге с Manybot.

Настраиваем команды и меню в боте

В ответ получаем сообщение с описанием нашего бота (то, что мы указали на предыдущем шаге). Его же будут видеть и подписчики вашего бота.

В сообщении ниже отобразится меню для управления вашим ботом (его видите только вы, как владелец бота). Если это сообщение не появилось, вы можете вызвать его сами, введя в чат команду /help или выбрав раздел «Помощь» в меню бота.

В этом сообщении отображаются команды, которые вы можете использовать для управления ботом. Например, чтобы отправить новое сообщение подписчикам, воспользуйтесь командой /newpost. Просто кликните по ней, либо отправьте в диалог боту и следуйте дальнейшим подсказкам. То же и с другими командами.

Давайте для примера создадим несколько своих команд в боте и затем встроим их в меню, чтобы новые подписчики могли взаимодействовать с вашим ботом.

Для этого в меню под полем ввода сообщения кликаем по пункту «Пользовательские команды».

Выбираем «Создать команду».

Указываем название нашей команды – оно должно быть латиницей и без пробелов. Название может содержать цифры и нижнее подчеркивание (для разделения слов). Перед командой используем значок слеш (косую черту) /.

Вводим команду в поле сообщения и жмем Enter.

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

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

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

Если вы хотите отредактировать или удалить команду, кликните по ней в меню.

Откроется новое меню, в котором вы сможете выбрать желаемое действие.

Например, выбираем редактирование. Здесь действия будут следующими:

1) Сначала нам нужно удалить предыдущий ответ на команду и подтвердить действие.

2) Затем нажать «Добавить сообщения к команде».

3) Вводим новый ответ, отправляем боту, сохраняем.

4) Получаем сообщение, что команда успешно отредактирована.

Чтобы вернуться к предыдущему меню, нажимаем «Назад».

Как добавить команду в меню бота?

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

Нажимаем по кнопке «Настроить главное меню».

Выбираем «Добавить пункт меню».

Выбираем нашу ранее созданную команду.

Вводим название для данного пункта меню и отправляем боту. Например, я назову «Перейти в блог».

А также кнопку возврата на предыдущее меню.

Как удалить команду из меню?

Если вы хотите удалить пункт меню или поменять его название, просто кликните по нему.

У вас откроется другое меню с доступными действиями. Здесь много настроек, в частности можно менять расположение пунктов, создавать многоуровневые меню. Но сейчас не об этом…

Опять же, проскроллив менюшку вниз, вы увидите кнопки «Переименовать» и «Убрать пункт из меню». Выбираете нужное действие и следуете подсказкам бота.

Например, я просто удалю пункт «Перейти в блог» из меню.

Всем доброго дня. На связи снова Василий Блинов. Сегодня вы узнаете, как создать бота в Телеграмм. Я много писал про их полезные функции, теперь настал момент обзавестись собственным помощником.

Сейчас Телеграм очень востребован и его популярность растёт день ото дня. Не оставим мы без внимания и ботов для него.

Чем полезны?

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

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

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

Моя позволит познакомиться с ними поближе.

Способы создания

Написать код ручками

Для этого нужно знать языки программирования (Python, PHP или Java), а также есть ещё масса нюансов типа регистрации хостинга и прочего. Это может стать огромной проблемой для некоторых.

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

Воспользоваться специальным сервисом

Наш спаситель — Manybot.io.

Именно на нём я нашёл русский интерфейс, понятную инструкцию и нужный на первых этапах функционал. Роботы на этой платформе умеют:

  • отправлять сообщения подписчикам,
  • делать красивые меню,
  • проводить автопостинг из RSS ваших ресурсов.

Регистрация

Первым делом откроем @Manybot в мессенджере. Нажмём кнопку «Начать».

Выберем русский язык из предложенного списка.

Кликаем «Добавить нового бота».

Следуем дальнейшим инструкциям. Нам нужно зарегистрироваться у @BotFather .

Введём команду /newbot.

Придумываем обычное и техническое имя с хвостиком bot . Самое важное — не забываем скопировать полученный ключ-токен.

Вернёмся к Manybot, покажем ему этот код, нажав «Я скопировал токен».

Придумаем описание.

Принимайте поздравления, регистрация завершена. Теперь вы полноправный владелец собственного робота Телеграм.

Настройка

Займёмся созданием меню и первых команд. Для этого нужно найти своего робота, для этого в поисковую строку вводим его имя. У меня это @iklife_bot.

Создаём простейшую команду

Весь принцип bota — это ответы на вопросы человека, поэтому нужно прописать команды и ответы на них.

Для этого вызовем меню настройки — /commands.

Вводим имя команды и текст, который она будет выдавать в ответ на клик по ней.

Дожидаемся сообщения об успешном создании команды.

Делаем меню

Гораздо удобнее, когда посетители могут быстро выбрать все команды прямо из меню. Для его создания опять вернёмся к /commands и далее «Настроить гл. меню».

Потом «Добавить пункт меню». Называем его, выбираем ранее созданную команду.

Пункт меню готов!

Проверяем, посмотрите, что получилось. Всё работает. Аналогично создаются и другие команды с пунктами меню.

Автопостинг

Главным достоинством @Manybot является мгновенная настройка автопостинга записей с сайта с RSS-лентой или из соц. сетей, или Ютуба прямо в чат. Таким образом, читатели всегда будут в курсе обновлений, не выходя из Telegram.

Давайте его запустим!

Вводим /autoposting.

Дожидаемся проверки и сообщения об успешном завершении.

Теперь вы увидите мои статьи прямо внутри @iklife_bot.

Заключение

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

Спасибо за внимание!

Пишем ему /start и получаем список всех его команд.
Первая и главная - /newbot - отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя - в конце оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.

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

Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot/getMe , говорят, не всегда работает с первого раза.

2. Программирование

Создавать бота буду на Python3, однако благодаря адекватности этого языка алгоритмы легко переносятся на любой другой.

Telegram позволяет не делать выгрузку сообщений вручную, а поставить webHook, и тогда они сами будут присылать каждое сообщение. Для Python, чтобы не заморачиваться с cgi и потоками, удобно использовать какой-нибудь реактор, поэтому я для реализации выбрал tornado.web. (для GAE удобно использовать связку Python2+Flask)

Каркас бота:

URL = "https://api.telegram.org/bot%s/" % BOT_TOKEN MyURL = "https://example.com/hook" api = requests.Session() application = tornado.web.Application([ (r"/", Handler), ]) if __name__ == "__main__": signal.signal(signal.SIGTERM, signal_term_handler) try: set_hook = api.get(URL + "setWebhook?url=%s" % MyURL) if set_hook.status_code != 200: logging.error("Can"t set hook: %s. Quit." % set_hook.text) exit(1) application.listen(8888) tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: signal_term_handler(signal.SIGTERM, None)
Здесь мы при запуске бота устанавливаем вебхук на наш адрес и отлавливаем сигнал выхода, чтобы вернуть поведение с ручной выгрузкой событий.

Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.

Class Handler(tornado.web.RequestHandler): def post(self): try: logging.debug("Got request: %s" % self.request.body) update = tornado.escape.json_decode(self.request.body) message = update["message"] text = message.get("text") if text: logging.info("MESSAGE\t%s\t%s" % (message["chat"]["id"], text)) if text == "/": command, *arguments = text.split(" ", 1) response = CMD.get(command, not_found)(arguments, message) logging.info("REPLY\t%s\t%s" % (message["chat"]["id"], response)) send_reply(response) except Exception as e: logging.warning(str(e))
Здесь CMD - словарь доступных команд, а send_reply - функция отправки ответа, которая на вход принимает уже сформированный объект Message .

Собственно, её код довольно прост:

Def send_reply(response): if "text" in response: api.post(URL + "sendMessage", data=response)

Теперь, когда вся логика бота описана можно начать придумывать ему команды.

3. Команды

Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:

Def help_message(arguments, message): response = {"chat_id": message["chat"]["id"]} result = ["Hey, %s!" % message["from"].get("first_name"), "\rI can accept only these commands:"] for command in CMD: result.append(command) response["text"] = "\n\t".join(result) return response

Структура message["from"] - это объект типа User , она предоставляет боту информацию как id пользователя, так и его имя. Для ответов же полезнее использовать message["chat"]["id"] - в случае личного общения там будет User, а в случае чата - id чата. В противном случае можно получить ситуацию, когда пользователь пишет в чат, а бот отвечает в личку.

Команда /start без параметров предназначена для вывода информации о боте, а с параметрами - для идентификации. Полезно её использовать для действий, требующих авторизации.

После этого можно добавить какую-нибудь свою команду, например, /base64:

Def base64_decode(arguments, message): response = {"chat_id": message["chat"]["id"]} try: response["text"] = b64decode(" ".join(arguments).encode("utf8")) except: response["text"] = "Can"t decode it" finally: return response

Для пользователей мобильного Telegram, будет полезно сказать @BotFather, какие команды принимает наш бот:
I: /setcommands
BotFather: Choose a bot to change the list of commands.
I: @******_bot
BotFather: OK. Send me a list of commands for your bot. Please use this format:

Command1 - Description
command2 - Another description
I:
whoisyourdaddy - Information about author
base64 - Base64 decode
BotFather: Success! Command list updated. /help

C таким описанием, если пользователь наберет /, Telegram услужливо покажет список всех доступных команд.

4. Свобода

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

UPD: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/) (https://core.telegram.org/bots#privacy-mode)

Чтобы бот получал все сообщения в группах пишем @BotFather команду /setprivacy и выключаем приватность.

Для начала в Handler добавляем обработчик:

If text == "/": ... else: response = CMD[""](message) logging.info("REPLY\t%s\t%s" % (message["chat"]["id"], response)) send_reply(response)
А потом в список команд добавляем псевдо-речь:

RESPONSES = { "Hello": ["Hi there!", "Hi!", "Welcome!", "Hello, {name}!"], "Hi there": ["Hello!", "Hello, {name}!", "Hi!", "Welcome!"], "Hi!": ["Hi there!", "Hello, {name}!", "Welcome!", "Hello!"], "Welcome": ["Hi there!", "Hi!", "Hello!", "Hello, {name}!",], } def human_response(message): leven = fuzzywuzzy.process.extract(message.get("text", ""), RESPONSES.keys(), limit=1) response = {"chat_id": message["chat"]["id"]} if leven < 75: response["text"] = "I can not understand you" else: response["text"] = random.choice(RESPONSES.get(leven)).format_map({"name": message["from"].get("first_name", "")}) return response
Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map - удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.

5. Не текст.

Боты, как и любой нормальный пользователь Telegram, могут не только писать сообщения, но и делиться картинками, музыкой, стикерами.

Для примера расширим словарь RESPONSES:

RESPONSES["What time is it?"] = ["", "{date} UTC"]
И будем отлавливать текст :

If response["text"] == "": response["sticker"] = "BQADAgADeAcAAlOx9wOjY2jpAAHq9DUC" del response["text"]
Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:

Def send_reply(response): if "sticker" in response: api.post(URL + "sendSticker", data=response) elif "text" in response: api.post(URL + "sendMessage", data=response)
И все, теперь бот будет время от времени присылать стикер вместо времени:

6. Возможности

Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).

Вспоминая , могу сказать, что теперь извращений меньше, а работа прозрачнее.

7. Ограничения

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

К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:

While True: r = requests.get(URL + "?offset=%s" % (last + 1)) if r.status_code == 200: for message in r.json()["result"]: last = int(message["update_id"]) requests.post("http://localhost:8888/", data=json.dumps(message), headers={"Content-type": "application/json", "Accept": "text/plain"}) else: logging.warning("FAIL " + r.text) time.sleep(3)

P.S. По пункту 7 нашел удобное решение - размещение бота не у себя, а на heroku, благо все имена вида *.herokuapp.com защищены их собственным сертификатом.

UPD: Telegram улучшили Бот Апи, из-за чего, теперь не обязательно иметь отдельную функцию для отправки сообщений при установленном вебхуке, а в ответ на POST запрос можно отвечать тем же сформированным JSON с ответным сообщением, где одно из полей устанавливается как ч "method": "sendMessage" (или любой другой метод, используемый ботом).

Теги:

  • telegram
  • введение
  • python3
Добавить метки