Skip to main content

Async Python SDK for the official TGStat API.

Project description

Tgstat-sdk

Telegram channel PyPI version Python versions PyPI downloads

Современный, удобный и асинхронный Python SDK для официального TGStat API.

Официальная документация TGStat API: https://api.tgstat.ru/docs/

Что даёт библиотека

  • удобный асинхронный клиент для работы с TGStat API
  • единый вход через TGStatClient
  • понятное разделение методов по ресурсам: channels, posts, stories, words, callback, usage, database
  • типизированные модели ответов от TGStat API
  • типизированные исключения для ошибок API и transport-ошибок
  • готовые примеры для основных сценариев работы

Установка

pip install -e .

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

import asyncio

from tgstat import TGStatClient
from tgstat.exceptions import TGStatError

TOKEN = "paste-your-token-here"


async def main() -> None:
    try:
        async with TGStatClient(token=TOKEN) as client:
            # Получаем информацию о канале
            channel = await client.channels.get(channel_id="@durov")
            print("Канал:", channel.title)

            # Получаем последние публикации канала
            posts = await client.channels.posts(channel_id="@durov", limit=3)
            print("Последние публикации:", len(posts.items))

            for post in posts.items:
                print("-", post.id, post.link)

            # Получаем статистику канала
            stat = await client.channels.stat(channel_id="@durov")
            print("Подписчики:", stat.participants_count)
            print("Средний охват:", stat.avg_post_reach)

            # Получаем справочник языков
            languages = await client.database.languages()
            print("Первый язык из справочника:", languages[0].name)

            # Получаем информацию о доступных квотах
            usage = await client.usage.stat()
            if usage:
                print("Тариф:", usage[0].title)

    except TGStatError as exc:
        print(f"Ошибка TGStat SDK: {exc.__class__.__name__}: {exc}")


asyncio.run(main())

Что важно знать

  • Некоторые методы зависят от вашего тарифа TGStat. Например, posts.search, channels.search и методы из words.* требуют активного доступа к Search API.
  • Методы из callback.* требуют заранее настроенный и подтверждённый callback URL на стороне TGStat.
  • Часть примеров получает реальные post_id и story_id через предварительные вызовы channels.posts(...) и channels.stories(...), чтобы их можно было запускать без ручного поиска идентификаторов.

Как обрабатывать ошибки

from tgstat import TGStatClient
from tgstat.exceptions import InvalidTokenError, QuotaRequestsReachedError, TimeoutError

TOKEN = "paste-your-token-here"


async with TGStatClient(token=TOKEN) as client:
    try:
        await client.channels.get(channel_id="@durov")
    except InvalidTokenError:
        print("Неверный токен")
    except QuotaRequestsReachedError:
        print("Исчерпана квота запросов")
    except TimeoutError:
        print("Запрос превысил timeout")

Retry

  • Повторные попытки применяются только к transport-ошибкам.
  • Повторяются timeout, сетевые ошибки, SSL transport failures и временные ответы 502/503/504.
  • API-ошибки вроде неверного токена, превышения квот или логических ошибок запроса не ретраятся.
  • backoff_factor — это коэффициент задержки между повторными попытками. Чем он больше, тем быстрее растёт пауза между retry-запросами.
from tgstat import RetryConfig, TGStatClient

client = TGStatClient(
    token="paste-your-token-here",
    retry=RetryConfig(
        max_attempts=4,
        backoff_factor=0.25,
        max_backoff=2.0,
    ),
)

Примеры

Полная проверка SDK:

Каналы:

Посты:

Истории:

Слова:

База данных:

Использование квот:

Callback:

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

tgstat_sdk-0.1.0.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

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

tgstat_sdk-0.1.0-py3-none-any.whl (29.9 kB view details)

Uploaded Python 3

File details

Details for the file tgstat_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: tgstat_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tgstat_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 940e303883b10fa8ed19280fbeb7cb16c3c0837c6acd91c4322dfd56534d689a
MD5 5234b32f738de569dca5251d2d516cdc
BLAKE2b-256 bce879ea9473b74c69106cf102d40d0b360efd250459ef3854c563830525504a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tgstat_sdk-0.1.0.tar.gz:

Publisher: publish.yml on Dementrosha/tgstat-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tgstat_sdk-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tgstat_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tgstat_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e619aea36b1585922941504c1a41e17f894416b2c21faa549485b6858f2e93c0
MD5 fe0c896f0dd9abaabd4f03783fd97845
BLAKE2b-256 b7a0ed86909128bc565aeae5107ef73881f0c38db930e6164779517df468c42f

See more details on using hashes here.

Provenance

The following attestation bundles were made for tgstat_sdk-0.1.0-py3-none-any.whl:

Publisher: publish.yml on Dementrosha/tgstat-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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