Rozklad_bot: бот в Telegram с расписанием занятий в университете
Highload продолжает публиковать истории о pet-проектах, вошедших в топ-20 лучших по итогам голосования наших читателей. Параллельно эти проекты оценивает жюри из опытных разработчиков и инвесторов. Победителей конкурса мы планируем объявить 10 июля.
Лучшие проекты получат призы от компании Genesis: занявший первое место — Apple iPhone 12 64GB, второе место — наушники Marshall Monitor II ANC Black, третье — набор Arduino.
Дальше — рассказ студента Владислава Пиотровского о его pet-проекте — Telegram-боте и базе данных с расписанием занятий в университете Rozklad_bot.
Я учусь в Одесском национальном экономическом университете на менеджера предприятия и увлекаюсь программированием. В моем вузе есть сайт с электронным расписанием, работает исправно, но не «запоминает» факультет, курс, группу — и их приходиться вводить вручную.
Владислав Пиотровский, создатель Rozklad_bot
Мне было лень каждый раз заходить в браузер, искать сайт, вводить одно и тоже. Также я заметил, что на это жалуются все однокурсники, поэтому решил автоматизировать и упростить процесс.
Проект решает получить быстрый доступ к расписанию, сориентироваться в университете и получить прочую нужную студенту информацию.
На данный момент уже появилось приложение от разработчиков сайта университета, но ботом по-прежнему продолжают пользоваться 86% студентов.
Два года назад мы попытались сделать приложение на C# (его писал мой друг), но разобраться в древней системе управления базами данных Firebird, которую нам предоставил университет, мы так и не смогли. У нас практически не было опыта в мобильной разработке, я вообще не умел программировать.
Через некоторые время я изучил Python и решил снова взяться за проект. Я придумал, как «вытягивать» данные с сайта другим способом: привязывал данные к Telegram-аккаунту и сохранял в базу данных. После этого делал запрос по данным и скриншот браузера через Selenium, скидывал картинку в Telegram. Я показал бота своей группе — им понравилось.
Бот в Telegram с расписанием занятий в университете
С начала нового семестра я решил скидывать только текст, так как скриншот забирал очень много ресурсов, а на большом масштабе это привело бы к задержке в работе бота. Также решил сохранять логи активности, чтобы понимать, как пользуются ботом, и создал ORM (Object-Relational Mapping).
Вскоре было принято решение перейти на PostgreSQL, изменить таблицы на более универсальные. Для миграции данных были написаны специальные скрипты, поскольку новая схема сильно отличалась от старой.
На логической схеме системы можно увидеть Redis — он пока не имплементирован, но будет использоваться для кэширования, чтобы поднять скорость ответа.
Telegram-бот — это консольное приложение, состоит из трех раздельных модулей:
Для удобства общения с базой данных используется SQLAlchemy ORM, а с движком для API общаюсь с помощью специального класса. Когда начнут появляться новые API (у разных вузов — разные сайты и точки доступа), будем использовать фабричный паттерн, чтобы создать единый класс для всех API.
Технологии в проекте:
Основные трудности, с которыми столкнулись:
Команда проекта
Проект на Python от начала до конца писал я, но сейчас решил масштабироваться, поэтому привлек команду своих друзей с которыми мы занимаемся разработкой чат-ботов под заказ. Всего нас 5 человек, некоторые ребята параллельно работают в нескольких командах.
Отдельная команда делает web-админ на Flask (чтобы отслеживать активность пользователей в разных университетах и темпы роста), вторая занимается базой данных, третья — пишет самого бота, четвертая — отвечает за бизнес-логику и маркетинг.
Бот уже запущен для 55 университетов в 13 областях для 300 000 студентов: в день у нас — 1500 уникальных пользователей в неделю — 3000, в месяц — 5000. Всего у нас 7500 пользователей.
Пока серьезных багов нет, если они возникают, то бот скидывает traceback и переменные окружения в специальный чат.
Сайт Rozklad_bot
Изначально проект создавался как социальный, чтобы упростить жизнь студентам. Я регулярно его обновлял и делал рассылки пользователям о новом функционале. Однажды меня попросили сделать рассылку об университетском мероприятии и дали немного денег.
Я начал продавать рекламу в боте для мероприятий и бизнесов, нацеленных на студентов. Цена пользователя для рассылки получилась в районе 0,1 грн. Сейчас моя аудитория — 7500 человек, и есть доступ к API вузов общим количеством 100-200 тысяч студентов. Если не спамить и уважительно относиться к пользователям, то только с этого бота можно получать $1000-4000 в месяц, а дальше под такую огромную аудиторию можно запускать новые проекты.
В планах — поисковик аудиторий, чтобы по номеру кабинета получать описание его местонахождение. Это будет уникальным сервисом, который можно «нарастить» на существующий продукт и заходить с ним в новые вузы.
В рамках конкурса pet-проектов разработчики и инвесторы оценят проект Rozklad_bot по таким критериям:
1. Оригинальность идеи.
2. Качество кода.
3. Технический уровень.
4. Жизнеспособность идеи.
5. Перспективы проекта как бизнеса.
6. Инвестиционная привлекательность.
Победителей среди 20 кейсов определят на основе оценок инвесторов (45%), разработчиков (45%) и голосов читателей Highload (10%).
Более подробно, кто и как будет оценивать кейсы, можно прочитать здесь: статья об экспертах, критериях и правилах конкурса.
Павел Дмитриев
Senior Fullstack Mobile разработчик в Postindustira.
Оценивает проекты на Python.Начинал карьеру как Python разработчик, участвовал в создании одной из лидирующих на рынке CRM для малого бизнеса. Директор образовательного центра в Postindustria. Основные используемые языки Python, Objective-C и Swift.
Олег Лавренко
Head of Engineering Department Genesis на проекте AmoMedia.
Оценивает backend-проекты на Python. У Олега больше 8 лет опыта в IT: от инжиниринговых позиций до руководителя департамента, где он занимается оптимизацией процессов разработки, строит инженерную культуру, проектирует архитектуру приложений и сервисов AmoMedia.
Елена Мажуга
Старший инвестиционный аналитик Genesis Investments.
Роман Бабицкий
Основатель инвесткомпании Babitskyi Investment, глава совета по вопросам иностранных инвестиций и экономического развития Украины.
Дмитрий Томчук
Основатель инвестиционного фонда Fison.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…