На сегодняшний день различные мессенджеры, такие как Telegram, используются не только для переписки с другом или поздравления с праздником. Для многих они стали одним из основных источников информации, средством делового общения, неотъемлемой частью ведения бизнеса. При этом количество пользователей постоянно растет. А для того, чтобы помочь владельцам крупных каналов в выполнении рутинных задач, были разработаны боты — небольшие приложения, которые самостоятельно выполняют заранее созданные задачи.
Ключевые слова: telegram, бот, python, программирование
О telegram -ботах
Сегодня telegram-боты — популярный способ получения, обработки и распространения информации. Боты используются многими сообществами, сервисами и отдельными пользователями сети Интернет. Telegram-бот работает непосредственно через интерфейс приложения Telegram, он имитирует действия «живого» пользователя. Многие компании, развивающие бизнес через глобальную сеть Интернет, используют возможности ботов для коммуникации с целевой аудиторией и выполнения однообразной рутинной работы (без использования наемных сотрудников). Однако их и в личных целях обычных пользователей. Идея данного проекта возникла следующим образом. Младший брат автора исследования учится во втором классе начальной школы. В настоящее время, в рамках школьной программы он изучает тему «Фонетический разбор слова», и иногда у него возникают некоторые трудности с корректным разбором слова. Улучшить навыки по данной теме может помочь telegram-бот. Его можно использовать для тренировки и при проверке домашних заданий, самоконтроле. При этом написанный алгоритм имеет возможность масштабирования и адаптации для решения не только данной конкретной задачи, но и серии схожих задач.
Telegram-бот состоит из двух частей: «backend» — внутренняя часть программы, отвечающая за обработку информации; «frontend» — визуализация данных и взаимодействие с пользователем. Новые боты создаются с помощью специальной утилиты « @BotFather » от создателя платформы Telegram, Павла Дурова. В Telegram используется один общий вид ботов, которых от обычных пользователей отличает только наличие приставки «bot» в имени. Сами же боты делятся на несколько направлений:
— Чат-боты, имитирующий общение на заданную тематику.
— Боты-информаторы о тех или иных событиях (новости, мероприятия).
— Игровые боты — в основном, это текстовые версии разных игр.
— Боты-асистенты, разработанные онлайн-сервисами как дополнение к основной веб-версии.
О разработке telegram-бот ов
Для написания telegram-бота использовался язык программирования Python. Язык Python имеет несколько стандартных примеров использования при разработке приложений, в числе которых Веб-разработка на стороне сервера (backend). Она включает в себя сложные серверные функции, с помощью которых веб-сервисы отображают информацию для пользователя. Например, веб-сайты должны взаимодействовать с базами данных и другими веб-сайтами, а также защищать данные при их отправке по сети. Одним из преимуществ языка Python является наличие большого количества свободно распространяемых библиотек — наборов часто используемых функций, которые разработчики могут включать в свои программы Python, чтобы не писать код с нуля. По умолчанию в Python доступна стандартная библиотека, которая содержит большое количество многократно используемых функций. Кроме того, доступно более 137 000 библиотек Python для различных задач. Чтобы использовать библиотеки в программе, нужно их сначала установить в консоли командой « pip install__ ». Далее в коде программы, перед использованием библиотеки нужно импортировать её командой import__ или from __ import__. В данном проекте использовалась библиотека «aiogram», которая предоставляет наиболее полный объем функций для создания telegram-ботов.
Общий алгоритм работы любого telegram-бота достаточно прост:
— бот имеет токен (уникальный набор цифр и букв), по которому устанавливается соединение программного обеспечения с ботом;
— сообщения, команды и запросы, отправленные пользователями, передаются на программное обеспечение, запущенное на серверах разработчиков;
— получая сообщение или команду, бот действует по заданному сценарию.
С помощью библиотеки «aiogram» данный общий алгоритм реализуется следующим образом. Библиотека использует стандартный токен telegram-бота и устанавливает соединение с платформой Telegram. Далее, с помощью блока кода handler telegram-бот «ловит» сообщения пользователя либо по определенному тексту, либо по команде. Под каждый handler (блок кода, отвечающий за получение сообщений от пользователей и формирование ответов) необходимо создать функцию, описывающую действия бота после срабатывания хэндлера. По данному алгоритму бот будет обрабатывать информацию и отправлять ответ человеку.
В примере, приведенном далее, хэндлер получает сообщение «/start» и отправляет человеку в ответ сообщение «Привет».
Разработка telegram -бота «Фонетический разбор слова»
Далее приведены основные этапы создания telegram-бота для фонетического разбора слова. Сначала создадим основной функционал программы — то есть разбор слова. Затем напишем работу бота в телеграмме.
Для проверки слова и его фонетического разбора, нужна справочная информация. Создадим в отдельном файле «мини словарик».
Чтобы этим словариком можно было пользоваться, импортируем эти справочные списки в файл с основными функциями
Первая функция будет преобразовывать заданное пользователем слово в список из букв это слова, для дальнейшей работы с ним. В ней работает цикл, который «пробегает» по слову занося каждую букву в список. В конце функция соответственно вернёт список из букв заданного слова.
Вторая функция «sound_count», в свою очередь, берёт за исходные данные список, который составит предыдущая функция. В ней также за основу берётся цикл, который проверяет каждую букву с помощью созданного нами «мини словарика» и определяет, сколько звуков она даёт. Выводит эта функция ужу строку типа «n букв и x звуков».
Третья функция «every_let» будет составлять характеристику звука каждой буквы. Код данной функции занимает 215 строк, поэтому опишем его алгоритм без листинга. За входные данные функция принимает список букв, созданный первой функцией, но к нему добавляется ещё один параметр, указываемый пользователем — номер ударного слога, в слове. С помощью цикла «пробегает» по списку букв и подробно описывает звуки, даваемые каждой буквой. В начале функции создаётся главный список «sounds» для характеристик звуков. А цикл записывает каждую характеристику как ещё один временный список «snd1» и его добавляет в главный список. В конце функция вернёт объёмный основной список «sounds».
В начале основного файла импортируем библиотеку aiogram, токен и справочные списки из «словарика»
Создадим первый Handler. Реагировать он будет на команду «start», в ответ поприветствует и отправит инструкцию пользования.
Создадим второй хандлер. Реагировать он будет на команду «f»: «вырезать» слово и номер ударного слога из сообщения пользователя и передавать функциям для расчета. В нём будет функция, преобразовывающая большой список характеристик звуков из третьей функции «every_let» в читабельное сообщение. И это сообщение он отправит пользователю.
Запуск telegram -бота «Фонетический разбор слова»
После завершения написания полного кода готовой программы, её нужно запустить на исполнение, а также разместить на одном из публичных сайтов в глобальной сети Интернет для постоянной работы. Это можно сделать несколькими способами:
- Запустить программу на своём компьютере с постоянным доступом в сеть Интернет, но тогда ПК должен быть постоянно включен, что сопровождается затратами электроэнергии и трафика доступа в сеть.
- Запустить на сторонних облачных сервисах: Heroku, AWS, Replit.
- Запустить на домашнем сервере, при этом необходимо знать особенности настройки сетевого оборудования.
Конечно, способ необходимо выбирать, исходя из целей проекта и возможностей разработчика. В рамках данного исследования оптимальным является второй способ. А именно, бот был размещен на бесплатном сервисе Replit, от создателей портала GitHub. По факту это редактор программного кода, доступный онлайн, с авторизацией и сохранением проектов в облаке.
На публичном ресурсе Replit можно запускать свой собственный код, но в бесплатной версии тарифа он выключится через 30 минут. Однако, есть способ обойти данное ограничение. Этот способ изложен на популярном информационном ресурсе habr.com. Cуть метода заключается в том, что к основному файлу добавляется функция keep_alive() из дополнительного файла, которая запускает небольшой сайт на библиотеке flask.
Также потребуется использование сторонней службы мониторинга «UpTimerRobot», которая по настройке будет заходить на сайт каждые 5 минут. Тем самым будет создавать иллюзию «живого» пользователя из-за чего Replit будет думать, что на сайт постоянно кто-то заходит, и продлевать время работы.
Заключительным этапом является проверка работоспособности telegram-бота. Для чего в поисковой строке Telegram вписываем имя пользователя бота «@FoneticAnaliz_bot». Далее пишем «/start» или нажимаем на кнопку Запустить. В ответ получаем приветствие и инструкцию по пользованию.
Следуя инструкции, отправляем сообщение с запросом фонетического разбора слова, например, «кукла»:
Убеждаемся, что разработанный telegram-бот работает. Кроме того, любой желающий может проверить работоспособность telegram-бота, найдя его по имени пользователя, указанному выше.
Литература:
- Гаско, Р. Простой Python просто с нуля / Р. Гаско — М.: Солон-Пресс, 2019. — 256с. — ISBN 978–5-91359–334–4.
- Мэтиз, Э. Рик Гаско Простой Python просто с нуля / Э. Мэтиз — С-Пб.: Питер, 2020. — 512с. — ISBN 978–5-4461–1528–0.
- Портал «Habr» — URL: https://habr.com/ru/all/ (дата обращения: 24.01.2023).
- Портал «tlgrm». Статья «Боты: информация для разработчиков» — URL: https://tlgrm.ru/docs/bots (дата обращения: 03.12.2022).