Метод getStarTransactions

Метод возвращает историю транзакций бота с Telegram Stars в хронологическом порядке.

Описание

Возвращает транзакции бота с Telegram Stars в хронологическом порядке. При успехе возвращает объект StarTransactions.

Параметр Тип Обязательный Описание
offset Integer Опционально Количество транзакций, которые нужно пропустить в ответе
limit Integer Опционально Максимальное количество извлекаемых транзакций. Допустимы значения от 1 до 100. По умолчанию 100.

Примеры

php

<?php

$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/getStarTransactions";

// Параметры запроса (опциональные)
$params = [
    'offset' => 0, // Сколько транзакций пропустить
    'limit' => 50  // Количество транзакций (1-100, по умолчанию 100)
];

// Инициализация cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/x-www-form-urlencoded'
]);

// Выполнение запроса
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
    echo 'cURL Error: ' . curl_error($ch);
    curl_close($ch);
    exit;
}

curl_close($ch);

// Обработка ответа
if ($httpCode === 200) {
    $data = json_decode($response, true);
    
    if ($data['ok']) {
        $transactions = $data['result'];
        
        echo "Всего транзакций: " . $transactions['total_count'] . "\n";
        echo "Транзакции:\n";
        
        foreach ($transactions['transactions'] as $transaction) {
            echo "ID: " . $transaction['id'] . "\n";
            echo "Дата: " . date('Y-m-d H:i:s', $transaction['date']) . "\n";
            echo "Звёзд: " . $transaction['amount'] . "\n";
            echo "Источник: " . $transaction['source'] . "\n";
            
            if (isset($transaction['receiver_user_id'])) {
                echo "Получатель ID: " . $transaction['receiver_user_id'] . "\n";
            }
            
            if (isset($transaction['receiver_chat_id'])) {
                echo "Получатель чат ID: " . $transaction['receiver_chat_id'] . "\n";
            }
            
            echo "---\n";
        }
    } else {
        echo "Ошибка API: " . $data['description'];
    }
} else {
    echo "HTTP Error: " . $httpCode;
}

// Альтернативный вариант с использованием file_get_contents (требует allow_url_fopen)
/*
$context = stream_context_create([
    'http' => [
        'method' => 'POST',
        'header' => 'Content-Type: application/x-www-form-urlencoded',
        'content' => http_build_query($params)
    ]
]);

$response = file_get_contents($apiUrl, false, $context);
$data = json_decode($response, true);

if ($data['ok']) {
    // Обработка данных
    print_r($data['result']);
}
*/

?>

python

import asyncio
from typing import Optional
from telegram import Bot
from telegram._utils.types import JSONDict
from telegram._star import StarTransactions

async def get_star_transactions_example(
    bot_token: str,
    offset: Optional[int] = None,
    limit: Optional[int] = None
) -> StarTransactions:
    """
    Пример использования метода getStarTransactions.
    
    Args:
        bot_token: Токен вашего бота
        offset: Количество транзакций для пропуска
        limit: Максимальное количество транзакций (1-100)
    
    Returns:
        StarTransactions объект с транзакциями
    """
    # Создаем экземпляр бота
    bot = Bot(token=bot_token)
    
    # Подготавливаем параметры
    params: JSONDict = {}
    if offset is not None:
        params['offset'] = offset
    if limit is not None:
        params['limit'] = limit
    
    try:
        # Вызываем метод через bot._post
        result = await bot._post(
            method_name="getStarTransactions",
            data=params,
            return_type=StarTransactions
        )
        return result
    except Exception as e:
        print(f"Ошибка при получении транзакций: {e}")
        raise

# Пример использования
async def main():
    # Замените 'YOUR_BOT_TOKEN' на реальный токен
    TOKEN = "YOUR_BOT_TOKEN"
    
    # Пример 1: Получить последние 50 транзакций
    transactions = await get_star_transactions_example(
        bot_token=TOKEN,
        limit=50
    )
    
    # Пример 2: Пропустить первые 10 транзакций и получить следующие 30
    transactions = await get_star_transactions_example(
        bot_token=TOKEN,
        offset=10,
        limit=30
    )
    
    # Пример 3: Получить все доступные транзакции (до 100 по умолчанию)
    transactions = await get_star_transactions_example(
        bot_token=TOKEN
    )
    
    # Работа с результатом
    if transactions:
        print(f"Всего транзакций: {len(transactions.transactions)}")
        for transaction in transactions.transactions:
            print(f"ID: {transaction.id}, Сумма: {transaction.amount} звёзд")

# Запуск асинхронной функции
if __name__ == "__main__":
    asyncio.run(main())

История изменений

  • API 7.5. Добавлен метод getStarTransactions

Дополнительно

  • StarTransactions - Объект, содержащий список транзакций с Telegram Stars.
Комментарии