Official SDK for the AnyAds advertising platform for Telegram bots.
Project description
Официальный Python SDK для легкой интеграции вашего Telegram-бота с рекламной платформой AnyAds.online. Начните монетизировать вашу аудиторию уже сегодня!
🚀 Быстрый старт
Этот гайд поможет вам интегрировать SDK и подготовить вашего бота к заработку менее чем за 5 минут.
Шаг 1: Установка
Установите пакет, используя pip. Если вы работаете с фреймворком Aiogram, мы настоятельно рекомендуем установить SDK с дополнительными зависимостями для упрощенной интеграции.
# Для Aiogram
pip install "anyads[aiogram]"
# Стандартная установка (для других фреймворков)
pip install anyads
Шаг 2: Получение API Key
- Зарегистрируйтесь на anyads.online.
- Перейдите в раздел "Площадки" и добавьте вашего бота, указав его
@username. - Для вашей новой площадки будет сгенерирован уникальный
API_KEY, начинающийся сanyads_.... Скопируйте его. Он понадобится на следующем шаге.
Шаг 3: Интеграция в код (Пример для Aiogram 3.x)
В главном файле вашего бота, где происходит его запуск, добавьте следующий код:
import asyncio
import os
import logging
from aiogram import Bot, Dispatcher, types
# 1. Импортируем AnyAds и отдельно - хелперы для aiogram
import anyads
from anyads.integrations import aiogram_handlers
# --- Конфигурация ---
# Рекомендуется хранить ключи в переменных окружения, а не в коде
ANYADS_API_KEY = os.getenv("ANYADS_API_KEY")
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
# Настраиваем базовое логирование для отладки
logging.basicConfig(level=logging.INFO)
# --- Инициализация Aiogram ---
dp = Dispatcher()
bot = Bot(TELEGRAM_BOT_TOKEN)
# 2. Инициализируем SDK AnyAds
# SDK автоматически запустит фоновый опрос рекламных задач
sdk = anyads.init(api_key=ANYADS_API_KEY)
# 3. Регистрируем обработчики AnyAds, используя импортированный модуль
aiogram_handlers.register(dp)
# 4. Создаем обработчик для полученной рекламы
@sdk.on_broadcast_received
async def handle_ad_task(task_data: dict):
"""
Эта функция будет вызвана SDK для обработки новой задачи на рассылку.
"""
logging.info(f"Получена новая задача: {task_data.get('task_id')}")
try:
creative = task_data.get("creative", {})
content = creative.get("content", {})
text = content.get("text")
files = content.get("files", [])
buttons_data = content.get("buttons", [])
image_url = files[0] if files else None
if not text and not image_url:
logging.error("Креатив пуст. Задача проигнорирована.")
return
# Собираем инлайн-клавиатуру
keyboard_builder = InlineKeyboardBuilder()
if buttons_data:
for row in buttons_data:
buttons = [types.InlineKeyboardButton(text=btn['text'], url=btn['url']) for btn in row]
if buttons:
keyboard_builder.row(*buttons)
reply_markup = keyboard_builder.as_markup() if buttons_data else None
# !!! ВАЖНО: Здесь ваша логика получения списка ID пользователей
user_ids = [] # Заглушка, замените на реальный код
for user_id in user_ids:
try:
# Отправляем сообщение. Логика простая, т.к. Ad Engine
# присылает уже валидные данные.
if image_url:
await bot.send_photo(
user_id,
photo=image_url,
caption=(text or ''),
reply_markup=reply_markup
)
elif text:
await bot.send_message(
user_id,
text=text,
reply_markup=reply_markup,
disable_web_page_preview=True
)
await asyncio.sleep(0.05) # Пауза для обхода лимитов на скорость отправки
except Exception as e:
logging.warning(f"Не удалось отправить сообщение пользователю {user_id}: {e}")
except Exception as e:
logging.error(f"Критическая ошибка в обработчике handle_ad_task: {e}", exc_info=True)
# --- Основная функция запуска ---
async def main():
# Запускаем фоновый опрос AnyAds
await sdk.start()
# Запускаем бота
try:
await dp.start_polling(bot)
finally:
# Корректно останавливаем SDK при завершении работы бота
await sdk.stop()
logging.info("Бот и AnyAds SDK остановлены.")
if __name__ == "__main__":
if not ANYADS_API_KEY or not TELEGRAM_BOT_TOKEN:
raise RuntimeError("Необходимо установить переменные окружения ANYADS_API_KEY и TELEGRAM_BOT_TOKEN")
try:
asyncio.run(main())
except KeyboardInterrupt:
print("Бот остановлен вручную.")
4. Верификация
После того как вы запустите бота с интегрированным SDK, его статус в личном кабинете AnyAds.online будет "Ожидает верификации". Наша команда модераторов проверит интеграцию и активирует вашу площадку. После этого ваш бот начнет получать рекламные задачи.
⚙️ Универсальная интеграция (для других фреймворков)
Если вы не используете aiogram, вы можете легко интегрировать SDK вручную.
- Установите ядро SDK:
pip install anyads - Инициализируйте и запустите SDK, как в примере выше (
anyads.init(...),await sdk.start()). - Обработайте команду верификации: Вам нужно самостоятельно поймать сообщение, начинающееся с
/verify_anyads_, и передать его в SDK.
# Пример обработчика
async def handle_messages(message):
if message.text and message.text.startswith('/verify_anyads_'):
sdk = anyads.get_sdk_instance()
success = await sdk.process_verification_code(message.text)
if success:
# Ответить пользователю об успехе
pass
❓ Нужна помощь?
Если у вас возникли вопросы, обратитесь в нашу поддержку или изучите полную документацию на docs.anyads.online.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file anyads-0.1.3.tar.gz.
File metadata
- Download URL: anyads-0.1.3.tar.gz
- Upload date:
- Size: 7.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b837a48cdb115599945a0772c31c28becd2edfceca3d4344bf346678c38bb626
|
|
| MD5 |
24a1af4a6ba00092293df1d79ee944f1
|
|
| BLAKE2b-256 |
0c71b9cba974b1cbf696866142f102c6c8567c55b19fe8d8151822a3df96873e
|
File details
Details for the file anyads-0.1.3-py3-none-any.whl.
File metadata
- Download URL: anyads-0.1.3-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cde61c305e0f89a4b57cc6dd1735845b54e34eb155c050f552d6f757690d7df6
|
|
| MD5 |
ded57724a3c9e45ac517381f24a6343b
|
|
| BLAKE2b-256 |
ab71bd6f5bbe0d250bc0664e6b3935c67cab48cd0f8d5ee146ae19f0d878a937
|