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