Бот в Telegram

Чат-боты в мессенджерах

Бот — это сокращение от слова «робот». Чат-ботами называют программы, взаимодействующие с пользователем через мессенджер, систему обмена сообщениями. Это может быть мессенджер, встроенный на страницу сайта, или мобильный мессенджер, вроде WhatsApp или Telegram.

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

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

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

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

Bot API в Telegram

Для управления ботами в Telegram есть Bot API. Общее описание процесса создания ботов представлено в официальной статье «Bots: An introduction for developers». Документация по Bot API опубликована здесь.

Отправка и получение запросов через Bot API

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

  • Имя бота должно оканчиваться на bot*, например @practicum_bot* или @MisterRobot.
  • У ботов нет статуса последнего посещения, вместо него выводится надпись «бот».
  • Бот не может «постучаться» к другому пользователю и первым начать диалог: бот должен скромно сидеть и ждать, пока кто-нибудь обратит на него внимание и напишет ему.

Программа, управляющая ботом, взаимодействует с Bot API через HTTP-запросы: их можно отправлять как с помощью стандартной Python-библиотеки requests, так и посредством специальных библиотек-обёрток.

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

Создание аккаунта Telegram-бота

Разработчики Telegram написали специального бота @BotFather, его предназначение — создавать и регистрировать ботов в Telegram. Найдите бота @BotFather: в окно поиска над списком контактов введите его имя.

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

Опасайтесь подделок, выбирайте натуральное!

Нажмите кнопку Start («Запустить»), чтобы начать диалог с ботом. Затем отправьте команду /newbot и укажите параметры нового бота:

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

Бот создан! @BotFather поздравит вас и отправит вам токен для работы с HTTP API. Токен выглядит примерно так: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11.

Client API и Bot API — это разные системы, у них разные токены. Токен Client API не сработает для доступа к Bot API.

Токен пригодится при отправке запросов к боту. @BotFather также может по вашему запросу отозвать токен (отправьте боту @BotFather команду /revoke) и сгенерировать новый.

А в любой непонятной ситуации выполняйте команду /help — и @BotFather вам покажет, на что он способен.

Готово!

Бот создан, но какой прок с молчаливого бота? Надо научить его чему-нибудь хорошему.— Ну скажи: «Кто там?», «Кто там?».

Бот отправляет вам сообщение

В Telegram найдите своего бота по имени через поиск, так же, как вы искали @BotFather. Нажмите кнопку Start («Запустить»), чтобы активировать его. Без такой активации бот не сможет отправлять вам сообщения.

Теперь можно отправить сообщение от имени бота в свой аккаунт. Самый простой способ — отправить GET-запрос из браузера, обратившись к методу API sendMessage и передав необходимые параметры:

  • chat_id — это ID того чата, в который бот должен отправить сообщение;
  • text — текст сообщения.

Запрос должен быть отправлен на https://api.telegram.org:

https://api.telegram.org/bot<ваш-токен>/sendMessage?chat_id=<id_чата_получателя>&text=<текст_сообщения> 

Чтобы бот отправил сообщение именно вам, нужно узнать ID своего Telegram-аккаунта. Спросите у Telegram-бота @userinfobot — он подскажет.

Если возникнут какие-то проблемы — посмотрите документацию для метода sendMessage в Bot API.

Запрос должен получиться примерно таким:

https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/sendMessage?chat_id=1234567&text=привет 

Составьте свой запрос и отправьте его через браузер.

Вам в Telegram придёт сообщение от бота, а на веб-странице отобразится JSON со всеми данными об отправленном запросе.

Заработало!

Даже если вы только что подключились к Telegram — вам уже есть с кем поговорить. Неплохое начало.

Бот получает ваше сообщение

Помимо отправки сообщений и другой активной деятельности бот должен получать сообщения с сервера Telegram.

Для этого существует два способа.

Первый способ: polling (англ. «опрос») — это метод, при котором программа регулярно отправляет запросы к серверу с целью проверить, не обновились ли данные. В Telegram-ботах для этого применяется метод getUpdates. Такой способ подходит для небольших проектов, он очень прост и не требует предварительной настройки.

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

Второй способ: webhooks, методика «обратных вызовов». При таком подходе сервер Telegram сам будет уведомлять бота о появившихся обновлениях. «Обновления» — это всё, что приходит боту от пользователя: новые сообщения, картинки или файлы. Этот метод предпочтителен для больших проектов, но он сложнее в отладке и настройке.

Polling — это просто запросы

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

https://api.telegram.org/bot<ваш-токен>/getUpdates 

Добавьте в запрос ваш токен и отправьте его через браузер. Никакие GET-параметры не нужны. Если этот запрос отправлять регулярно (например, раз в минуту) — это и будет polling.

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

Сообщения, отправленные боту, хранятся на серверах Telegram только 24 часа. Если бот не получил их в течение суток с момента отправления — он не получит их никогда: сообщения будут стёрты.





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: