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.1.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.1-py3-none-any.whl (29.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tgstat_sdk-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 734a9ff8ecad4adae3e843db73543bf6ae38b83f064d2de4097cfaf0a1a90d3a
MD5 607c5eea427dbf3d042d2fad1a85db54
BLAKE2b-256 1309d1783af452a08c5c09b84e8988f8eeecec1308d06acc4fe5347f267f45d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for tgstat_sdk-0.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: tgstat_sdk-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 916d950ac12a0858e04720c0e2099c7dca48ac98b5fc55ddce83846c631ed879
MD5 7cc6c6179c32db0b47f2d342563d65f2
BLAKE2b-256 6f2ed4dd9a7025831851ffa70aa34ff7955feb7afc243c1ff6bdede518436d3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tgstat_sdk-0.1.1-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