{"_id":"@anyads/sdk","_rev":"6-2c7d6dbe5e0352da178196cb55773aad","name":"@anyads/sdk","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.1":{"name":"@anyads/sdk","version":"0.1.1","keywords":["telegram","bot","ads","anyads","monetization"],"author":{"name":"AnyAds.online"},"license":"MIT","_id":"@anyads/sdk@0.1.1","maintainers":[{"name":"sleger","email":"msleger56@gmail.com"}],"dist":{"shasum":"c07d1f134bf34d47ff7e98f0af8cbc463f1709da","tarball":"https://registry.npmjs.org/@anyads/sdk/-/sdk-0.1.1.tgz","fileCount":15,"integrity":"sha512-BGrIGQbGR0rMOsWfKdrv8Np2W6ob74czTBt6sQ8V0mtIXaHojziPmKMwf+mV2MxD9RBdgfqk0Q6UsQbdC3LZ9A==","signatures":[{"sig":"MEUCIQC/IAgi/5T7+9WMHN5bLkMtmdq9x4D3aDpuUoRSJTISjQIgNiZSj09sxj/2sYQp43Dokh8m835LH7cyiA/6RTVMOJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37422},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"sleger","email":"msleger56@gmail.com"},"_npmVersion":"10.9.2","description":"Official AnyAds SDK for Node.js to monetize your Telegram bots.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"uuid":"^9.0.1","axios":"^1.7.2","getmac":"^5.20.0","telegraf":"^4.16.3"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.12.12","@types/uuid":"^9.0.8"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.1_1755709306090_0.4089862451256987","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@anyads/sdk","version":"0.1.2","keywords":["telegram","bot","ads","anyads","monetization"],"author":{"name":"AnyAds.online"},"license":"MIT","_id":"@anyads/sdk@0.1.2","maintainers":[{"name":"sleger","email":"msleger56@gmail.com"}],"dist":{"shasum":"a75b7a3f8e2f5cb95263f8b19bf0fa87a2e6803b","tarball":"https://registry.npmjs.org/@anyads/sdk/-/sdk-0.1.2.tgz","fileCount":15,"integrity":"sha512-Z8G94syjjIN9+wTX063rCmA0ka070NcCV5CplqHksSHVOtk9KKp9wFAJsJYma63Z3yIwR73N31LyHkPIAPY3+w==","signatures":[{"sig":"MEUCIFbObuVtql6B6p9Epb8kPstyo6nEdECLBpyzlWyyM4QlAiEAg5Y69vAqBJzdDJ04ZVMXO5YR4BiK2ssHlsawat+ivQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37414},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"sleger","email":"msleger56@gmail.com"},"_npmVersion":"10.9.2","description":"Official AnyAds SDK for Node.js to monetize your Telegram bots.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"uuid":"^9.0.1","axios":"^1.7.2","getmac":"^5.20.0","telegraf":"^4.16.3"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.12.12","@types/uuid":"^9.0.8"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.2_1755715500130_0.8628189381486586","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@anyads/sdk","version":"0.1.3","description":"Official AnyAds SDK for Node.js to monetize your Telegram bots.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"keywords":["telegram","bot","ads","anyads","monetization"],"author":{"name":"AnyAds.online"},"license":"MIT","dependencies":{"axios":"^1.7.2","getmac":"^5.20.0","telegraf":"^4.16.3","uuid":"^9.0.1"},"devDependencies":{"@types/node":"^20.12.12","@types/uuid":"^9.0.8","typescript":"^5.4.5"},"_id":"@anyads/sdk@0.1.3","_nodeVersion":"22.15.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-6VeVs4IOaZW1mAiiZYMdDQBYEYqzQSigCWsHwjHl7fmCCJTB5EOjRG3Aw0u78QQ3iml2Fix27cTNFAcDnq2lNg==","shasum":"e15c8daa7a8456d485e177f2d9247db51cde9f53","tarball":"https://registry.npmjs.org/@anyads/sdk/-/sdk-0.1.3.tgz","fileCount":15,"unpackedSize":37593,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC55nm8KZVeu6orrfh1jJeZVjhL/2vxmtFQ5aEDw8pObQIhAPrHoet0UQO3IfhaIx4k1mP9ukCSlVHI7s+tfvY7JauF"}]},"_npmUser":{"name":"sleger","email":"msleger56@gmail.com"},"directories":{},"maintainers":[{"name":"sleger","email":"msleger56@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.1.3_1755815190321_0.8072723638069619"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-20T17:01:45.973Z","modified":"2025-08-21T22:26:30.712Z","0.1.0":"2025-08-20T16:55:31.138Z","0.1.1":"2025-08-20T17:01:46.291Z","0.1.2":"2025-08-20T18:45:00.333Z","0.1.3":"2025-08-21T22:26:30.514Z"},"author":{"name":"AnyAds.online"},"license":"MIT","keywords":["telegram","bot","ads","anyads","monetization"],"description":"Official AnyAds SDK for Node.js to monetize your Telegram bots.","maintainers":[{"name":"sleger","email":"msleger56@gmail.com"}],"readme":"# AnyAds SDK for JavaScript/TypeScript\r\n\r\n<p align=\"center\">\r\n  <a href=\"https://anyads.online\">\r\n    <img src=\"https://via.placeholder.com/400x150.png?text=AnyAds.online\" alt=\"AnyAds Logo\">\r\n  </a>\r\n</p>\r\n\r\n<p align=\"center\">\r\n  <a href=\"https://www.npmjs.com/package/@anyads/sdk\"><img src=\"https://img.shields.io/npm/v/@anyads/sdk.svg\" alt=\"NPM Version\"></a>\r\n  <a href=\"#\"><img src=\"https://img.shields.io/npm/dt/@anyads/sdk.svg\" alt=\"NPM Downloads\"></a>\r\n</p>\r\n\r\nОфициальный SDK для **AnyAds.online**, предназначенный для легкой интеграции вашего Telegram-бота на Node.js с нашей рекламной платформой. Пакет написан на TypeScript, что обеспечивает строгую типизацию и автодополнение в вашем редакторе кода.\r\n\r\n## 🚀 Быстрый старт\r\n\r\nЭтот гайд поможет вам интегрировать SDK и подготовить вашего бота к монетизации менее чем за 5 минут.\r\n\r\n### Шаг 1: Установка\r\n\r\nУстановите пакет из репозитория npm с помощью вашего любимого пакетного менеджера.\r\n\r\n```bash\r\n# npm\r\nnpm install @anyads/sdk\r\n\r\n# pnpm\r\npnpm add @anyads/sdk\r\n\r\n# yarn\r\nyarn add @anyads/sdk\r\n```\r\n\r\n### Шаг 2: Получение API Key\r\n\r\n1.  Зарегистрируйтесь на [**anyads.online**](https://anyads.online).\r\n2.  Перейдите в раздел \"Площадки\" и добавьте вашего бота, указав его `@username`.\r\n3.  Для вашей новой площадки будет сгенерирован уникальный **`API_KEY`**, начинающийся с `anyads_...`. Скопируйте его.\r\n\r\n### Шаг 3: Интеграция в код (Пример для Telegraf.js)\r\n\r\n`Telegraf.js` — популярный фреймворк для создания ботов. Наш SDK предоставляет готовый хелпер для быстрой интеграции.\r\n\r\n```typescript\r\nimport { Telegraf, Markup } from \"telegraf\";\r\nimport * as anyads from \"@anyads/sdk\";\r\nimport * as dotenv from \"dotenv\";\r\n\r\n// Загружаем переменные окружения (например, из файла .env)\r\ndotenv.config();\r\n\r\n// --- 1. Конфигурация ---\r\nconst ANYADS_API_KEY = process.env.ANYADS_API_KEY;\r\nconst TELEGRAM_BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN;\r\n\r\nif (!ANYADS_API_KEY || !TELEGRAM_BOT_TOKEN) {\r\n  throw new Error(\r\n    \"Необходимо установить переменные окружения ANYADS_API_KEY и TELEGRAM_BOT_TOKEN\"\r\n  );\r\n}\r\n\r\n// --- 2. Инициализация ---\r\nconst bot = new Telegraf(TELEGRAM_BOT_TOKEN);\r\nconst sdk = anyads.init({ apiKey: ANYADS_API_KEY });\r\n\r\n// --- 3. Регистрация обработчиков AnyAds ---\r\n// Эта функция сама добавит нужный обработчик для команды верификации\r\nanyads.integrations.telegraf.registerAnyAdsHandlers(bot);\r\n\r\n// --- 4. Обработка рекламных задач ---\r\nsdk.onBroadcastReceived(async (taskData) => {\r\n  console.log(`Получена новая задача на рассылку: ${taskData.task_id}`);\r\n\r\n  try {\r\n    const content = taskData.creative.content;\r\n    const text = content.text;\r\n    const imageUrl =\r\n      content.files && content.files.length > 0 ? content.files[0] : undefined;\r\n\r\n    if (!text && !imageUrl) {\r\n      console.error(\"Ошибка: креатив не содержит текста или изображения.\");\r\n      return;\r\n    }\r\n\r\n    const inlineKeyboard = Markup.inlineKeyboard(content.buttons || []);\r\n\r\n    // !!! ВАЖНО: Здесь ваша логика получения списка ID пользователей\r\n    const userIds: number[] = []; // Заглушка\r\n\r\n    for (const userId of userIds) {\r\n      try {\r\n        if (imageUrl) {\r\n          await bot.telegram.sendPhoto(userId, imageUrl, {\r\n            caption: text,\r\n            reply_markup: inlineKeyboard.reply_markup,\r\n            parse_mode: content.parse_mode,\r\n          });\r\n        } else if (text) {\r\n          await bot.telegram.sendMessage(userId, text, {\r\n            reply_markup: inlineKeyboard.reply_markup,\r\n            parse_mode: content.parse_mode,\r\n          });\r\n        }\r\n\r\n        await new Promise((resolve) => setTimeout(resolve, 50));\r\n      } catch (error) {\r\n        console.warn(\r\n          `Не удалось отправить сообщение пользователю ${userId}:`,\r\n          error\r\n        );\r\n      }\r\n    }\r\n  } catch (error) {\r\n    console.error(\"Критическая ошибка в обработчике handle_ad_task:\", error);\r\n  }\r\n});\r\n\r\n// --- 5. Запуск ---\r\nasync function startApp() {\r\n  await sdk.start();\r\n  bot.launch();\r\n  console.log(\"Бот запущен...\");\r\n\r\n  process.once(\"SIGINT\", () => {\r\n    bot.stop(\"SIGINT\");\r\n    sdk.stop();\r\n  });\r\n  process.once(\"SIGTERM\", () => {\r\n    bot.stop(\"SIGTERM\");\r\n    sdk.stop();\r\n  });\r\n}\r\n\r\nstartApp();\r\n```\r\n\r\n### 4. Верификация\r\n\r\nПосле запуска бота с интегрированным SDK, его статус в личном кабинете [**AnyAds.online**](https://app.anyads.online) будет \"Ожидает верификации\". Следуйте инструкциям на экране, чтобы наша команда модераторов могла проверить и активировать вашу площадку.\r\n\r\n---\r\n\r\n## ⚙️ API Reference (Краткий справочник)\r\n\r\n### `init(options)`\r\n\r\nИнициализирует и возвращает глобальный экземпляр SDK.\r\n\r\n- `options.apiKey` (string, **обязательный**): Ваш API ключ.\r\n- `options.intervalSeconds` (number, опционально): Интервал опроса в секундах. По умолчанию: `300`.\r\n\r\n### `sdk.start()`\r\n\r\nАсинхронно инициализирует сессию и запускает фоновый опрос сервера.\r\n\r\n### `sdk.stop()`\r\n\r\nОстанавливает фоновый опрос.\r\n\r\n### `sdk.onBroadcastReceived(handler)`\r\n\r\nРегистрирует вашу асинхронную функцию (`handler`), которая будет вызвана при получении рекламной задачи.\r\n\r\n- `handler` принимает один аргумент: `taskData` (объект `AdTask`).\r\n\r\n### `sdk.processVerificationCode(code)`\r\n\r\nАсинхронно обрабатывает и отправляет на сервер команду верификации.\r\n\r\n- `code` (string): Полный текст команды, например, `'/verify_anyads_...'`.\r\n- Возвращает `Promise<boolean>`: `true` в случае успеха.\r\n","readmeFilename":"README.md"}