Метод editChatInviteLink

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

Описание

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

Параметр Тип Обязательный Описание
chat_id Целое число или строка Да Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername)
invite_link Строка Да Пригласительная ссылка для редактирования
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 = -1001234567890; // ID чата или канала
$inviteLink = 'https://t.me/joinchat/AAAAA_example_invite_link'; // Ссылка для редактирования
$newName = 'Premium Users Link'; // Новое название ссылки (0-32 символа)
$expireDate = time() + 86400; // Ссылка истечет через 24 часа
$memberLimit = 50; // Максимум 50 пользователей
$createsJoinRequest = false; // Не требует одобрения администраторов

// Подготовка данных
$data = [
    'chat_id' => $chatId,
    'invite_link' => $inviteLink,
    'name' => $newName,
    'expire_date' => $expireDate,
    'member_limit' => $memberLimit,
    'creates_join_request' => $createsJoinRequest
];

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

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

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

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

if ($result['ok']) {
    $editedLink = $result['result'];
    echo "Ссылка успешно отредактирована!\n";
    echo "Название: " . ($editedLink['name'] ?? 'Без названия') . "\n";
    echo "Ссылка: " . $editedLink['invite_link'] . "\n";
    echo "Создатель: " . ($editedLink['creator']['first_name'] ?? 'Неизвестно') . "\n";
    echo "Одобрение: " . ($editedLink['creates_join_request'] ? 'Требуется' : 'Не требуется') . "\n";
    echo "Лимит пользователей: " . ($editedLink['member_limit'] ?? 'Без лимита') . "\n";
    
    if (isset($editedLink['expire_date'])) {
        echo "Истекает: " . date('Y-m-d H:i:s', $editedLink['expire_date']) . "\n";
    }
    
    if (isset($editedLink['pending_join_request_count'])) {
        echo "Ожидают одобрения: " . $editedLink['pending_join_request_count'] . "\n";
    }
} else {
    echo "Ошибка: " . $result['description'] . "\n";
    if (isset($result['error_code'])) {
        echo "Код ошибки: " . $result['error_code'] . "\n";
    }
}

// Альтернативный вариант с использованием file_get_contents
function editInviteLinkSimple($chatId, $inviteLink, $name = null, $expireDate = null, $memberLimit = null, $createsJoinRequest = null) {
    $botToken = 'YOUR_BOT_TOKEN';
    $url = "https://api.telegram.org/bot{$botToken}/editChatInviteLink";
    
    $params = [
        'chat_id' => $chatId,
        'invite_link' => $inviteLink
    ];
    
    if ($name !== null) $params['name'] = $name;
    if ($expireDate !== null) $params['expire_date'] = $expireDate;
    if ($memberLimit !== null) $params['member_limit'] = $memberLimit;
    if ($createsJoinRequest !== null) $params['creates_join_request'] = $createsJoinRequest;
    
    $options = [
        'http' => [
            'method' => 'POST',
            'header' => 'Content-Type: application/x-www-form-urlencoded',
            'content' => http_build_query($params)
        ]
    ];
    
    $context = stream_context_create($options);
    $response = file_get_contents($url, false, $context);
    
    return json_decode($response, true);
}

// Пример использования альтернативной функции
$simpleResult = editInviteLinkSimple(
    $chatId,
    $inviteLink,
    'New Link Name',
    time() + 3600, // Через 1 час
    100,
    false
);

?>

python

import requests
from datetime import datetime, timezone

def edit_chat_invite_link(bot_token, chat_id, invite_link, **kwargs):
    """
    Редактирует существующую пригласительную ссылку в чате.
    
    Args:
        bot_token (str): Токен бота
        chat_id (int/str): ID чата или username канала
        invite_link (str): Ссылка для редактирования
        **kwargs: Дополнительные параметры:
            name (str): Название ссылки (0-32 символа)
            expire_date (int): Unix timestamp времени истечения
            member_limit (int): Лимит участников (1-99999)
            creates_join_request (bool): Требовать одобрения вступления
    
    Returns:
        dict: Объект ChatInviteLink или None при ошибке
    """
    url = f"https://api.telegram.org/bot{bot_token}/editChatInviteLink"
    
    payload = {
        "chat_id": chat_id,
        "invite_link": invite_link
    }
    
    # Добавляем опциональные параметры если они переданы
    if "name" in kwargs:
        payload["name"] = kwargs["name"]
    
    if "expire_date" in kwargs:
        payload["expire_date"] = kwargs["expire_date"]
    
    if "member_limit" in kwargs:
        payload["member_limit"] = kwargs["member_limit"]
    
    if "creates_join_request" in kwargs:
        payload["creates_join_request"] = kwargs["creates_join_request"]
    
    try:
        response = requests.post(url, json=payload)
        response.raise_for_status()
        return response.json()["result"]
    except requests.exceptions.RequestException as e:
        print(f"Ошибка при редактировании ссылки: {e}")
        return None

# Пример использования:
if __name__ == "__main__":
    BOT_TOKEN = "YOUR_BOT_TOKEN"
    CHAT_ID = "@your_channel"  # или числовой ID
    INVITE_LINK = "https://t.me/joinchat/AAAAA..."  # существующая ссылка
    
    # Пример 1: Изменить название ссылки
    result = edit_chat_invite_link(
        bot_token=BOT_TOKEN,
        chat_id=CHAT_ID,
        invite_link=INVITE_LINK,
        name="Новая ссылка для друзей"
    )
    
    # Пример 2: Установить лимит участников и время истечения
    expire_timestamp = int(datetime(2024, 12, 31, 23, 59, 59, tzinfo=timezone.utc).timestamp())
    
    result = edit_chat_invite_link(
        bot_token=BOT_TOKEN,
        chat_id=CHAT_ID,
        invite_link=INVITE_LINK,
        member_limit=100,
        expire_date=expire_timestamp,
        creates_join_request=False
    )
    
    # Пример 3: Сделать ссылку с запросом на вступление
    result = edit_chat_invite_link(
        bot_token=BOT_TOKEN,
        chat_id=CHAT_ID,
        invite_link=INVITE_LINK,
        name="Ссылка с модерацией",
        creates_join_request=True
    )
    
    if result:
        print(f"Ссылка отредактирована: {result.get('invite_link')}")
        print(f"Название: {result.get('name')}")
        print(f"Создатель: {result.get('creator', {}).get('username')}")

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

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

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

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