Skip to main content

Asynchronous library for working with subgram.org

Project description

🚀 aiosubgram

PyPI - Version Python Version License Aiogram

aiosubgram — это современная асинхронная Python библиотека для взаимодействия с API сервиса монетизации subgram.org.

Библиотека полностью покрывает функционал API, поддерживает строгую типизацию (Pydantic) и предоставляет готовые инструменты для легкой интеграции с aiogram 3.x.


✨ Особенности

  • Полностью асинхронная (на базе aiohttp).
  • 🛡 Строгая типизация: Все ответы API валидируются через Pydantic модели.
  • 🤖 Aiogram 3 Integration: Встроенные Middleware и клавиатуры для реализации ОП (Обязательной Подписки).
  • 📦 Полное покрытие API: Поддержка всех методов для Рекламодателей, Владельцев ботов (Publisher) и Общей статистики.
  • 🛠 Удобная обработка ошибок: Понятные исключения для отладки.

Документация

aiosubgram Docs


📥 Установка

Установите библиотеку через pip:

pip install aiosubgram

🚀 Быстрый старт

Для начала работы вам понадобятся ключи от Subgram. Их можно найти в личном кабинете.

  • Secret Key: Для управления заказами и ботами.
  • API Token: Для просмотра статистики и баланса.
  • API Key (Bot): Для проверки подписок конкретного бота.

Базовый пример (получение баланса)

import asyncio
from aiosubgram import SubgramClient

async def main():
    # Инициализация клиента
    client = SubgramClient(
        api_token="ВАШ_API_TOKEN"
    )

    async with client:
        balance = await client.get_balance()
        print(f"Текущий баланс: {balance.balance}$")
        
        for bot in balance.bots_info:
            print(f"Бот {bot.bot_username}: {bot.revenue}$")

if __name__ == "__main__":
    asyncio.run(main())

🤖 Интеграция с Aiogram 3

Библиотека предоставляет готовый Middleware, который автоматически проверяет подписку пользователя на спонсоров перед обработкой любого сообщения.

Пример бота с ОП (Обязательной Подпиской)

import asyncio
from aiogram import Bot, Dispatcher, F
from aiogram.types import Message, CallbackQuery
from aiosubgram import SubgramClient
from aiosubgram.utils.middleware import OPMiddleware

# Конфигурация
BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"
SUBGRAM_API_KEY = "YOUR_SUBGRAM_BOT_API_KEY"

bot = Bot(token=BOT_TOKEN)
dp = Dispatcher()

# Инициализация клиента Subgram
subgram = SubgramClient(api_key=SUBGRAM_API_KEY)

# Подключение Middleware
dp.message.middleware(
    OPMiddleware(
        client=subgram,
        max_sponsors=3, # Максимум каналов для подписки
        sub_text="🔒 <b>Доступ закрыт!</b>\nПодпишитесь на спонсоров:",
        done_button_text="✅ Я подписался"
    )
)

@dp.message()
async def echo_handler(message: Message):
    # Этот код выполнится только если пользователь подписан
    await message.answer("🎉 Вы прошли проверку! Бот доступен.")

# Обработчик кнопки "Я подписался"
@dp.callback_query(F.data == "subgram-done")
async def check_sub(callback: CallbackQuery):
    response = await subgram.get_sponsors(
        chat_id=callback.message.chat.id,
        user_id=callback.from_user.id
    )
    
    if response.status == "ok":
        await callback.message.delete()
        await callback.message.answer("✅ Спасибо! Доступ открыт.")
    else:
        await callback.answer("❌ Вы подписались не на всех!", show_alert=True)

async def main():
    async with subgram:
        await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())

📚 Функционал

📢 Для Владельцев Ботов (Publisher)

Методы для монетизации вашего бота:

  • get_sponsors(...) — Получить список каналов для подписки (ОП).
  • add_bot(...) — Добавить нового бота в систему.
  • update(...) — Обновить настройки бота.
  • get_bot_info(...) — Получить информацию о боте.
  • get_user_info(...) — Получить демографию пользователя.
# Пример получения спонсоров вручную
sponsors = await client.get_sponsors(chat_id=123, user_id=456)
for sponsor in sponsors.sponsors:
    print(f"Нужна подписка на: {sponsor.link}")

🎯 Для Рекламодателей (Advertiser)

Управление рекламными кампаниями:

  • create_order(...) — Создать заказ (подписчики в канал/бот).
  • update_order(...) — Изменить параметры заказа (статус, цена).
  • get_order_info(...) — Получить статус выполнения.
# Создание заказа на подписчиков
order = await client.create_order(
    link="https://t.me/my_channel",
    ads_type="channel",
    quantity_all=1000,
    price=0.5
)
print(f"Заказ создан: ID {order.response.order_id}")

📊 Общие методы

  • get_balance() — Баланс аккаунта.
  • get_statistic(...) — Детальная статистика доходов/расходов.
  • toggle_exclusion(...) — Блокировка нежелательных ботов/каналов.

⚙️ Требования

  • Python 3.9+
  • aiohttp
  • pydantic >= 2.0
  • aiogram >= 3.x (опционально, для использования utils)

🤝 Contributing

Баги и предложения можно отправлять в Issues. Pull Request'ы приветствуются!


📄 Лицензия

Проект распространяется под лицензией MIT. Подробнее см. в файле LICENSE.


Copyright (c) 2025 salatcs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiosubgram-1.0.1.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiosubgram-1.0.1-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file aiosubgram-1.0.1.tar.gz.

File metadata

  • Download URL: aiosubgram-1.0.1.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for aiosubgram-1.0.1.tar.gz
Algorithm Hash digest
SHA256 b348b35182cb5ff0624011974d33dad5a0234254f908fa5b83be498082f63008
MD5 24d130ac7c4dcfd52fe18f1a64b4754f
BLAKE2b-256 9d19cff69152e3a36058a187a79daff0264f8251f9df2f9e7706e4f4abe62387

See more details on using hashes here.

File details

Details for the file aiosubgram-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: aiosubgram-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 25.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for aiosubgram-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 045d366de573970b460537dfdfdd10175747f3f2de48b35358fd9a238911d881
MD5 efb549b9f906d6c0722ae7cf27daa1cc
BLAKE2b-256 35aac9317b9e0e293999c698bd520954ddc8d2501e5abc152703c74e3de0a898

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page