Боты есть везде. Кажется, только вчера мы даже не знали об их существовании; теперь едва представляем жизнь без них.
Они стали широко популярными среди многочисленных активных пользователей мессенджеров, поскольку у них есть различные возможности использования — от развлекательного контента, в том числе пошаговых игр и сбора бонусных очков в ресторанах, до поддержания плана диеты, отслеживания поставок и даже осуществления платежей для разных услуг.
Разберемся почему боты имеют такую популярность и как создать бота в телеграмме самостоятельно.
Python Telegram Bot
Почему они так популярны? В чем их секрет? Я думаю, что более актуальным вопросом является то, почему они удобнее, чем приложение.
И есть несколько причин:
- Минималистичный и простой дизайн. Безусловно, бот просто не может иметь красочный дизайн. Но, вне всякого сомнения, по сравнению с многочисленными приложениями с различным дизайном, когда вам нужно помнить, где и что нажимать, бот более универсален и прост; он предлагает простое общение с помощью текстов.
- Бот имеет минимум рекламы и ориентируется на потребности пользователей. Вам не нужно устанавливать сотни приложений для каждой службы, если вы можете получить всю необходимую помощь от бота. Это особенно полезно для ресторанов и магазинов. Клиенты редко стремятся установить приложения из множества мест, которые они посетили. Из-за этого владельцы бизнеса пропускают отзывы клиентов и теряют связь с ними. Если бы в каждом из этих мест был свой бот, доступный в разных мессенджерах, это было бы более удобно для пользователей. Никто не любит заполнять память телефонов ненужными приложениями, которыми будут использоваться один или два раза. Тем не менее, клиенты должны взаимодействовать с владельцами услуг.
- Нет необходимости в регистрации, авторизации и постоянной повторной регистрации. Используя бота, пользователь проходит авторизацию только один раз, когда он добавляется в чат. Клиент может использовать бота столько, сколько необходимо, и когда он больше не нужен, пользователь просто блокирует его. Вот и все, легко! Нет сброса.
Итак, мы описали основные преимущества ботов, и теперь вы должны быть готовы создать свой собственный бот. Давайте перейдем к практике. Но сначала мы рассмотрим вопросы, которые необходимо решить на стадии разработки.
Нюансы развития Telegram Bot
Когда мы уже определили причины создания бота, пришло время подумать о том, как планируем организовать процесс разработки и какие инструменты понадобятся. Далее мы продемонстрируем на практике, как создать первого бота.
В этой части мы распланируем, как создать приложение и какие инструменты разработки использовать.
Поскольку это руководство для начинающих, мы запустим сервер с единственной конечной точкой, получающей телеграммные сообщения и дающей ответы.
Для этого мы будем использовать следующие инструменты:
- bottle — для сервера, простой и легкий микро-фреймворк WSGI;
- requests — для отправки запросов на телеграмму. Запрос lib не нуждается в представлении. Он повсеместно используется во всем мире в различных проектах.
Примечание: вы должны установить эти инструменты на компьютер. Они понадобятся позже. Для этого откройте консоль bash и установите ее через pip.
ngrok — это приложение, предоставляющее общедоступные URL-адреса для взаимодействия с Telegram WebHook на этапе разработки. Это полезно, поскольку Telegram не сможет установить соединение с локальным сервером, потому что мы не можем указать локальный адрес в конфигурации Telegram API.
Необходимо скачать ngrok с официального сайта и положить установленное приложение в папку с проектом.
1 этап создания
Внимательно изучите эту часть, где мы предоставим подробное руководство по разработке ботов и покажем полезные инструменты для этого.
Необходимо зарегистрироваться на Telegram (очевидно).
Откройте приложение Telegram, в поиске наберите @BotFather. Напишите сообщение /newbot и пройдите представленные этапы. По окончанию у вас будет —
- собственный токен
- телеграмма URL — api.telegram.org/<your token >
Требуется начать виртуальный разговор. В строке поиска требуется ввести имя бота. Нажав на кнопку /start. Введите что-то вроде «Привет» (помните, что все разговоры ведутся на английском).
Запустите в браузере ссылку:
Когда вы открываете эту ссылку, он связывается с сервером Telegram. Ответное сообщение напоминает словарь Python. Должно прийти сообщение такого типа, смотрите дальше.
С помощью сообщения /sendMessage открывается документация, вы заметите, что для этого метода требуются chat_id и text. В браузере можно соединить эти настройки, используя «?» и & для следующих. Отправка месседжа получается так, смотрите скриншот.
WebHook
(Вы можете пропустить эту часть, если вы знакомы с WebHook).
Короче говоря, WebHook — это концепция API, популярность которой растет. Концепция WebHook проста. WebHook — это обратный вызов HTTP: HTTP POST, который происходит, когда что-то происходит; простое уведомление о событии через HTTP POST.
Чтобы объяснить немного больше: иногда взаимодействие между приложениями в сети требует немедленной реакции на событие, в то время как решения для постоянных и непрерывных соединений в основном громоздки, требовательны и трудны в поддержке. В этом случае лучшее и простое решение — немедленный обратный вызов через HTTP (чаще всего POST).
Другими словами, это решение обеспечивает ответ на любое событие внутри одного приложения посредством отправки HTTP-запроса POST другому подключенному приложению, чтобы сообщить об этом или заставить его ответить.
Эта точная концепция называется WebHook. Он широко используется для:
- получения данных в режиме реального времени;
- получения данных и их передача;
- обработки данных и предоставления ответа.
Это лучшее решение для взаимодействия клиента Telegram (приложение Telegram) с нашим проектом.
Часть кодирования
Наконец, мы приступаем к самой практической части, где вы сможете разработать бот Telegram.
Основная задача: научить бота перевернуть послание.
Во-первых, создайте папку для нашего бот-проекта.
Во-вторых, создайте файл bot.py, чтобы сделать бутылочный сервер.
Далее мы разрабатываем bot.py
Давайте попробуем запустить наш сервер. Для этого откройте bash в папке вашего бота.
В результате вы должны увидеть что-то вроде этого.
Затем откройте новую вкладку. На следующей вкладке мы начнем ngrok./ngrok http <our_server_port>
После вы увидите что-то вроде этого:
Теперь давайте установим WebHook.
api. telegram. org/bot<your_token>/setWebHook?url=https://<your_ngrok_url.ngrok.io/
Примечание. Чтобы найти URL-адрес ngrok, необходимо запустить ngrok. Затем на экране, вы найдете URL (он выделен на нашем скриншоте). Этот URL вы используете в ссылке для настройки WebHook.
Ответ на переход по ссылке должен быть таким:
{«ok»:true,»result»:true,»description»:»Webhook was set»}
Давайте проверим, удалось ли вам настроить WebHook. Перейдите по этой ссылке, используя свой токен:
api. telegram. org/bot<your_token>/getWebhookInfo
Если все в порядке, вы увидите то же значение адреса ngrok перед ключом URL, которое указали при настройке.
Поздравляю, он жив!
Теперь нам нужно реализовать механизм запроса / ответа на сообщение.
По сути, наша конечная точка получает данные в формате json. Итак, обычно вы увидите сообщение с данными.
Это должно быть что-то подобное на вкладке консоли, где запущен сервер.
Более подробную информацию о параметрах можно найти в официальной документации Telegram.
Теперь нам нужно извлечь chat_id и текст, чтобы перевернуть наше сообщение назад и отправить ответ.
Теперь мы уже подготовили ответ. Давайте отправим его боту Telegram.