Как написать Telegram бота: практическое руководство. Создать telegram бот


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

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

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

Полное руководство по Telegram

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

Чем полезны?

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

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

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

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

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

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

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

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

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

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

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

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

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

Запускаем робота manybot

Запускаем робота manybot

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

Выбираем русский manybot

Выбираем русский manybot

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

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

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

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

Запускаем botfather

Запускаем botfather

Перейдём по ссылке и запустим его.

Регистрируем бота в botfather

Регистрируем бота в botfather

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

Добавляем нового бота в Телеграм

Добавляем нового бота в Телеграм

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

Придумываем название боту

Придумываем название боту

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

Копируем токен робота

Копируем токен робота

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

Новый бот в телеграме создан

Новый бот в телеграме создан

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

Настройка

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

Настройка бота в Телеграм

Настройка бота в Телеграм
Создаём простейшую команду

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

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

Вызываем меню

Вызываем меню

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

Вводим команды

Вводим команды

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

Ожидаем ответа на команды

Ожидаем ответа на команды
Делаем меню

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

Настройка главного меню

Настройка главного меню

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

Добавляем боту новый пункт в меню

Добавляем боту новый пункт в меню

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

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

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

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

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

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

Вводим /autoposting.

RSS бот

RSS бот

Я укажу RSS-поток своего блога — iklife.ru/feed. Дожидаемся проверки и сообщения об успешном завершении.

Подключаем RSS ленту

Подключаем RSS ленту

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

Заключение

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

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

подпишись и начни получать лучшие статьи первым

Подписаться

Подписалось уже 6999 человек

iklife.ru

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

Рано или поздно активного пользователя Телеграмм посещает вопрос, как создать бота в Телеграмм. Что для этого нужно знать и что уметь?

Немного о ботах 

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

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

Создание бота для Telegram 

Конечно, перед тем, как написать бота для Telegram, нужно определиться, для каких целей он будет создан и что, собственно, будет делать. Рассылать сообщения, выдавать курс валют или что-то еще. Именно от этого и будет зависеть его основной код. Писать бота можно как на языках программирования, так и практически без знания оных. Правда, в последнем случае ни о каком тонком качественном исполнении речи быть не может. Создается новый бот при помощи еще одного бота: @BotFather. Для начала его нужно добавить в свой контакт-лист и запустить.Как создать бота в Telegram

Последовательность действий в дальнейшем будет такая:

  • ввести команду /newbot – создание нового бота. Затем BotFather попросит придумать новое уникальное имя для этого бота. Оно обязательно должно заканчиваться на «bot»;
  • можно также добавить аватар для бота и его описание;
  • далее BotFather присылает уникальный токен API, который нужно скопировать в буфер обмена и переместить в какой-нибудь текстовый файл, потому что запомнить его просто невозможно;
  • в принципе, бот уже имеется, только он ничего не может делать. Чтобы «обучить» его чему-нибудь, можно использовать языки программирования. А можно и Paquebot – сервис для создания коммуникативных роботов;
  • потребуется также добавить в друзья нового бота — @Chatfuel и запустить его;
  • нужно ввести команду /addbot и добавить к нему полученный ранее токен;
  • теперь бот будет сохранен на сервисе – и все взаимодействие с ним будет осуществляться оттуда. Там имеется довольно внятный интерфейс и система команд для бота. Описывать все возможные функции здесь просто нет смысла – их слишком много.

Теперь при помощи сервиса Paquebot можно будет управлять возможностями своего бота, используя заготовки команд. Например, добавить своего бота в администраторы канала – и тот будет автоматически проводить обновление на канале. Кроме того, отсюда можно настроить обновление на страничке пользователя В Контакте, Твиттере, на YouTube, RSS и других социальных сервисах.Создать бота в Телеграмм

На бота могут подписаться другие пользователи – и получать информацию об этих обновлениях. Также можно и самому оформить подписку на собственного бота – и тогда можно будет следить за обновлениями новостной ленты у других. Создание бота для Telegram – занятие по-настоящему увлекательное. Многие программисты говорят, что ощущения при этом такие – будто создаешь отдельное живое существо, которое вдруг начинает жить отдельно, своей собственной жизнью… После того, как создать бота в Телеграмм удалось, и он начал успешно функционировать, его можно добавить в каталог ботов на сайте Store Bot или продвигать в Твиттере, например, а то и вовсе – продать кому-нибудь.

telegram-free.org

Как написать Telegram бота: практическое руководство

6 Апрель 2016, Python, 170910 просмотров

TelegramВ последнее время Telegram у всех на слуху. Нужно отдать должное отделу маркетинга этого приложения, шумиху подняли на славу. Одной из основных "фишек" Telegram является его якобы защищённость - по словам Павла Дурова вся переписка между пользователями шифруется. Более того, ни одна спец.служба мира не будет иметь доступ к вашим сообщениям. Но в данной статье речь не об этом. Сегодня хотелось бы поговорить о не менее крутой фишке в Telegram, а именно о ботах. Помимо того, что в сети уже полно информации о различного рода Telegram ботах (github бот, например), мессенджер открыл своё API для разработчиков, и теперь каждый может создать своего собственного бота с блэкджеком и плюшками.

В статье я приведу пример написания онлайн бота с использованием Python и Django фреймворка. То есть мы "запилим" полноценное веб-приложение, которое будет крутиться на удалённом хосте и принимать команды от пользователей. Весь исходный текст доступен в моём github репозитории.

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

Как создать Telegram бота?

Для начала нам необходимо зарегистрировать в Telegram нашего будущего бота. Это делается следующим образом:

  • Необходимо установить приложение Telegram на телефон или компьютер. Скачать приложение можно тут
  • Добавляем к себе в контакт-лист бота с именем BotFather
  • Запускаем процедуру "общения" с ботом нажатием кнопки Start. Далее перед нами предстанет список команд точно как на скриншоте.
  • Для того, чтобы создать нового бота необходимо выполнить команду /newbot и следовать инструкциям. Обратите внимание, что username для бота должен всегда содержать в конце слово bot. Например, DjangoBot или Django_bot.

Telegram bot

  • Для нашего бота я выбрал имя PythonPlanetBot, так как его основная функция заключается в парсинге RSS feed сайта Python Planet и выдача информации о последних постах пользователю :)

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). Либо же можно получить валидный бесплатный SSL сертификат от 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

Telegram Bot

Выполняем код:

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]

Здесь я использую python библиотеку requests для работы с HTTP в самом простейшем варианте без обработки ошибок. Django "вьюшка" выглядит следующим образом:

TOKEN = '<Our_Bot_Token>' TelegramBot = telepot.Bot(TOKEN) def _display_help(): return render_to_string('help.md') def _display_planetpy_feed(): return render_to_string('feed.md', {'items': parse_planetpy_rss()}) class CommandReceiveView(View): def post(self, request, bot_token): if bot_token != TOKEN: return HttpResponseForbidden('Invalid token') commands = { '/start': _display_help, 'help': _display_help, 'feed': _display_planetpy_feed, } try: payload = json.loads(request.body.decode('utf-8')) except ValueError: return HttpResponseBadRequest('Invalid request body') else: chat_id = payload['message']['chat']['id'] cmd = payload['message'].get('text') # command func = commands.get(cmd.split()[0].lower()) if func: TelegramBot.sendMessage(chat_id, func(), parse_mode='Markdown') else: TelegramBot.sendMessage(chat_id, 'I do not understand you, Sir!') return JsonResponse({}, status=200) @method_decorator(csrf_exempt) def dispatch(self, request, *args, **kwargs): return super(CommandReceiveView, self).dispatch(request, *args, **kwargs)

CommandReceiveView ждёт POST запрос на себя, парсит его и отвечает исходя из заданной команды. Полноценное Django приложение можно найти по этой ссылке. Стоит отметить в коде использование ещё одного API вызова - sendMessage. Этот метод отправляет сообщение заданному пользователю, используя при этом chat_id и сам текст сообщения. Chat_id - это уникальный идентификатор чата между пользователем и ботом (его идентификатор есть в ответе на запрос getUpdates). У Telegram ботов есть одно ограничение, они не могут посылать сообщения пользователям, которые предварительно не инициировали общение с ним. По-видимому это сделано дабы избежать массового создания спам-ботов.

Я предполагаю, что вы уже клонировали мой репозиторий, настроили окружение и установили все необходимые зависимости: Django, requests, telepot. Если же вы не знаете как это сделать, то совсем скоро я напишу цикл статей о разработке веб-приложений на Python, включая разбор экосистемы: разработка, настройка, деплой. Если вам это интересно, то отпишитесь, пожалуйста, в комментариях к этой статье. Хочется получить обратную связь :)

Итак, веб-приложение на Django запущено. Как же начать тестировать бота? А всё очень просто - необходимо симулировать действия Telegram сервиса. Для этого нам понадобится HTTP клиент и тело запроса. В качестве HTTP клиента я часто использую Chrome плагин под названием Postman, а тело запроса мы возьмём напрямую из данных, полученных с помощью API вызова getUpdates.

После запуска runserver, URL на который необходимо посылать запрос выглядит следующим образом:

http://127.0.0.1:8000/planet/b...BOT_TOKEN/

где BOT_TOKEN - это токен нашего бота. Смотрим скриншот:

Postman REST Client telegram-bot-postman

А давайте-ка отправим команду feed для получения списка новостей из Planet Python:

Postman и TelegramPostman и Telegram

На скриншотах видно, что бот адекватно отреагировал на нашу команду вывести список последних 10 постов.

Следующим шагом является деплой нашего Django приложения на удалённый хост и последующий вызов метода setWebhook для передачи URL на который будет посылаться POST запрос от сервиса Telegram каждый раз при поступлении команд боту от пользователей. Об этом мы поговорим в следующей заметке.

khashtamov.com

Как создавать ботов в Telegram / Хабр

24 июня разработчики Telegram открыли платформу для создания ботов. Новость кого-то обошла стороной Хабр, однако многие уже начали разрабатывать викторины. При этом мало где указаны хоть какие-то примеры работающих ботов. Прежде всего, бот для Telegram — это по-прежнему приложение, запущенное на вашей стороне и осуществляющее запросы к Telegram Bot API. Причем API довольное простое — бот обращается на определенный URL с параметрами, а Telegram отвечает JSON объектом.

Рассмотрим API на примере создания тривиального бота:

1. Регистрация

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

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

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

Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot<TOKEN>/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[0] == '/': 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: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/<command>) (https://core.telegram.org/bots#privacy-mode)

  • All messages that start with a slash ‘/’ (see Commands above)
  • Messages that mention the bot by username
  • Replies to the bot's own messages
  • Service messages (people added or removed from the group, etc.)

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

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

if text[0] == '/': ... else: response = CMD["<speech>"](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)[0] response = {'chat_id': message['chat']['id']} if leven[1] < 75: response['text'] = "I can not understand you" else: response['text'] = random.choice(RESPONSES.get(leven[0])).format_map( {'name': message["from"].get("first_name", "")} ) return response Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map — удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.

5. Не текст.

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

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

RESPONSES["What time is it?"] = ["<at_sticker>", "{date} UTC"] И будем отлавливать текст :if response['text'] == "<at_sticker>": 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' (или любой другой метод, используемый ботом).

habr.com

Как создать бота в Телеграмм за 5 минут? Пошаговое руководство.

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

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

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

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

создание бота в Телеграмм

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

запрограммировать бота в Телеграмм

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

 настроить бота в Телеграмм

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

 сделать бота в Телеграмм

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

 создание bot Telegram

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

Telegram bot

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

 Telegram бот самостоятельно

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

 бот Telegram своими руками

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

 создание бота в Телеграмм

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

создание бота в Telegram

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

 создаем бота в Telegram

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

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

 

telegraminfo.ru

А знаете ли вы, что бота в Телеграме можно создать самому?

Код программы

Чат-боты необходимы для успешной коммуникации компаний и пользователей. Эти небольшие приложения помогают общаться с клиентами, оповещают о важных событиях, поддерживают беседу в чате и отвечают на распространенные вопросы. А знаете ли вы, что бота в Телеграме можно создать самому? Для этого достаточно немного терпения и базовых навыков программирования. Как это сделать – читайте далее.

Что сможет ваш бот

Созданный вами бот для Telegram сможет выполнять такие функции:

Отвечать на команды. Умное приложение сможет действовать по командам создателя и выдавать нужную информацию в соответствии с запросом.

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

Создаем бота с BotFather и IFTTT

Проще всего создать бота в Телеграмм с помощью специальных сервисов – IFTTT и BotFather. Преимущество — легкость создания.

Это интересно: кто владельцы мессенджера Telegram?

Для этого придется выполнить такие действия.

  1. Открываем приложение под названием BotFather.
  2. В появившемся окне вводим команду /newbot.
  3. Выбираем удобное имя для бота (должно быть оригинальным).
  4. Если все в порядке, приложение пришлет ключ-токен, который стоит сохранить в надежном месте.
  5. Через приложение BotFather можно осуществлять и другие настройки – установить аватарку и т.д.
  6. Для проверки полученного токена перейдите по адресу api.telegram.org/bot<TOKEN>/getMe,

IFTTT

Для того, чтоб ваш бот публиковал заметки, необходимо создать Телеграмм-канал и указать виртуального друга администратором. Обучить бота публикации заметок поможет специальный сервис IFTTT. Приложение генерирует команды и публикует новости в ленте каждый раз, когда в RSS-канале появляются новые записи. Также можно настроить публикацию свежих постов с Twitter и Facebook.

Следующий шаг – выбор обработки запросов. Telegram API базируется на HTTP-запросах. Есть два основных метода обработки запросов от пользователей:

  1. «Ручная» проверка через Long Polling.
  2. Автоматическая проверка Telegram с помощью Webhook. В этом случае все запросы от пользователей будут посылаться прямо на сервер.

Обратите внимание, что последний вариант требует установки SSL-сертификата. Также могут подойти бесплатные сертификаты «Let’s Encrypt».

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

На заметку: бот Вкусвилл, описание

Простые действия, публикация новостей и рассылка сообщений – все, на что будет способен созданный токен.

Long Polling

Простой бот на PHP

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

Главная сложность — требуется знать программирование. Для решения задачи нужно сделать следующее:

  • Создаем стандартного бота на Botfather и привязываем к файлу-обработчику через SetWebhook. Для этого генерируем ссылку — https:// api. telegram. org/bot375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s/setWebhook?url=https:// yoursitehere .ru/directory/bot.php В этом случае 375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s – это адрес бота, а https://yousitehere. ru/directory/bot.php – адрес файла- обработчика.
  • После открытия данной ссылки в браузере вы должны получить JSON-ответ об установке вебхука. В этом случае все пользовательские запросы будут присылаться сразу на адрес обработчика.

Далее действия пользователя должны быть такими:

  • Подключение скачанной библиотеки с указанием пути к файлу-загрузчику.
  • Передаем токен в переменную $telegram и дожидаемся ответа $result
  • Следующий шаг – определение главных переменных: текстовое сообщение, юзернейм и идентификатор пользователя.
  • Далее необходимо создать активные кнопки – «Гифка», «Картинка», «Статьи» и т.д.
  • После тестирования бота можно вводить его в работу. Удобный API позволяет ботам на Телеграмм быстро и точно выполнять рутинные действия – рассылка сообщений, картинок, общение.

Сложность — нужно знать программирование.

Лучшие бесплатные площадки для продвижения ботов — Telegram Bot Store, 50bots и TeleChappy. Для анализа активности пользователей подойдет приложение для анализа ботов от Яндекса Botan.

greatchat.ru

Создание Telegram Bots своими руками

Авторизация на сайт через Телеграм без использования официального виджета

Рассмотрим простой вариант авторизации на сайте с помощью Телеграм без использования официального виджета.

Простой бот для приветствия пользователя в группе Телеграм - HelloBot

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

Создание Чат-Бот-Магазин в Телеграм с нуля. Часть третья

Интерфейс пользователя магазина, оформление заказа, управление корзиной, личный кабинет.

Создание Чат-Бот-Магазин в Телеграм с нуля. Часть вторая

Создание окружения, рабочие методы. Блок администрирования бот-магазина. Дополнения и изменения в структуре базы данных. Знакомство с PDO.

Создание Чат-Бот-Магазин в Телеграм с нуля. Часть первая

Пишем техническое задание, проектируем структуру базы данных.

Редактируем сообщение через Телеграм Бот

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

imakebots.ru