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

6 Апрель 2016 , Python, 454169 просмотров, How To Create a Telegram Bot Using Python

В последнее время 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. В итоге после выполнения этих команд мы получим:

Поздравляю! Мы вызывали самый простой API запрос getMe, который возвращает информацию о боте: username, id, first_name.

Добавим нашего бота к себе в контакт-лист и пошлём ему первую стандартную команду /start

Telegram Bot

TelegramBot.getUpdates() [, u’message_id’: 1, u’chat’: >, 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_id’: 13, u’chat’: >, 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 «вьюшка» выглядит следующим образом:

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 каждый раз при поступлении команд боту от пользователей. Об этом мы поговорим в следующей заметке.

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

Понравился контент? Пожалуйста, подпишись на рассылку.

Интересные записи:

  • FastAPI, asyncio и multiprocessing
  • Django Channels: работа с WebSocket и не только
  • Обзор Python 3.9
  • Руководство по работе с HTTP в Python. Библиотека requests
  • Введение в logging на Python
  • Celery: начинаем правильно
  • Работа с MySQL в Python
  • Почему Python?
  • Pyenv: удобный менеджер версий python
  • Что нового появилось в Django Channels?
  • Введение в pandas: анализ данных на Python
  • Разворачиваем Django приложение в production на примере Telegram бота
  • Авторизация через Telegram в Django и Python
  • Работа с PostgreSQL в Python
  • Python-RQ: очередь задач на базе Redis
  • Django, RQ и FakeRedis
  • Итоги первой встречи Python программистов в Алматы
  • Обзор Python 3.8
  • Участие в подкасте TalkPython
  • Строим Data Pipeline на Python и Luigi
  • Видео презентации ETL на Python

Источник: khashtamov.com

Как создать чат-бот Telegram с искусственным интеллектом — руководство

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

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

В этом посте я углублюсь в интересный мир создания чат-бота AI Telegram с нуля. Я пройдусь как без кода, так и Код Python учебные пособия.

Создание чат-бота с помощью ManyChat

ManyChat — это надежная платформа, позволяющая создавать чат-ботов для использования на различных платформах обмена сообщениями, включая Telegram.

В этом пошаговом руководстве я проведу вас через процесс создания чат-бота Telegram с помощью ManyChat.

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

0

Регистрация в ManyChat

Начните с посещения Веб-сайт ManyChat и создание учетной записи.

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

Адсиз 1

Подключение Telegram к ManyChat

После создания учетной записи ManyChat перейдите в раздел «Каналы» и выберите «Telegram». Следуйте инструкциям на экране, чтобы связать ManyChat с вашей учетной записью Telegram.

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

Создание бота с помощью BotFather

BotFather — это бот, который служит центром управления всеми обязанностями, связанными с ботами. Он включает в себя несколько инструкций по управлению и настройке ваших ботов.

1 бототец

Я использовал команду «/newsbot» и выполнил шаги по созданию нового бота. Я дал своему боту имя «trying_a_new_bot», а затем дал ему имя пользователя, оканчивающееся на «bot».

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

2 бототец

После того, как я закончил создание своего нового бота, BotFather дает нам соединение бота с Telegram.

Чтобы сделать моего бота более привлекательным и информативным, я мог бы включить описание, раздел «О нас» и изображение профиля.

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

Еще по теме:  Как разнообразить канал в Телеграмме

BotFather предоставил мне множество команд для управления моим ботом на протяжении всего сеанса.

Среди этих команд были команды для обновления имени бота, описания, информации и фотографии профиля.

Я также мог бы изменить список команд, удалить бота, если это необходимо, и изменить настройки бота, такие как встроенный режим, режим конфиденциальности в группах и многое другое.

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

Копирование токена API

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

Поскольку этот токен позволяет получить доступ к вашей учетной записи Telegram, очень важно обеспечить его безопасность.

Вставка токена API в ManyChat

Перейдите в настройки интеграции Telegram в ManyChat, открыв аккаунт.

Скопируйте токен API, затем поместите его в раздел «manychat-telegram-bot-token», который вы нашли ранее. Ваша учетная запись ManyChat и Telegram теперь связаны.

Подключение ManyChat и Telegram

Ваша учетная запись ManyChat теперь связана с вашей учетной записью Telegram после успешного копирования токена API.

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

Создание нового потока для автоответов

Получите доступ к функции «Автоматизация» в ManyChat, чтобы автоматически реагировать на указанные слова или фразы.

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

Создание первого шага (триггера)

Добавьте «Начальный шаг» (также известный как триггер) в новый поток.

Когда в сообщении пользователя указано определенное слово или фраза, этот триггер запускает поток. Чтобы определить триггер, нажмите кнопку «Добавить триггер».

Использование Telegram в качестве источника триггера

С левой стороны выберите «Telegram» в параметрах триггера.

Затем в настройках Telegram выберите «Ключевое слово Telegram» в качестве точного триггера.

Определение ключевого слова

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

Создание первого шага потока

Выберите «Telegram» в качестве первого шага потока, чтобы указать, что ответ будет передан через Telegram.

Это указывает канал, по которому будет отправлен автоматический ответ.

Сообщение для автоматического ответа

Добавьте содержимое сообщения, которое будет доставлено в качестве автоматического ответа, на шаг Telegram.

Предоставьте информацию о курсе, такую ​​как его название и краткое описание, в этом примере. При желании вы можете указать ссылку на веб-страницу, связанную с курсом.

Включение кнопки

Чтобы добавить кнопку в автоматический ответ, выберите «Добавить кнопку». Установите заголовок кнопки на «Открыть веб-сайт».

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

Подтверждение конфигурации

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

При необходимости измените содержимое сообщения или сведения о кнопке.

Завершите поток автоматических ответов

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

Создание чат-бота Telegram с помощью Python

Python включает в себя широкий спектр инструментов и пакетов для создания чат-ботов. Эта статья проведет вас через этапы создания чат-бота Telegram с помощью Python.

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

Создание среды

Прежде чем приступить к написанию кода, убедитесь, что на вашем компьютере установлен Python.

Python можно загрузить и установить с веб-сайта Python.

Рейтинг
( Пока оценок нет )
Загрузка ...