Как отправлять сообщения Discord Webhook в треды и форумы
Узнайте, как отправлять вебхук-сообщения в существующие треды, создавать новые посты на форуме и автоматизировать общение в тредах Discord.
Треды и форумные каналы в Discord помогают держать разговоры в порядке. Но если вы автоматизируете уведомления через вебхуки, нужно знать пару дополнительных приёмов, чтобы правильно адресовать сообщения. В этом руководстве разберём оба сценария: отправку в существующий тред и создание нового поста на форуме.
Два разных сценария
Прежде чем переходить к коду, стоит понять разницу:
- Существующий тред — тред, который уже находится внутри обычного текстового канала. Вы хотите, чтобы сообщение вебхука появилось именно там, а не в родительском канале.
- Пост на форуме — форумные каналы работают иначе. Каждый пост — это отдельный тред. Чтобы создать пост через вебхук, нужно передать Discord заголовок поста, и он автоматически создаст новый тред.
API обрабатывает эти два случая по-разному, поэтому рассмотрим каждый отдельно.
Сценарий 1: Отправка в существующий тред
Когда вебхук привязан к текстовому каналу, он по умолчанию публикует сообщения в этот канал. Чтобы перенаправить сообщение в конкретный тред, добавьте ?thread_id= к URL вебхука с идентификатором треда.
Как получить ID треда
Кликните правой кнопкой мыши на название треда в Discord и выберите Копировать ID треда (для этого нужно включить режим разработчика в Настройках пользователя > Расширенные).
URL запроса
POST https://discord.com/api/webhooks/{webhook_id}/{webhook_token}?thread_id=123456789012345678
Всё остальное остаётся прежним. Тело запроса — обычный вебхук-payload.
Пример JSON
{
"content": "Деплой завершён успешно.",
"username": "Deploy Bot",
"embeds": [
{
"title": "Сборка #42 прошла",
"color": 3066993,
"description": "Все тесты зелёные. Задеплоено в продакшн."
}
]
}
Пример curl
curl -X POST \
"https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN?thread_id=123456789012345678" \
-H "Content-Type: application/json" \
-d '{
"content": "Деплой завершён успешно.",
"username": "Deploy Bot"
}'
Пример на JavaScript
const webhookUrl =
"https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN";
const threadId = "123456789012345678";
const payload = {
content: "Деплой завершён успешно.",
username: "Deploy Bot",
embeds: [
{
title: "Сборка #42 прошла",
color: 3066993,
description: "Все тесты зелёные. Задеплоено в продакшн.",
},
],
};
await fetch(`${webhookUrl}?thread_id=${threadId}`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
Вот и всё. Параметр thread_id в строке запроса указывает Discord, куда именно поместить сообщение.
Сценарий 2: Создание нового поста на форуме
В форумных каналах нет общего чата. Каждое сообщение — это пост, а каждый пост — это тред. Чтобы создать новый пост через вебхук, нужно передать thread_name в теле запроса. Discord создаст тред и опубликует ваше сообщение как первое в нём.
Вебхук должен быть привязан именно к форумному каналу.
Пример JSON
{
"content": "Еженедельный отчёт о статусе для команды.",
"thread_name": "Отчёт за 7-ю неделю",
"applied_tags": ["987654321098765432"]
}
thread_name— заголовок нового поста на форуме (обязателен для форумных каналов)applied_tags— необязательный массив snowflake-идентификаторов тегов, которые нужно применить к посту
Пример curl
curl -X POST \
"https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"content": "Еженедельный отчёт о статусе для команды.",
"thread_name": "Отчёт за 7-ю неделю",
"applied_tags": ["987654321098765432"]
}'
Пример на JavaScript
const webhookUrl =
"https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN";
const payload = {
content: "Еженедельный отчёт о статусе для команды.",
thread_name: "Отчёт за 7-ю неделю",
applied_tags: ["987654321098765432"],
embeds: [
{
title: "Прогресс за неделю",
color: 5793266,
fields: [
{ name: "Выполнено", value: "12 задач", inline: true },
{ name: "В работе", value: "4 задачи", inline: true },
{ name: "Заблокировано", value: "1 задача", inline: true },
],
},
],
};
await fetch(webhookUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
Каждый вызов с thread_name создаёт новый пост на форуме. Если нужно ответить в существующий пост форума (который сам по себе является тредом), используйте подход с ?thread_id= из первого сценария.
Работа с тегами форума
Форумные каналы могут иметь теги для организации постов. При создании поста через вебхук можно применить теги, передав их ID в массиве applied_tags.
Чтобы найти ID тегов, нужно обратиться к Discord API или использовать бота. Эндпоинт GET /channels/{channel_id} возвращает массив available_tags форумного канала, где у каждого тега есть поле id. Скопируйте эти ID в payload с applied_tags.
Важные моменты:
- Некоторые форумные каналы требуют хотя бы одного тега. Если ваш канал такой, отсутствие
applied_tagsвернёт ошибку 400. - Можно применить несколько тегов:
"applied_tags": ["tag_id_1", "tag_id_2"] - ID тегов — это snowflake-значения (большие целые числа), поэтому в JSON передавайте их как строки.
Использование discord-webhook.com для тредов и форумов
Если не хочется писать сырые HTTP-запросы, discord-webhook.com/app поддерживает все три режима из коробки:
- Обычный — стандартное сообщение в канал вебхука
- В тред — вставьте ID треда, и сообщение отправится туда
- Пост на форуме — задайте заголовок поста и опциональные теги, и инструмент создаст пост за вас
Визуальный редактор позволяет собирать эмбеды, предпросматривать результат и переключаться между режимами без написания кода. Удобно для разовых публикаций или для тестирования payload перед подключением к автоматизации.
Нужно запланировать публикацию поста на форуме на определённое время? Используйте функцию отложенных сообщений — создайте пост визуально и выберите дату отправки. А для тредов с кнопками, которые выдают роли или открывают формы, ознакомьтесь с руководством по интерактивным кнопкам.
Частые ошибки
400 Bad Request — как правило, означает, что не хватает обязательного поля. Для форумных каналов проверьте наличие thread_name и убедитесь, что переданы обязательные теги, если канал их требует.
404 Not Found — ID треда не существует или у вебхука нет к нему доступа. Проверьте ID и убедитесь, что вебхук находится на том же сервере.
405 Method Not Allowed — вы отправляете запрос в форумный канал без thread_name. Форумные каналы не принимают обычные сообщения; каждый пост должен иметь заголовок.
Краткая справка
| Цель | Как сделать |
|---|---|
| Отправить в существующий тред | Добавить ?thread_id=THREAD_ID к URL вебхука |
| Создать новый пост на форуме | Включить "thread_name": "Заголовок поста" в тело запроса |
| Применить теги форума | Включить "applied_tags": ["tag_id"] в тело запроса |
| Ответить в пост форума | Использовать ?thread_id= с ID треда поста форума |
Связанные руководства
- Руководство по настройке Discord Webhook — получите URL вебхука и разберитесь с основами
- Discord Webhooks на JavaScript — полное руководство по интеграции на JavaScript
- Уведомления через Discord Webhook — паттерны для алертов, мониторинга и событийных сообщений
- Отложенная отправка сообщений — запланируйте пост в форум или сообщение в тред на нужное время
- Опросы через Discord Webhook — создание нативных опросов Discord через вебхуки
- Интерактивные кнопки и действия — кнопки с ролями и формами для сообщений в тредах
Треды и форумы дают серверу Discord структуру. С параметром thread_id и полем thread_name ваши вебхуки смогут работать в рамках этой структуры, а не в обход неё.
Попробуйте в нашем инструменте
Открыть конструктор Discord Webhook