В статье рассматривается разработка телеграм-бота на языке программирования python на основе библиотеки aiogram. Проект предназначен для нахождения пользователем мест сдачи для выбранного им вторсырья. Итоговый проект способствует раздельному сбору мусора населением посредством помощи в поиске пунктов приёма мусора. В ходе работы над проектом была проанализирована работа аналогов телеграм-бота «Эко-друг», языки программирования, а также подходящие библиотеки для решения задач, поставленных перед проектом. Был написан основной программный модуль, позволяющий в дальнейшем развивать проект. Составлена первичная база данных пунктов приёма Железнодорожного и других районов города Красноярска. Для тестирования приложения были привлечены ученики МАОУ СОШ № 19.
Ключевые слова: телеграм-бот, программирование, Phyton, вторсырьё.
На данный момент мессенджеры стали привычным способом коммуникации для огромного количества человек. Люди используют мессенджеры для работы, развлечений и быстрой связи с другими людьми. Так Telegram, являющийся одним из самых популярных мессенджеров, по данным сайта Statista посещают около700 миллионов человек в месяц. По количеству аудитории Telegram входит в пятерку самых популярных мессенджеров в мире [1].
Одной из особенностей Telegram является платформа для создания ботов. Это аккаунты, которые управляются программно, а не людьми. Программа общается с пользователями в чате Telegram и может выполнять различные действия, которые мы в нее заложим. Так уже существует огромное количество телеграм-ботов, которые помогают при выборе услуг, записывают на различные услуги, подбирают фильмы, одежду, музыку и многое другое — варианты использования ботов почти ничем не ограничены. Благодаря своей функциональности боты очень удобны для выполнения совершенно различных задач, причем выполнять их они могут беспрерывно. Именно поэтому рынок телеграм-ботов сегодня очень активен. Они активно используются сейчас, а в будущем смогут применяться еще шире и чаще [2].
Исходя из этого, создание телеграм-бота является самым логичным и простым способом решения цели, поставленной мною: разработка прототипа мобильного приложения для упрощения процесса самостоятельной сортировки мусора и сдачи вторсырья населением.
Телеграм-бот будет показывать ближайшие места сдачи, а также первичную информацию о пунктах приёма. Пользователь сможет выбирать вид мусора, который хочет сдать. Рассмотрим требования к проекту:
— Удобный интерфейс для работы с ботом на всех платформах.
— Реализация предоставления информации ботом по категориям вида вторсырья.
— Предоставление наиболее важной информации о пунктах приёма, в удобном виде.
— Возможность отображения мест сдачи, в порядке близости к расположению пользователя.
Также стоит определиться со способом создания бота.
Для создания телеграм-ботов обычно используются такие библиотеки как [3]:
При использовании MTProto API (Telegram API) [4]:
— Telethon, на Python;
— Pyrogram, на Python.
При использовании Telegram Bot API [4]:
— Aiogram, на Python;
— Telegraf, на JavaScript.
У Telegram один единственный API, поэтому нет принципиальной разницы, с помощью каких инструментов с ним взаимодействовать. Но стоит понимать, что для создания данного приложения достаточно использовать сообщения Telegram для интерфейса, поэтому практичнее использовать Telegram Bot API. Я выбрал пользоваться Aiogram на Python, так как он обладает большой функциональностью, а сам Python имеет огромное количество библиотек, благодаря чему на нём проще что-либо реализовать.
Для написания кода будет использоваться среда разработки PyCharm, так как она предоставляет удобные инструменты и функции для работы на Python. Теперь можно приступить к созданию бота.
Большая часть написания данного телеграм-бота не составляет особых проблем. Подробно про написание телеграм-ботов на Aiogram можно узнать на сайте aiogram.ru [5]. Но бот также должен уметь определять расстояние от пункта приёма вторсырья до пользователя, чтобы предоставлять информацию о местах сдачи вторсырья в порядке близости к пользователю. Для решения данной проблемы сделаем отдельную клавиатуру, которая будет запрашивать получение данных о местоположении пользователя (рисунок 1):
Рис. 1. Клавиатура для получения координат пользователя
После чего создаем message_handler, который будет получать координаты пользователя, и создадим переменные lat и lon, куда будут записываться широта и долгота пользователя соответственно (рисунок 2) (для поддержки многопользовательского режима использования бота, стоит записывать координаты пользователя в двумерный список, или напрямую в базу данных).
Рис. 2. Message_handler для записи координат пользователя
Нахождение расстояние по координатам осуществляется по данной формуле (рисунок 3):
Рис. 3. Нахождение расстояния по координатам
Помимо написания кода, также нужно наличие базы данных, где будет содержаться вся информация о местах сдачи. Самую полную информацию о пунктах приёма, а также большее их количество легче всего можно найти в приложении 2гис. Также была взята часть информации с сайта vyvoz.org, однако на этом сайте было гораздо меньше пунктов приёма и информации о них. Все остальное, это в основном сайты отдельных компаний, которые занимаются не приёмом вторсырья, а его вывозом.
Для хранения всей информации, а также быстрому доступу к ней была использована программа SQLite, которая позволяет создавать в ней базы данных, и легко выводить их. Для этого я использовал библиотеку sqlite3.
Моя идея не претендует на уникальность, однако имеются весомые основания, почему мой проект может быть конкурентоспособным с аналогами данного приложения. Для сравнения возьмём приложение со схожей идеей: +1город.
Это приложение работает по огромному количеству городов на территории России. Однако пользователи пишут, что информацию во многих городах почти не обновляют, из-за чего в приложении часто указаны неверные адреса и давно закрытые компании. Мой проект на данный момент рассчитан только на Красноярск, но предоставляет возможность обратной связи для сообщения обо всех неточностях, а также о незаписанных мной пунктах приёма в телеграм-боте, что позволит оперативно улучшать бота.
Также стоит упомянуть, что телеграм-бот сможет привлечь огромную аудиторию пользователей мессенджера Telegram к сдаче вторсырья, так как мобильный помощник будет находиться прямо в их мессенджере.
Итоговый проект предназначен для помощи в поиске пунктов приёма мусора. Раздельная сдача мусора положительно повлияет на экологическое состояние города Красноярска, а также обратит внимание людей к проблемам экологии.
Первая апробация приложения планируется в моём классе: я попрошу проверить моих одноклассников работоспособность приложения, функцию предоставления информации о пунктах приёма в порядке близости к пользователю, а также попрошу сообщить о всех неисправностях и ошибках в работе телеграм-бота.
Статья подготовлена в рамках реализации проекта Телеграм-бот «Эко – друг» при финансовой поддержке Красноярского краевого фонда науки.
Литература:
- Отдел исследований Statista. — Текст: электронный // Statista: [сайт]. — URL: https://www.statista.com/topics/9640/telegram/#topicOverview (дата обращения: 17.04.2023).
- Telegram-боты — перспективное направление для повышения дохода разработчиков.. — Текст: электронный // Webformyself: [сайт]. — URL: https://webformyself.com/telegram-boty-perspektivnoe-napravlenie-dlya-povysheniya-doxoda-razrabotchikov/ (дата обращения: 17.04.2023).
- Всё, о чём должен знать разработчик Телеграм-ботов.. — Текст: электронный // Habr: [сайт]. — URL: https://habr.com/ru/articles/543676/#apis (дата обращения: 17.04.2023).
- Telegram APIs | Bot API. — Текст: электронный // telegram.org: [сайт]. — URL: https://core.telegram.org/api (дата обращения: 17.04.2023).
- Aiogram уроки — Текст: электронный // Aiogram: [сайт]. — URL: https://aiogram.ru (дата обращения: 17.04.2023).