AI-промпт для интеграции

Это готовый промпт, который вы вставляете в ChatGPT, Claude, Cursor или Windsurf — и получаете рабочий клиент MotivBuy плюс два хендлера для вашего бота. Промпт уже содержит описание API, форматы запросов и архитектурные требования, поэтому AI не приходится ничего додумывать.

Мы сделали его, чтобы можно было подключиться к MotivBuy за пару минут, не читая остальные разделы документации. Опишите свой стек одной строкой («Stack: aiogram 3 / Python» или любой другой) — и AI сам подберёт зависимости, оформление и стиль кода под ваш фреймворк.

Как использовать

  1. Скопируйте промпт ниже.
  2. Откройте ChatGPT, Claude, Cursor или Windsurf.
  3. Вставьте промпт, добавьте строку со своим стеком (например, «Stack: aiogram 3 / Python») и приложите ваш API-ключ.
  4. Получите готовый код и подставьте реальный API_KEY из раздела «💻 Интеграция» в боте.

Промпт

markdown
Ты — senior разработчик. Помоги интегрировать MotivBuy API в моего бота на МАКС (МАКС).

# Что такое MotivBuy
MotivBuy — биржа спонсорских каналов для слотов обязательной подписки в ботах МАКС. Перед целевым действием в моём боте (скачивание, поиск, выдача премиум-контента — НЕ на каждый /start) я показываю пользователю обязательную подписку на спонсорские каналы. После того как он подписался — выполняю целевое действие, я получаю деньги за каждую подтверждённую подписку.

# База
- Base URL: https://api.motivbuy.ru
- Authorization: `Authorization: Bearer <api_key>` (по одному ключу на бот; ключ берётся в кабинете MotivBuy)
- Content-Type: `application/json`
- Все ошибки: JSON `{code, message}` + стандартные HTTP-статусы (401, 403, 422, 429)

# Endpoints (ровно 2)

## POST /api/v1/publisher/request
Вызывается ПЕРЕД ЦЕЛЕВЫМ ДЕЙСТВИЕМ — например, перед скачиванием, поиском, выдачей премиум-контента. НЕ на каждый /start: гейт нужен только там, где пользователь хочет получить ценность от бота. `max_user_id` и `chat_id` берутся из любого события (BotStarted / MessageCreated.sender / MessageCallback.user). Тело:
{
  "max_user_id": int,         // id пользователя из update.from_user.user_id
  "chat_id": int,             // id личного диалога (chat.chat_id из BotStarted)
  "op_text": string?,         // (необязательно) свой текст OP-сообщения
  "check_button": string?     // (необязательно) свой текст кнопки проверки
}
Ответ:
{
  "all_subscribed": bool,
  "channels_left": int,
  "sent_message_id": string | null
}
- `all_subscribed=true` → пользователь уже подписан на все спонсоры. Просто пропускайте его в основной flow бота.
- иначе → MotivBuy сам отправил OP-сообщение через ваш токен (через МАКС API). Не нужно отправлять ничего самим.

## POST /api/v1/publisher/verify
Вызывается, когда пользователь нажимает кнопку «✅ Проверить подписку» в OP-сообщении. У этой кнопки callback `payload="op:check"`. Тело:
{
  "max_user_id": int,
  "chat_id": int
}
Ответ — той же формы. Если `all_subscribed=true` — продолжайте основной flow.

# Что нужно сделать в моём боте
1. Перед каждым ЦЕЛЕВЫМ действием (хендлеры скачивания, поиска, выдачи премиум-контента — НЕ обычный /start):
   - Достаём `max_user_id` и `chat_id` из текущего события.
   - Вызываем `POST /publisher/request`.
   - Если `all_subscribed=true` — выполняем целевое действие.
   - Иначе — выходим из хендлера, заморозив целевое действие до подтверждения (MotivBuy уже отправил OP-сообщение).

2. Хендлер на callback с `payload="op:check"`:
   - Вызываем `POST /publisher/verify` с теми же `max_user_id` и `chat_id`.
   - Если `all_subscribed=true` — повторяем замороженное целевое действие или открываем главное меню.
   - Иначе — ничего не делаем (MotivBuy сам обновил OP-сообщение).

3. HTTP-клиент: используй `aiohttp.ClientSession` (Python) или `fetch` (Node). Таймаут 10 с. Сетевые ошибки логируем и НЕ показываем пользователю — просто короткое «Попробуйте позже».

# Архитектурные требования
- Один общий `motivbuy_client` модуль/класс с методами `request(max_user_id, chat_id)` и `verify(max_user_id, chat_id)`.
- API_KEY читается из переменной окружения `MOTIVBUY_API_KEY`.
- Никаких хардкодов токенов в коде.
- Логировать каждый HTTP-вызов через `logging` (level INFO для 2xx, WARNING для ошибок).
- Если статус 429 — экспоненциальный backoff (1с, 2с, 4с, максимум 3 повтора).

# Что от тебя нужно
Напиши:
1. Полный код модуля `motivbuy_client.py` (или `.ts`/`.js` — в зависимости от моего стека).
2. Два хендлера для моего бот-фреймворка (укажи я стек после промпта).
3. README с инструкцией: что положить в `.env`, как запустить, что протестировать.

Не пропускай обработку ошибок. Не используй устаревшие зависимости. Не выдумывай несуществующие поля API — используй ровно то, что описано выше.

Подсказки

  • Замените MOTIVBUY_API_KEY на реальный ключ из раздела «💻 Интеграция» в боте.
  • Если AI сгенерировал устаревший aiogram 2.x — попросите «обнови на aiogram 3.x», код станет современным.
  • Промпт лучше всего работает с моделями Claude Sonnet 4.6+, GPT-5 и Gemini 2.5 Pro — они точнее держат структуру и не выдумывают поля.
  • Для бота на МАКС через maxapi укажите это явно: «Stack: maxapi 1.0 (Python). Для callback используй F.callback.payload == 'op:check'».
Промпт мы поддерживаем в актуальном состоянии вместе с API. Если что-то сработало не так или не хватает примера для вашего стека — напишите в поддержку clck.su/UGNZm, мы добавим.