Метод setChatPermissions

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

Описание

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