Enver Dzheparov

3 октября 2026 г. · PHP · Telegram · Автоматизация

Как устроен мой Freelance Radar

Бот на PHP и SQLite, который раз в минуту проверяет фриланс-биржи, отсеивает лишнее и присылает в Telegram карточки заказов, которые сами обновляются.

На фриланс-биржах хорошие заказы разбирают в первые минуты. Сидеть с открытой лентой весь день я не могу: работа, учёба. Поэтому написал бота, который делает это за меня и присылает в Telegram только то, на что стоит откликнуться.

Минимальный стек

PHP 8.3 без фреймворков, SQLite, Telegram Bot API и cron на собственном VPS. Никаких очередей и демонов: для задачи «раз в минуту проверить пару страниц» этого более чем достаточно.

Cron запускает сборщик каждую минуту, а flock не даёт двум запускам наложиться, если биржа ответила медленно.

Откуда берутся заказы

Источников два. Первый отдаёт ленту проектов страницей, где данные о заказах лежат JSON-ом прямо внутри HTML. Разбирать вёрстку не нужно, достаточно найти этот JSON и декодировать. Оттуда же приходят бюджет «желаемый — максимальный», число предложений, дата публикации и статистика заказчика: сколько проектов он размещал и какой процент нанял.

Второй источник — RSS. Там меньше данных, зато формат стабильный, а дата берётся из pubDate.

Фильтры: что не стоит уведомления

Самое ценное в боте — не сбор, а отсев. Заказ проходит дальше, только если:

Каждой карточке бот ставит оценку совпадения в процентах, чтобы с первого взгляда было видно, насколько заказ подходит.

Карточки, которые обновляются

Одна из самых полезных вещей: карточка в Telegram живая. Бот хранит в SQLite связку «заказ — сообщение» и в течение нескольких часов после публикации пересчитывает число откликов. Если оно изменилось, карточка редактируется через editMessageText. Видно, что на заказ уже 30 предложений, и можно не тратить время.

Под карточкой кнопки «Интересно / Неинтересно». Отметки копятся, и по ним видно, какие заказы мне на самом деле подходят. Это основа для настройки фильтров.

Надёжность

Что получилось

Бот работает на моём VPS, у агентства есть отдельный экземпляр с двумя получателями и своими порогами бюджета. Главный вывод: в таких инструментах важнее всего фильтры и понятные уведомления. Собрать данные — полдела, сложнее сделать так, чтобы человек не начал игнорировать бота через неделю.

Кейс проекта →

Есть похожая задача?

Написать мне →