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

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

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

Способ №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» имеют бесплатный характер, установка платных варинатов ботов выглядит довольно сомнительным решением.

Заключение

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

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

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

Чтобы создать бота Telegram , вам, естественно, понадобится аккаунт в этом мессенджере. Не стоит думать, что для работы с ними необходимо обладать феноменальными знаниями, ведь все процессы происходят на сервере, где запускается бот.

Итак, теперь перейдем непосредственно к процессу разработки. Сначала вам нужно запустить приложение и в поиске ввести «Manybot». Он представляет собой некий конструктор ботов Telegram , поэтому в процессе вы точно не столкнетесь с трудностями:

Затем начинайте следовать инструкциям робота и нажимайте Start:

После этого Manybot начнет давать вам подсказки на вашем родном языке и предложит несколько вариантов действий. В нашем случае необходимо выбрать «Добавить нового бота»:

Затем будет предложено добавить в контакты BotFather, который в кругах приложения известен как родоначальник всех ботов, которые когда-либо создавались в мессенджере. Начать диалог с ним довольно-таки легко. Просто наберите и отправьте сообщение /newbot:

С этого момента и начинается непосредственная разработка ботов для Telegram . Первым делом, дайте имя своему роботу. Придумайте его и отправьте текст с именем в чат. Помните, что имя бота должно заканчиваться на «bot»:

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

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

Все сложилось удачно? Тогда это говорит о том, что мы успешно пишем бота для Telegram . С данного момента вы будете работать конкретно с вашим ботом. Посторонние диалоги больше не понадобятся:

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

Трансляция может осуществляться из YouTube, VK, Twitter и RSS:

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

Итак, вопрос о том, как написать бота для Telegram , может считаться закрытым. Вы сами смогли убедиться в том, что ничего сверхъестественного в этом процессе нет. Самое главное – ваши пользователи всегда будут оставаться в курсе событий.

Контент-маркетинг

Как создать бота в Телеграмм без навыков программирования?

Нужен собственный чат-бот? Чтобы спроектировать его, необязательно владеть кодом: современные технологии и бесплатные сервисы позволяют создать бота telegram без программирования, быстро и легко.

Если необходим простой продукт без искусственного интеллекта, то вы вполне справитесь своими силами. Сегодня разберем процесс создания и настройки элементарного чат-бота: на примере сервиса Manybot.

Но сперва - теория:)

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

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

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

Как функционируют чат-боты?

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

Но как работают боты telegram, «обремененные» сознанием? Они опираются на машинное обучение и интеллектуальный анализ данных. Чтобы полностью раскрыть эти термины, нужно писать диссертацию. Но суть - в создании алгоритмов, способных к обучению. Есть два пути: индуктивный (обучение через поиск общих закономерностей), и дедуктивный - обучение через выгрузку всего массива данных. Имеет ли второй путь отношение к самообучающимся системам - спорно до сих пор. И скорее, не имеет. Поэтому в современной науке принято алгоритмами машинного обучения считать работающие индуктивным способом - ищущие закономерности в данных и интерпретирующие их.

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

Запускаем бота без знания кода

Вернемся к теме статьи - поговорим про создание чат бота telegram с помощью сервиса Manybot. Мы выбрали его по нескольким причинам. Основная - сегодня это наиболее адекватное решение на русском языке с простым интерфейсом. Система действительно помогает в создании бота на всех этапах, и не требует знания кода или API. Существуют альтернативы на английском, но они либо более сложные, либо не «дружат» с Telegram-мессенджером. Поэтому пока - Manybot 🙂

Эту платформу создал Микаэл Ян, сын основателя Abbyy и талантливый предприниматель сам по себе. Но речь не о нем, а об его детище. Manybot - это чат-бот, помогающий настраивать своего бота. Разберем процесс поэтапно.

1. На сайте перейдите по СТА «Открыть Manybot в Telegram» - действие предполагает, что у вас уже есть аккаунт в мессенджере 🙂

2. Так вы перейдете к боту-помощнику. После приветствия он, как в сказках или компьютерных играх, сразу выдаст следующий квест 🙂 Все боты в Telegram регистрируются и настраиваются через «главного бота», имя которому @BotFather.

Поэтому, чтобы добавить бота, вы должны сначала зарегистрировать его у «Крестного отца» мессенджера. На скриншоте ниже это нам объясняет сам Manybot.


3. Ok, идем к @BotFather - кстати, он англоязычный. Сперва задаете ему команду /newbot, после чего он справится об имени и «username» бота. Первое будет отображаться как название чата, а второе - «адрес» бота в системе.

Выбрав название (или найдя свободное из подходящих), задайте команду /token. Она нужна для возвращения в Manybot. Кстати, вот как создать чат бота в телеграмме - ведь формально, он готов. Осталось самое интересное - настроить его и «выучить» командам.


4. Скопируйте токен и возвращайтесь к Manybot. Осталось только отправить скопированный код системе и настроить описание бота. Это своего рода СТА - маленький текст, встречающий новых пользователей. Объясните, для чего нужен бот в telegram потенциальным клиентам, и зачем на него подписываться.


5. Manybot выдал ссылку на вашего бота. Кое-что он уже умеет - например, по команде /start выдает вписанный ранее текст и меню разработчика. Примечание: функции после текста «Используйте /off чтобы приостановить подписку» не видны и не доступны рядовым пользователям.

Взаимодействия с ботами строятся на командах - поэтому создадим несколько и для нашего. Выбираем /commands.


6. Создаем команду. Кстати, если сбивает с толку, откуда у едва зарегистрированного бота интерфейс и команды - повторим, это интерфейс сервиса Manybot. Ваши клиенты не увидят функционала. Итак, бот-платформа предлагает выбрать название команды.


7. Теперь сделаем кнопку главного меню , привязанную к команде. Выбираем пункты: «Настроить гл.меню»/«Добавить пункт меню», выбираем команду («/read_news» в нашем случае) и задаем название пункту (у нас это - «Новые статьи»).


8. На скриншоте ниже - «тестовый запуск» нашей команды. Работает как часы:)


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

Мы решили добавить команду /random_article, привязанную к пункту «Получить случайную статью». К команде прикреплено три сообщения со ссылками на блог-посты РобоМаркетинг.

На скриншотах ниже видно, как мы это сделали:

И очередной «тестовый запуск». Прекрасно работает 🙂

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

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

Manybot - далеко не единственный сервис. Существует англоязычная Мeyа для более продвинутых ботостроителей, СhatFuel для Facebook Messenger, и россыпь прочих вариантов… о которых мы расскажем в следующих материалах 😉

К сожалению, на данный момент нет хороших библиотек на 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 вы можете найти .

Пишем ему /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
Добавить метки