Описание
Позволяет боту отменить или возобновить продление подписки, оплаченной в Telegram Stars. Возвращает True при успешном выполнении.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| user_id | Integer | Да | Идентификатор пользователя, чья подписка будет изменена |
| telegram_payment_charge_id | String | Да | Идентификатор платежа Telegram для подписки |
| is_canceled | Boolean | Да | Передайте True для отмены продления подписки пользователя; подписка должна оставаться активной до конца текущего периода. Передайте False, чтобы разрешить пользователю возобновить ранее отменённую ботом подписку. |
Примеры
php
<?php
// Токен вашего бота
$botToken = 'YOUR_BOT_TOKEN';
// Параметры метода
$params = [
'user_id' => 123456789, // ID пользователя
'telegram_payment_charge_id' => 'payment_1234567890', // ID платежа в Telegram
'is_canceled' => true // true - отменить, false - возобновить
];
// URL для вызова метода
$url = "https://api.telegram.org/bot{$botToken}/editUserStarSubscription";
// Инициализация cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
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: multipart/form-data'
]);
// Выполнение запроса
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Проверка ошибок cURL
if (curl_errno($ch)) {
echo 'Ошибка cURL: ' . curl_error($ch);
} else {
// Декодирование ответа
$result = json_decode($response, true);
if ($httpCode === 200 && $result['ok'] === true) {
echo "Успешно! Подписка пользователя обновлена.";
} else {
echo "Ошибка: " . ($result['description'] ?? 'Неизвестная ошибка');
}
}
// Закрытие соединения
curl_close($ch);
// Альтернативный вариант с использованием file_get_contents (требует allow_url_fopen)
/*
$options = [
'http' => [
'header' => "Content-Type: multipart/form-data\r\n",
'method' => 'POST',
'content' => http_build_query($params)
]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$result = json_decode($response, true);
*/
?>
python
import requests
def edit_user_star_subscription(bot_token, user_id, telegram_payment_charge_id, is_canceled):
"""
Редактирует подписку пользователя, оплаченную Telegram Stars
Args:
bot_token (str): Токен бота
user_id (int): ID пользователя
telegram_payment_charge_id (str): ID платежа Telegram
is_canceled (bool): True - отменить продление, False - разрешить повторное включение
Returns:
bool: True при успешном выполнении
"""
url = f"https://api.telegram.org/bot{bot_token}/editUserStarSubscription"
payload = {
"user_id": user_id,
"telegram_payment_charge_id": telegram_payment_charge_id,
"is_canceled": is_canceled
}
try:
response = requests.post(url, json=payload)
response.raise_for_status()
result = response.json()
if result.get("ok"):
return True
else:
print(f"Ошибка: {result.get('description')}")
return False
except requests.exceptions.RequestException as e:
print(f"Ошибка запроса: {e}")
return False
# Пример использования
if __name__ == "__main__":
BOT_TOKEN = "YOUR_BOT_TOKEN"
USER_ID = 123456789
PAYMENT_ID = "payment_1234567890"
# Отменить продление подписки
success = edit_user_star_subscription(
bot_token=BOT_TOKEN,
user_id=USER_ID,
telegram_payment_charge_id=PAYMENT_ID,
is_canceled=True
)
if success:
print("Продление подписки отменено")
# Разрешить повторное включение подписки
success = edit_user_star_subscription(
bot_token=BOT_TOKEN,
user_id=USER_ID,
telegram_payment_charge_id=PAYMENT_ID,
is_canceled=False
)
if success:
print("Подписка может быть повторно включена")
История изменений
- API 8.0. Добавлен метод editUserStarSubscription