Метод createChatSubscriptionInviteLink

Создаёт платную пригласительную ссылку на подписку для канала с указанием стоимости и периода оплаты.

Описание

Используйте этот метод для создания пригласительной ссылки на подписку для чата канала. Бот должен иметь права администратора can_invite_users. Ссылку можно отредактировать с помощью метода editChatSubscriptionInviteLink или отозвать с помощью метода revokeChatInviteLink. Возвращает новую пригласительную ссылку в виде объекта ChatInviteLink.

Параметр Тип Обязательный Описание
chat_id Integer или String Да Уникальный идентификатор целевого чата канала или имя пользователя целевого канала (в формате @channelusername)
name String Необязательный Название пригласительной ссылки; 0-32 символа
subscription_period Integer Да Количество секунд, в течение которых подписка будет активна до следующей оплаты (в настоящее время всегда должно быть 2592000, то есть 30 дней)
subscription_price Integer Да Количество Telegram Stars, которое пользователь должен заплатить изначально и после каждого последующего периода подписки, чтобы быть участником чата; от 1 до 10000

Примеры

php

<?php

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

// Параметры для создания ссылки подписки
$chatId = '@your_channel_username'; // или ID канала, например: -1001234567890
$params = [
    'chat_id' => $chatId,
    'name' => 'Premium Subscription',
    'subscription_period' => 2592000, // 30 дней в секундах (обязательно)
    'subscription_price' => 100, // Стоимость в Telegram Stars (1-10000)
];

// Отправка запроса
$ch = curl_init($apiUrl . 'createChatSubscriptionInviteLink');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => $params,
    CURLOPT_HTTPHEADER => ['Content-Type: multipart/form-data'],
]);

$response = curl_exec($ch);
curl_close($ch);

// Обработка ответа
$result = json_decode($response, true);

if ($result['ok']) {
    $inviteLink = $result['result'];
    echo "Ссылка подписки создана:\n";
    echo "URL: " . $inviteLink['invite_link'] . "\n";
    echo "Название: " . ($inviteLink['name'] ?? 'Без названия') . "\n";
    echo "Создатель: @" . $inviteLink['creator']['username'] . "\n";
    echo "Стоимость: " . $inviteLink['subscription_price'] . " Stars\n";
    echo "Период: " . $inviteLink['subscription_period'] . " секунд\n";
    echo "Действительна: " . ($inviteLink['creates_join_request'] ? 'только по запросу' : 'для всех') . "\n";
} else {
    echo "Ошибка: " . $result['description'] . "\n";
}

// Альтернативный вариант с использованием file_get_contents (если доступно)
/*
$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 . 'createChatSubscriptionInviteLink', false, $context);
$result = json_decode($response, true);

if ($result['ok']) {
    print_r($result['result']);
}
*/

?>

python

import requests

def create_chat_subscription_invite_link(bot_token, chat_id, subscription_period, subscription_price, name=None):
    """
    Создает ссылку-приглашение с подпиской для канала.
    
    Args:
        bot_token (str): Токен бота
        chat_id (int/str): ID канала или username (например, @channelname)
        subscription_period (int): Период подписки в секундах (должно быть 2592000)
        subscription_price (int): Цена подписки в Telegram Stars (1-10000)
        name (str, optional): Название ссылки (0-32 символа)
    
    Returns:
        dict: Объект ChatInviteLink или None в случае ошибки
    """
    url = f"https://api.telegram.org/bot{bot_token}/createChatSubscriptionInviteLink"
    
    payload = {
        "chat_id": chat_id,
        "subscription_period": subscription_period,
        "subscription_price": subscription_price
    }
    
    if name:
        payload["name"] = name
    
    try:
        response = requests.post(url, json=payload)
        response.raise_for_status()
        result = response.json()
        
        if result.get("ok"):
            return result.get("result")
        else:
            print(f"Ошибка: {result.get('description')}")
            return None
            
    except requests.exceptions.RequestException as e:
        print(f"Ошибка запроса: {e}")
        return None

# Пример использования
if __name__ == "__main__":
    # Конфигурация
    BOT_TOKEN = "ВАШ_ТОКЕН_БОТА"
    CHAT_ID = "@ваш_канал"  # или числовой ID
    SUBSCRIPTION_PERIOD = 2592000  # 30 дней в секундах
    SUBSCRIPTION_PRICE = 100  # 100 Telegram Stars
    LINK_NAME = "Премиум подписка"
    
    # Создание ссылки
    invite_link = create_chat_subscription_invite_link(
        bot_token=BOT_TOKEN,
        chat_id=CHAT_ID,
        subscription_period=SUBSCRIPTION_PERIOD,
        subscription_price=SUBSCRIPTION_PRICE,
        name=LINK_NAME
    )
    
    if invite_link:
        print(f"Ссылка создана: {invite_link.get('invite_link')}")
        print(f"Название: {invite_link.get('name', 'Без названия')}")
        print(f"Создатель: {invite_link.get('creator', {}).get('username', 'Неизвестно')}")
        print(f"Подписка: {invite_link.get('subscription_period')} сек, {invite_link.get('subscription_price')} Stars")
    else:
        print("Не удалось создать ссылку")

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

  • API 7.9. Добавлен метод createChatSubscriptionInviteLink

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

  • editChatSubscriptionInviteLink - Метод позволяет редактировать параметры существующей ссылки-приглашения на подписку в чате или канале.
  • revokeChatInviteLink - Метод отзывает пригласительную ссылку, созданную ботом, и возвращает информацию об отозванной ссылке.
  • ChatInviteLink - Объект, представляющий пригласительную ссылку для чата с параметрами создания, ограничениями и настройками подписки.
Комментарии