Токарев Lab Все проекты

БотМаркетплейсыЗапущен

Автобронь поставок: бот для слотов Озон и коэффициентов приёмки ВБ

Бот для селлеров в Telegram и MAX. На Озоне сам бронирует таймслот поставки в нужные даты и часы, на Wildberries следит за коэффициентами приёмки и присылает уведомление, когда на складе появляется подходящий слот.

Автобронь поставок

Зачем селлеру бот для слотов поставок

У каждой поставки FBO на Озоне есть таймслот: дата и интервал времени, когда склад примет товар. Свободные слоты на популярных складах разбирают быстро, особенно в сезон, и продавцу приходится по нескольку раз в день обновлять кабинет, чтобы поймать освободившееся окно.

На Wildberries похожая история с коэффициентом приёмки. От него зависит, сколько стоит сдать товар на склад, а бесплатная приёмка появляется ненадолго и на разных складах в разное время.

Задача была снять это ручное дежурство. Продавец один раз говорит боту, что ему нужно, а дальше бот следит сам и пишет, когда получилось.

Как бот бронирует таймслоты Озон

  • Продавец добавляет кабинет по Client ID и API-ключу. Кабинетов может быть несколько.
  • Бот подтягивает список поставок: номер, город, склад, количество товаров, статус. Список обновляется каждые 5 минут, отменённые поставки из него убираются.
  • Продавец выбирает поставку и отмечает в календаре подходящие даты и интервалы: ночь, утро, день или вечер, можно несколько сразу.
  • Каждые 30 секунд бот запрашивает свободные таймслоты через Ozon Seller API и бронирует первый подходящий.
  • После брони приходит уведомление, а запись попадает в историю. Если на одну поставку создано несколько задач, бот предупредит о дубле.

Озон отдаёт время слотов в UTC, поэтому бот переводит его в московское: в сообщениях всегда привычное время.

Коэффициенты приёмки Wildberries: как бот ловит бесплатную приёмку

У Wildberries нет метода, который позволял бы забронировать поставку через API. Поэтому здесь бот работает как сторож: он не бронирует, а находит подходящий слот и сразу сообщает о нём.

Продавец выбирает кабинет, склад, допустимый коэффициент, тип поставки и даты. Складов у Wildberries около 170, поэтому список в боте листается страницами. Раз в 5 минут бот проверяет коэффициенты приёмки: 0 означает бесплатную приёмку, 1 и выше платную, -1 недоступную. Как только на складе открывается приёмка с нужным коэффициентом, бот присылает уведомление и закрывает задачу, а продавец бронирует слот в кабинете.

У API Wildberries строгий лимит на такие запросы, 6 в минуту. Поэтому бот не опрашивает склады по отдельности, а собирает все склады задачи в один запрос на кабинет.

Один бот в Telegram и MAX

Бот работает в двух мессенджерах на общей логике. Аккаунты связываются шестизначным кодом, после этого баланс, кабинеты и команда общие, а уведомления приходят туда, где удобнее.

Для MAX сообщения пришлось подстраивать отдельно. Ширина пузыря там равна самой длинной строке, и короткие строки переносятся по буквам. Кроме того, в клавиатуре помещается не больше 25 рядов кнопок, поэтому длинные списки разбиты на страницы.

Команда и оплата

  • Владелец приглашает сотрудников ссылкой, которая действует 24 часа. Уведомления о бронях получает вся команда.
  • Автоброни покупаются пакетами по 1, 3, 5 или 10 штук, оплата через ЮKassa.
  • Реферальная программа: пригласивший и приглашённый получают по 2 автоброни.
  • Кнопка поддержки сразу передаёт владельцу бота имя и ID пользователя.

Как устроено

Node.js 20 и Express, база SQLite в режиме WAL, Telegram-бот на grammY, клиент для MAX написан отдельно на long polling. API-ключи селлеров хранятся в зашифрованном виде (AES-256). Фоновые задачи: автобронь Озон каждые 30 секунд, обновление поставок и проверка коэффициентов Wildberries каждые 5 минут. Бот работает на собственном VPS под PM2.

Скриншоты

Автобронь поставок: Главное меню бота в Telegram
Главное меню бота в Telegram
Автобронь поставок: Уведомление о забронированном слоте
Уведомление о забронированном слоте

Частые вопросы

Может ли бот сам забронировать поставку на Wildberries?

Нет. Wildberries не даёт метода бронирования через API, поэтому бот следит за коэффициентами приёмки и присылает уведомление, а бронирует продавец в кабинете.

Что нужно, чтобы подключить кабинет Озон?

Client ID и API-ключ из кабинета продавца. Ключ хранится в зашифрованном виде.

Можно подключить несколько кабинетов и сотрудников?

Да. Кабинетов может быть несколько, а сотрудников владелец добавляет по ссылке-приглашению. Уведомления о бронях приходят всей команде.

Как часто бот проверяет слоты?

Таймслоты Озон каждые 30 секунд, коэффициенты приёмки Wildberries каждые 5 минут.

Чем версия в MAX отличается от Telegram?

Функции одинаковые, логика общая. Если связать аккаунты, баланс, кабинеты и команда будут общими.

Нужно похожее?

Напишите, что хотите автоматизировать или сделать, обсудим задачу.