Описание
Возвращает транзакции бота с 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.