Описание
Используйте этот метод для создания пригласительной ссылки на подписку для чата канала. Бот должен иметь права администратора 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 - Объект, представляющий пригласительную ссылку для чата с параметрами создания, ограничениями и настройками подписки.