Метод createChatInviteLink

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

Описание

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

Параметр Тип Обязательный Описание
chat_id Целое число или Строка Да Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername)
name Строка Опционально Название пригласительной ссылки; 0-32 символа
expire_date Целое число Опционально Момент времени (Unix timestamp), когда ссылка станет недействительной
member_limit Целое число Опционально Максимальное количество пользователей, которые могут одновременно быть участниками чата после присоединения через эту пригласительную ссылку; 1-99999
creates_join_request Логический Опционально True, если пользователям, присоединяющимся к чату по ссылке, требуется одобрение администраторов чата. Если True, параметр member_limit не может быть указан

Примеры

php

<?php

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

// Параметры для создания ссылки-приглашения
$chatId = '@channelusername'; // или ID чата, например: -1001234567890
$params = [
    'chat_id' => $chatId,
    'name' => 'Premium Users Link',
    'expire_date' => time() + 86400, // Ссылка действительна 24 часа
    'member_limit' => 50,
    'creates_join_request' => false
];

// Удаляем параметры с null значениями (необязательные поля)
$params = array_filter($params, function($value) {
    return $value !== null;
});

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

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 200) {
    $data = json_decode($response, true);
    if ($data['ok']) {
        $inviteLink = $data['result'];
        echo "Ссылка создана: " . $inviteLink['invite_link'] . "\n";
        echo "Название: " . ($inviteLink['name'] ?? 'без названия') . "\n";
        echo "Создатель: @" . $inviteLink['creator']['username'] . "\n";
        echo "Осталось использований: " . ($inviteLink['member_limit'] ?? 'без ограничений') . "\n";
        if (isset($inviteLink['expire_date'])) {
            echo "Истекает: " . date('Y-m-d H:i:s', $inviteLink['expire_date']) . "\n";
        }
    } else {
        echo "Ошибка: " . $data['description'] . "\n";
    }
} else {
    echo "HTTP ошибка: " . $httpCode . "\n";
}

// Альтернативный вариант с использованием 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 . 'createChatInviteLink', false, $context);
if ($response !== false) {
    $data = json_decode($response, true);
    // Обработка ответа...
}
*/

// Пример с библиотекой Guzzle (предварительно установить: composer require guzzlehttp/guzzle)
/*
use GuzzleHttp\Client;

$client = new Client();
$response = $client->post($apiUrl . 'createChatInviteLink', [
    'form_params' => $params
]);
$data = json_decode($response->getBody(), true);
// Обработка ответа...
*/
?>

python

import requests

def create_chat_invite_link(bot_token, chat_id, name=None, expire_date=None, member_limit=None, creates_join_request=None):
    url = f"https://api.telegram.org/bot{bot_token}/createChatInviteLink"
    
    payload = {
        "chat_id": chat_id
    }
    
    if name:
        payload["name"] = name
    if expire_date:
        payload["expire_date"] = expire_date
    if member_limit:
        payload["member_limit"] = member_limit
    if creates_join_request is not None:
        payload["creates_join_request"] = creates_join_request
    
    response = requests.post(url, json=payload)
    return response.json()

# Пример использования
bot_token = "YOUR_BOT_TOKEN"
chat_id = "@channelusername"  # или числовой ID

# Создание простой ссылки
result = create_chat_invite_link(bot_token, chat_id)
print(result)

# Создание ссылки с именем и лимитом участников
result = create_chat_invite_link(
    bot_token=bot_token,
    chat_id=chat_id,
    name="Special Invite",
    member_limit=100,
    expire_date=1672531200  # Unix timestamp
)
print(result)

# Создание ссылки с запросом на вступление
result = create_chat_invite_link(
    bot_token=bot_token,
    chat_id=chat_id,
    name="Approval Required",
    creates_join_request=True
)
print(result)

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

  • API 5.1. Добавлен метод createChatInviteLink
  • API 5.4. Обновлен метод createChatInviteLink: Добавлены параметры creates_join_request и name

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

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