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) и Общей статистики.
  • 🛠 Удобная обработка ошибок: Понятные исключения для отладки.

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

(Пока в разработке)


📥 Установка

Установите библиотеку через 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.0.tar.gz (18.9 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.0-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aiosubgram-1.0.0.tar.gz
  • Upload date:
  • Size: 18.9 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.0.tar.gz
Algorithm Hash digest
SHA256 0f2c840533c4c26aedcb39294578798761a8cc38b083757e721d7bd1e24fb159
MD5 8e0699d3647c2cbdacbd0a7e22f1cb4f
BLAKE2b-256 4543ca04478a64765442bab145990bf53831ca66e7aac90f9c2053386f94f166

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aiosubgram-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 21.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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6f244c1aa57769ab5d1464c592dbf48defe300375778a85704b2dc50a3a70aa0
MD5 ba45de2ee5fb094a1172b1514aabc24e
BLAKE2b-256 3f05e62249fa1a30877d0cd425daddffceb8f80bc4f1b4dc112684cac98eca75

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