Метод setChatDescription

Метод для изменения описания чата, доступный администраторам-ботам.

Описание

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

Параметр Тип Обязательный Описание
chat_id Integer или String Да Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername)
description String Опционально Новое описание чата, 0-255 символов

Примеры

php

<?php

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

// Пример 1: Установка описания для группы/супергруппы по ID
$chatId = -1001234567890; // ID чата (отрицательное число для групп)
$description = 'Новое описание нашей группы. Добро пожаловать!';

$data = [
    'chat_id' => $chatId,
    'description' => $description
];

// Пример 2: Установка описания для канала по username
$channelUsername = '@my_channel';
$channelDescription = 'Официальный канал проекта. Новости и обновления.';

$data2 = [
    'chat_id' => $channelUsername,
    'description' => $channelDescription
];

// Пример 3: Удаление описания (передача пустой строки)
$data3 = [
    'chat_id' => $chatId,
    'description' => ''
];

// Функция для отправки запроса
function setChatDescription($data, $apiUrl) {
    $ch = curl_init();
    
    curl_setopt_array($ch, [
        CURLOPT_URL => $apiUrl . 'setChatDescription',
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => http_build_query($data),
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
    ]);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    
    if (curl_errno($ch)) {
        $error = curl_error($ch);
        curl_close($ch);
        throw new Exception("cURL Error: {$error}");
    }
    
    curl_close($ch);
    
    if ($httpCode !== 200) {
        throw new Exception("HTTP Error: {$httpCode}");
    }
    
    $result = json_decode($response, true);
    
    if (!$result['ok']) {
        throw new Exception("API Error: {$result['description']}");
    }
    
    return $result['result'];
}

// Использование функции
try {
    // Пример 1
    $result1 = setChatDescription($data, $apiUrl);
    echo "Описание успешно установлено для чата {$chatId}\n";
    
    // Пример 2
    // $result2 = setChatDescription($data2, $apiUrl);
    // echo "Описание успешно установлено для канала {$channelUsername}\n";
    
    // Пример 3
    // $result3 = setChatDescription($data3, $apiUrl);
    // echo "Описание успешно удалено\n";
    
} catch (Exception $e) {
    echo "Ошибка: " . $e->getMessage() . "\n";
}

// Альтернативный вариант с использованием file_get_contents
function setChatDescriptionSimple($data, $apiUrl) {
    $url = $apiUrl . 'setChatDescription?' . http_build_query($data);
    $response = file_get_contents($url);
    
    if ($response === false) {
        throw new Exception("Failed to get response from Telegram API");
    }
    
    $result = json_decode($response, true);
    
    if (!$result['ok']) {
        throw new Exception("API Error: {$result['description']}");
    }
    
    return $result['result'];
}

?>

python

import requests

def set_chat_description(bot_token, chat_id, description=None):
    """
    Изменяет описание группы, супергруппы или канала.
    
    :param bot_token: Токен вашего бота
    :param chat_id: ID чата или username канала (например, @channelusername)
    :param description: Новое описание чата (0-255 символов). Если None, описание будет удалено.
    :return: True в случае успеха, иначе вызывает исключение
    """
    url = f"https://api.telegram.org/bot{bot_token}/setChatDescription"
    
    payload = {
        "chat_id": chat_id,
    }
    
    if description is not None:
        payload["description"] = description
    
    response = requests.post(url, json=payload)
    response.raise_for_status()
    
    result = response.json()
    
    if not result.get('ok'):
        raise Exception(f"Ошибка: {result.get('description')}")
    
    return True

# Пример использования:
if __name__ == "__main__":
    # Замените на ваш токен бота
    BOT_TOKEN = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
    
    # Пример 1: Установка описания для группы по ID
    try:
        set_chat_description(
            bot_token=BOT_TOKEN,
            chat_id=-1001234567890,  # ID группы
            description="Новое описание нашей группы! Добро пожаловать!"
        )
        print("Описание успешно изменено!")
    except Exception as e:
        print(f"Ошибка: {e}")
    
    # Пример 2: Установка описания для канала по username
    try:
        set_chat_description(
            bot_token=BOT_TOKEN,
            chat_id="@my_test_channel",  # Username канала
            description="Официальный канал нашего проекта. Все новости здесь!"
        )
        print("Описание канала успешно изменено!")
    except Exception as e:
        print(f"Ошибка: {e}")
    
    # Пример 3: Удаление описания (установка пустого значения)
    try:
        set_chat_description(
            bot_token=BOT_TOKEN,
            chat_id=-1001234567890,
            description=""  # Пустая строка удалит описание
        )
        print("Описание успешно удалено!")
    except Exception as e:
        print(f"Ошибка: {e}")

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

  • API 3.1. Добавлен метод setChatDescription
  • API 4.4. Обновлен метод setChatDescription: Теперь поддерживает базовые группы (ранее только супергруппы и каналы)
Комментарии