Описание
Используйте этот метод для создания темы в супергруппе с форумом. Бот должен быть администратором в чате и иметь права администратора can_manage_topics. Возвращает информацию о созданной теме в виде объекта ForumTopic.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| chat_id | Integer или String | Да | Уникальный идентификатор целевого чата или имя пользователя целевой супергруппы (в формате @supergroupusername) |
| name | String | Да | Название темы, 1-128 символов |
| icon_color | Integer | Необязательный | Цвет иконки темы в формате RGB. В настоящее время должен быть одним из 7322096 (0x6FB9F0), 16766590 (0xFFD67E), 13338331 (0xCB86DB), 9367192 (0x8EEE98), 16749490 (0xFF93B2) или 16478047 (0xFB6F5F) |
| icon_custom_emoji_id | String | Необязательный | Уникальный идентификатор пользовательского эмодзи, отображаемого как иконка темы. Используйте getForumTopicIconStickers для получения всех разрешённых идентификаторов пользовательских эмодзи. |
Примеры
php
<?php
// Токен вашего бота
$botToken = 'YOUR_BOT_TOKEN';
// Параметры для создания темы
$chatId = '@supergroupusername'; // или ID чата
$topicName = 'Новая тема обсуждения';
$iconColor = 7322096; // Необязательный параметр
$iconCustomEmojiId = '1234567890'; // Необязательный параметр
// Формируем URL API
$apiUrl = "https://api.telegram.org/bot{$botToken}/createForumTopic";
// Подготавливаем данные
$postData = [
'chat_id' => $chatId,
'name' => $topicName,
];
// Добавляем необязательные параметры, если они указаны
if (isset($iconColor)) {
$postData['icon_color'] = $iconColor;
}
if (isset($iconCustomEmojiId)) {
$postData['icon_custom_emoji_id'] = $iconCustomEmojiId;
}
// Инициализируем cURL
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
// Выполняем запрос
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Проверяем ошибки cURL
if (curl_errno($ch)) {
echo 'Ошибка cURL: ' . curl_error($ch);
} else {
// Декодируем ответ
$result = json_decode($response, true);
if ($result['ok']) {
// Успешное создание темы
$topic = $result['result'];
echo "Тема создана успешно!\n";
echo "ID темы: " . $topic['message_thread_id'] . "\n";
echo "Название: " . $topic['name'] . "\n";
echo "Цвет иконки: " . ($topic['icon_color'] ?? 'не указан') . "\n";
} else {
// Ошибка от API
echo "Ошибка: " . $result['description'] . "\n";
echo "Код ошибки: " . ($result['error_code'] ?? 'неизвестно') . "\n";
}
}
// Закрываем соединение
curl_close($ch);
// Альтернативный вариант с использованием file_get_contents (требует allow_url_fopen)
/*
$context = stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/json',
'content' => json_encode($postData)
]
]);
$response = file_get_contents($apiUrl, false, $context);
$result = json_decode($response, true);
if ($result['ok']) {
$topic = $result['result'];
// Обработка успешного результата
} else {
// Обработка ошибки
}
*/
?>
python
import requests
def create_forum_topic(bot_token, chat_id, name, icon_color=None, icon_custom_emoji_id=None):
"""
Создает тему в супергруппе-форуме.
:param bot_token: Токен бота
:param chat_id: ID чата или username супергруппы
:param name: Название темы (1-128 символов)
:param icon_color: Цвет иконки темы в RGB (опционально)
:param icon_custom_emoji_id: ID кастомного эмодзи для иконки (опционально)
:return: Объект ForumTopic или None при ошибке
"""
url = f"https://api.telegram.org/bot{bot_token}/createForumTopic"
payload = {
"chat_id": chat_id,
"name": name
}
if icon_color is not None:
payload["icon_color"] = icon_color
if icon_custom_emoji_id is not None:
payload["icon_custom_emoji_id"] = icon_custom_emoji_id
try:
response = requests.post(url, json=payload)
response.raise_for_status()
result = response.json()
if result.get("ok"):
return result.get("result")
else:
print(f"Ошибка: {result.get('description')}")
return None
except requests.exceptions.RequestException as e:
print(f"Ошибка запроса: {e}")
return None
# Пример использования
if __name__ == "__main__":
BOT_TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = "@supergroupusername" # или числовой ID
TOPIC_NAME = "Обсуждение проекта"
# Пример 1: Создание темы с цветом иконки
topic1 = create_forum_topic(
bot_token=BOT_TOKEN,
chat_id=CHAT_ID,
name=TOPIC_NAME,
icon_color=7322096 # 0x6FB9F0 (голубой)
)
# Пример 2: Создание темы с кастомным эмодзи
topic2 = create_forum_topic(
bot_token=BOT_TOKEN,
chat_id=CHAT_ID,
name="Технические вопросы",
icon_custom_emoji_id="AgADBAADwZxgBw" # Пример ID эмодзи
)
# Пример 3: Простое создание темы
topic3 = create_forum_topic(
bot_token=BOT_TOKEN,
chat_id=CHAT_ID,
name="Общие вопросы"
)
if topic1:
print(f"Тема создана: {topic1.get('name')}, ID: {topic1.get('message_thread_id')}")
История изменений
- API 6.3. Добавлен метод createForumTopic
Дополнительно
- ForumTopic - Объект, представляющий тему в форуме Telegram с её идентификатором, названием и параметрами иконки.
- getForumTopicIconStickers - Получение пользовательских стикеров-эмодзи для использования в качестве иконки темы форума.