Эту статью я начал писать не из коммерческих целей, а скорее чтобы поделиться интересным решением. Это не история успеха и возможно материал покажется не самым квалифицированным. Поэтому прошу не оценивать мою статью в профессиональных категориях, только фан.
Эта история началась ещё в конце осени 2024 года. На тот момент я, окрылённый покупкой первой машины — ВАЗ 2108, очень переживал за дорожную ситуацию. Прав на тот момент у меня ещё не было, кроме того машине не была на учёте и не имела страховки. Было больше желание поковыряться в машине, чем поездить. Но все таки детали продаются в магазине, а до магазина приходилось добираться.
Внимание: автор никогда не садился за руль без прав, вся выше и ниже изложенная история сообщает о вымышленном персонаже. Всё повествование происходит от лица вымышленного автором персонажа.
Ещё тогда, холодным вечером ноября добираясь до магазина автозапчастей на такси я увидел пост ДПС, примерно 3 полицейских машины, которые остановили пару водителей. В голову закралась одна идея: А что если посты ДПС будут отображаться на какой-нибудь карте. Обсудив эту идею с товарищем, она показалась ему бесперспективной, поскольку далеко не все водители ставили бы отметку поста ДПС в моём чудо-приложении, коих сотни. Поэтому эта идея была отложена в долгий ящик.
Около 6-7 месяцев спустя, уже пару раз остановленный сотрудниками ДПС я начал опасаться за штрафы или перевозку машины на штраф стоянку и я все таки вернулся к этой идее.
Они среди нас (или Джонни, они на деревьях!)
Самой сложной задачей стал поиск. Вспоминаем мой разговор с другом, отметки на картах не самая лучшая идея. Не наберём людей, которым будет не лень ставить метки.
Я начал осмысливать опыт езды человека с тонировкой или без прав (осуждаем тех, кого лишили). И тут пришла новая идея, ЧАТЫ! В каждом городе есть чатик, где люди спрашивают о постах ДПС и сообщают о них. Некоторые даже отправляют гео, это и легло в основу будущей технологии, которую я назвал Bluestec (Blue Spot Technology), ну и звучит также круто как VTEC у хонды.
И так... АВТОМАТИЗАЦИЯ!
На входе у нас есть: Тестовый чатик г. Екатеринбург (который мы и будем использовать для тестирований), python, руки и... пиво (много).
Первым делом нужно было как то отсеивать лишние сообщения, поскольку в такие чаты летит самая разная информация: начиная от вопросов "как там поживает улица X", заканчивая спам-сообщениями с рекламой подработки, после которой мы успешно познаем вкус еды в СИЗО.

Для фильтрации было решено использовать NLP либу Natasha. Для нее мы в дальнейшем составили словари на (100+ поисковых слов, слов для локаций и бан-слов).

В проекте блюстека мы все организовали максимально просто: посредством словарей в JSON'ах, которые можно редактировать время от времени.

Пример жсончика с игнор словами.
Теперь о том, как мы уговорили всех админов с подобными чатами добавить нашего бота в чат. И тут есть загвоздка.... Никак!
Посчитав свой бюджет в виде банки пива и желания заработать миллион долларов не создав аккаунт на онлифансе. Я решил схитрить. ЮЗЕР БОТ В ТГ! Большинство таких чатов чисто приватные, юзербот для сбора данных стал идеальным решением, которое будет получать всю необходимую информацию без ведома админов и будет выглядеть как аккаунт обычного ровного пацанчика с уралмаша на 14ке.
Таким образом я и допилил технологию-шпиона bluestec. Закончив этот этап разработки я докрутил пару нужных систем: сбор геопозиции, тайм-бан приема сообщений от пользователей после определенных action'ов и получилось... ЭТО:

Благодаря адекватно собранным словарям и грамотно отлаженной системе получился адекватный сбор только нужной информации. Кроме того, на каждый город можно прикрутить сколько угодно чатов, подвязав по одному юзерботу на каждый (или одного на несколько чатов).
В этот момент передо мной встало пару проблем с производительностью и ограничениями Telegram API:
Запросы. У нас есть серьезные лимиты на отправку сообщений ботами в секунду. Представив, что у нас будет 100 городов, где каждые 3-4 минуты может приходить по 10 уведомлений я понял, что ограничения телеграма просто не дадут мне реализовать такой подход.
Нагрузка. Отправлять 1000 сообщений вместо 10, каждому пользователю отдельно только потому что у каждого отдельный чат - нецелесообразно.
Кроме того в самом боте ведь иногда можно делать рассылки, пользователь может замутить бота чтобы не получать их. Но так он и потеряет возможность получать уведомления.
Итак. Все эти недочеты я исправил очень просто: бот шлет сообщения в закрытый ТГК каждого города, который создается админом и настраивается для бота отдельно. Каждые 3 минуты в каждый тгк приходят уведомления со всеми найденными сообщениями, а бот расходует меньше ресурсов и не требует расширения лимита запросов по API.
Плюсом был подтянут вопрос производительности проекта, немного поработал с потреблением памяти и в целом потреблением ресурсов системы и вышло это:
В спокойном режиме при 3х запущенных экземплярах блюстека, основного бота, postgresql и redis'а, на одной машине потребляется всего 750-800МБ ОЗУ, в пике доходит до 1200МБ ОЗУ. Много это или мало, решайте сами, но я считаю, что для проекта на python с использованием NLP вышло весьма достойно.
Где потыкать?
Вы можете попробовать уже рабочий проект тут: ссылка, название получилось весьма забавным. Ментометр (От слова на букву М...)
Сервис не нарушает никаких законов РФ и предназначен только для добросовестных целей и улучшений ситуации на дорожном пространстве.

В данный момент в боте работает всего 2 активных города, но мы постепенно начинаем расширять базу и для других городов. Можете добавлять в обсуждение статьи какие населенные пункты можно добавить и мы это сделаем.
p.s. Бот в данный момент абсолютно бесплатный, платить ни за что не нужно.