bot_warnings — Telegram-уведомления о предупреждениях Wildberries
Пара Telegram-ботов на Python на общем движке: они следят за предупреждениями Wildberries в PostgreSQL и автоматически рассылают подписчикам новые — один по предупреждениям FBO|FBS, второй по штрафам и замерам.

Слайд 1 из 3
ОПИСАНИЕ
Система уведомлений о предупреждениях маркетплейса, реализованная как один движок в двух экземплярах с разными фильтрами: bot_warnings отбирает записи с признаком «FBO | FBS» (исключая штрафы и замеры), а bot_warnings_dimensions — записи, начинающиеся со «Штраф» или «Замер». Каждый экземпляр работает поверх своей служебной таблицы (bots.bot_warnings и bots.bot_warnings_dimensions). Боты построены на чистом requests с собственным циклом long polling getUpdates; доступ к PostgreSQL — psycopg2 c DictCursor и настроенным TCP keepalive. Архитектура двухпоточная: фоновый daemon-поток опрашивает БД, основной поток обрабатывает команды (/start, /stop, /warnings). Подписчики хранятся в памяти в set под threading.Lock. Источник данных — таблица parser.warnings; выборка за текущий день учитывает часовой пояс (фильтр по дате с приведением created_at к Europe/Moscow) и дедуплицируется по составному ключу (артикул WB, артикул продавца, текст предупреждения, баркод). Защита от повторной отправки реализована через собственную таблицу: новые записи сравниваются с уже разосланными, сохраняются пакетно (execute_values с ON CONFLICT DO NOTHING) и сбрасываются в полночь по Москве (pytz) с защитой от повторной очистки в одну и ту же минуту. При старте бот сам приводит схему в актуальное состояние: идемпотентная миграция через анонимные блоки DO $$ добавляет недостающие колонки, снимает устаревшие UNIQUE-ограничения и создаёт актуальное, проверяя метаданные в information_schema и pg_constraint.
ИСПОЛЬЗУЕМЫЕ ИНСТРУМЕНТЫ
- Python
- Telegram Bot API
- requests
- PostgreSQL
- psycopg2
- SQL (DO-блоки
- information_schema/pg_constraint)
- pytz
- threading
- Git
РЕЗУЛЬТАТ
- Построен единый движок уведомлений о предупреждениях WB, развёрнутый в двух экземплярах с разными фильтрами (FBO|FBS и штрафы/замеры).
- Реализована выборка предупреждений за текущий день с учётом часового пояса и дедупликацией по составному ключу.
- Построена двухпоточная схема: фоновый поток опрашивает БД, основной обрабатывает команды; подписчики хранятся потокобезопасно.
- Реализован журнал отправленного в БД с пакетной вставкой (ON CONFLICT DO NOTHING) и автоочисткой в полночь по московскому времени.
- Реализована идемпотентная самомиграция схемы через DO-блоки и анализ information_schema/pg_constraint.
AI АССИСТЕНТ
Задать вопрос по этой работе