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