Описание
Используйте этот метод, чтобы установить разрешения чата по умолчанию для всех участников. Бот должен быть администратором в группе или супергруппе для работы этого метода и иметь права администратора can_restrict_members. Возвращает True при успешном выполнении.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| chat_id | Integer или String | Да | Уникальный идентификатор целевого чата или имя пользователя целевой супергруппы (в формате @supergroupusername) |
| permissions | ChatPermissions | Да | JSON-сериализованный объект для новых разрешений чата по умолчанию |
| use_independent_chat_permissions | Boolean | Опционально | Передайте True, если разрешения чата устанавливаются независимо. В противном случае разрешения can_send_other_messages и can_add_web_page_previews будут подразумевать разрешения can_send_messages, can_send_audios, can_send_documents, can_send_photos, can_send_videos, can_send_video_notes и can_send_voice_notes; разрешение can_send_polls будет подразумевать разрешение can_send_messages. |
Примеры
php
<?php
$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/";
// ID чата или username супергруппы
$chatId = '@supergroupusername'; // или 123456789
// Создаем объект ChatPermissions
$permissions = [
'can_send_messages' => true,
'can_send_audios' => true,
'can_send_documents' => true,
'can_send_photos' => true,
'can_send_videos' => true,
'can_send_video_notes' => true,
'can_send_voice_notes' => true,
'can_send_polls' => true,
'can_send_other_messages' => false,
'can_add_web_page_previews' => false,
'can_change_info' => false,
'can_invite_users' => true,
'can_pin_messages' => false,
'can_manage_topics' => false // только для супергрупп с темами
];
// Опциональный параметр
$useIndependentChatPermissions = true;
// Подготовка данных для запроса
$data = [
'chat_id' => $chatId,
'permissions' => json_encode($permissions),
'use_independent_chat_permissions' => $useIndependentChatPermissions
];
// Отправка запроса через cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl . 'setChatPermissions');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // для тестов, в продакшене лучше использовать true
$response = curl_exec($ch);
curl_close($ch);
// Обработка ответа
$result = json_decode($response, true);
if ($result['ok']) {
echo "Права чата успешно обновлены!\n";
} else {
echo "Ошибка: " . $result['description'] . "\n";
}
// Альтернативный вариант с использованием file_get_contents
/*
$query = http_build_query($data);
$response = file_get_contents($apiUrl . 'setChatPermissions?' . $query);
$result = json_decode($response, true);
if ($result['ok']) {
echo "Права чата успешно обновлены!\n";
} else {
echo "Ошибка: " . $result['description'] . "\n";
}
*/
?>
python
import requests
# Замените 'YOUR_BOT_TOKEN' на токен вашего бота
BOT_TOKEN = 'YOUR_BOT_TOKEN'
def set_chat_permissions(chat_id, permissions, use_independent_chat_permissions=None):
"""
Устанавливает права доступа по умолчанию для всех участников чата.
:param chat_id: ID чата или username супергруппы
:param permissions: Объект ChatPermissions с правами доступа
:param use_independent_chat_permissions: Установить ли права независимо
:return: Результат запроса
"""
url = f"https://api.telegram.org/bot{BOT_TOKEN}/setChatPermissions"
# Создаем базовый словарь параметров
params = {
'chat_id': chat_id,
'permissions': permissions
}
# Добавляем необязательный параметр, если он указан
if use_independent_chat_permissions is not None:
params['use_independent_chat_permissions'] = use_independent_chat_permissions
# Отправляем запрос
response = requests.post(url, json=params)
return response.json()
# Пример использования:
if __name__ == "__main__":
# Пример 1: Базовое использование
chat_id = -1001234567890 # ID группы или супергруппы
permissions = {
'can_send_messages': True,
'can_send_media_messages': False,
'can_send_polls': False,
'can_send_other_messages': False,
'can_add_web_page_previews': False,
'can_change_info': False,
'can_invite_users': True,
'can_pin_messages': False
}
result = set_chat_permissions(chat_id, permissions)
print(result)
# Пример 2: С использованием username
chat_username = "@my_supergroup"
permissions2 = {
'can_send_messages': True,
'can_send_media_messages': True,
'can_send_polls': False,
'can_send_other_messages': False,
'can_add_web_page_previews': False,
'can_change_info': False,
'can_invite_users': True,
'can_pin_messages': False
}
result2 = set_chat_permissions(chat_username, permissions2, use_independent_chat_permissions=True)
print(result2)
# Пример 3: Только текстовые сообщения
permissions3 = {
'can_send_messages': True,
'can_send_media_messages': False,
'can_send_polls': False,
'can_send_other_messages': False,
'can_add_web_page_previews': False,
'can_change_info': False,
'can_invite_users': False,
'can_pin_messages': False
}
result3 = set_chat_permissions(chat_id, permissions3)
print(result3)
История изменений
- API 4.4. Добавлен метод setChatPermissions
- API 6.5. Обновлен метод setChatPermissions: Добавлен параметр use_independent_chat_permissions
Дополнительно
- ChatPermissions - Объект, описывающий разрешения для обычных пользователей в чате, включая отправку различных типов сообщений и другие действия.