Метод editUserStarSubscription

Метод позволяет боту управлять продлением подписок пользователей, оплаченных в Telegram Stars, отменяя или возобновляя их автоматическое продление.

Описание

Позволяет боту отменить или возобновить продление подписки, оплаченной в 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
Комментарии