Метод editForumTopic

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

Описание

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

Параметр Тип Обязательный Описание
chat_id Целое число или строка Да Уникальный идентификатор целевого чата или имя пользователя целевой супергруппы (в формате @supergroupusername)
message_thread_id Целое число Да Уникальный идентификатор целевой ветки сообщений темы форума
name Строка Необязательный Новое название темы, 0-128 символов. Если не указано или пустое, текущее название темы будет сохранено
icon_custom_emoji_id Строка Необязательный Новый уникальный идентификатор пользовательского эмодзи, отображаемого как значок темы. Используйте getForumTopicIconStickers для получения всех разрешённых идентификаторов пользовательских эмодзи. Передайте пустую строку для удаления значка. Если не указано, текущий значок будет сохранён

Примеры

php

<?php

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

// Данные для редактирования топика
$chatId = -1001234567890; // ID супергруппы или @username
$messageThreadId = 123; // ID топика (темы)
$newName = 'Обновленное название темы';
$iconCustomEmojiId = '1234567890123456789'; // ID кастомного эмодзи

// Подготовка параметров
$params = [
    'chat_id' => $chatId,
    'message_thread_id' => $messageThreadId,
    'name' => $newName,
    'icon_custom_emoji_id' => $iconCustomEmojiId
];

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

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

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
    echo 'Ошибка cURL: ' . curl_error($ch);
} else {
    $responseData = json_decode($response, true);
    
    if ($responseData['ok']) {
        echo 'Топик успешно отредактирован!';
    } else {
        echo 'Ошибка: ' . $responseData['description'];
    }
}

curl_close($ch);

// Альтернативный вариант с использованием file_get_contents
/*
$context = stream_context_create([
    'http' => [
        'method' => 'POST',
        'header' => 'Content-Type: multipart/form-data',
        'content' => http_build_query($params)
    ]
]);

$response = file_get_contents($apiUrl . 'editForumTopic', false, $context);
$responseData = json_decode($response, true);

if ($responseData['ok']) {
    echo 'Топик успешно отредактирован!';
} else {
    echo 'Ошибка: ' . $responseData['description'];
}
*/
?>

python

import requests

def edit_forum_topic(bot_token, chat_id, message_thread_id, name=None, icon_custom_emoji_id=None):
    """
    Редактирует название и иконку темы в супергруппе-форуме.
    
    Args:
        bot_token (str): Токен бота
        chat_id (int or str): ID чата или username супергруппы
        message_thread_id (int): ID темы форума
        name (str, optional): Новое название темы (0-128 символов)
        icon_custom_emoji_id (str, optional): ID кастомного эмодзи для иконки
    
    Returns:
        bool: True при успехе, иначе False
    """
    url = f"https://api.telegram.org/bot{bot_token}/editForumTopic"
    
    payload = {
        "chat_id": chat_id,
        "message_thread_id": message_thread_id
    }
    
    if name is not None:
        payload["name"] = name
    
    if icon_custom_emoji_id is not None:
        payload["icon_custom_emoji_id"] = icon_custom_emoji_id
    
    response = requests.post(url, json=payload)
    result = response.json()
    
    return result.get("ok", False)

# Пример использования
if __name__ == "__main__":
    BOT_TOKEN = "YOUR_BOT_TOKEN"
    CHAT_ID = -1001234567890  # ID супергруппы
    TOPIC_ID = 123  # ID темы
    
    # Пример 1: Изменить только название
    success = edit_forum_topic(
        bot_token=BOT_TOKEN,
        chat_id=CHAT_ID,
        message_thread_id=TOPIC_ID,
        name="Новое название темы"
    )
    
    # Пример 2: Изменить и название, и иконку
    success = edit_forum_topic(
        bot_token=BOT_TOKEN,
        chat_id=CHAT_ID,
        message_thread_id=TOPIC_ID,
        name="Обновленная тема",
        icon_custom_emoji_id="5432109876543210"  # ID кастомного эмодзи
    )
    
    # Пример 3: Удалить иконку (передать пустую строку)
    success = edit_forum_topic(
        bot_token=BOT_TOKEN,
        chat_id=CHAT_ID,
        message_thread_id=TOPIC_ID,
        icon_custom_emoji_id=""
    )

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

  • API 6.3. Добавлен метод editForumTopic
  • API 6.4. Обновлен метод editForumTopic: Параметры name и icon_custom_emoji_id теперь опциональны
  • API 9.3. Обновлен метод editForumTopic: Поддержан параметр message_thread_id в личных чатах с темами для управления темами.

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

  • getForumTopicIconStickers - Получение пользовательских стикеров-эмодзи для использования в качестве иконки темы форума.
Комментарии