AI-промпт для интеграции
Это готовый промпт, который вы вставляете в ChatGPT, Claude, Cursor или Windsurf — и получаете рабочий клиент MotivBuy плюс два хендлера для вашего бота. Промпт уже содержит описание API, форматы запросов и архитектурные требования, поэтому AI не приходится ничего додумывать.
Мы сделали его, чтобы можно было подключиться к MotivBuy за пару минут, не читая остальные разделы документации. Опишите свой стек одной строкой («Stack: aiogram 3 / Python» или любой другой) — и AI сам подберёт зависимости, оформление и стиль кода под ваш фреймворк.
Как использовать
- Скопируйте промпт ниже.
- Откройте ChatGPT, Claude, Cursor или Windsurf.
- Вставьте промпт, добавьте строку со своим стеком (например, «Stack: aiogram 3 / Python») и приложите ваш API-ключ.
- Получите готовый код и подставьте реальный
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, мы добавим.