Asynchronous library for working with subgram.org
Project description
🚀 aiosubgram
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.
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f2c840533c4c26aedcb39294578798761a8cc38b083757e721d7bd1e24fb159
|
|
| MD5 |
8e0699d3647c2cbdacbd0a7e22f1cb4f
|
|
| BLAKE2b-256 |
4543ca04478a64765442bab145990bf53831ca66e7aac90f9c2053386f94f166
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f244c1aa57769ab5d1464c592dbf48defe300375778a85704b2dc50a3a70aa0
|
|
| MD5 |
ba45de2ee5fb094a1172b1514aabc24e
|
|
| BLAKE2b-256 |
3f05e62249fa1a30877d0cd425daddffceb8f80bc4f1b4dc112684cac98eca75
|