Полное руководство по Discord Embed: поля, цвета, изображения, лимиты
Всё о Discord embed-сообщениях: структура, поля, цвета, изображения, футеры, timestamp. Примеры кода и лимиты API для создания красивых сообщений.
Что такое Discord Embed?
Discord Embed — это структурированное сообщение с форматированием, которое выглядит намного богаче обычного текста. Embed позволяют добавлять:
- Заголовки и описания с поддержкой Markdown
- Цветную боковую полоску для визуального выделения
- Поля (fields) для структурированных данных
- Изображения и миниатюры (thumbnails)
- Футеры с иконками и текстом
- Временные метки (timestamp)
- Ссылки в заголовке и описании
Embed используются ботами, webhook’ами и интеграциями для создания информативных и красивых сообщений.
Базовая структура Embed
Минимальный embed выглядит так:
{
"embeds": [{
"title": "Заголовок embed",
"description": "Описание с поддержкой **Markdown**",
"color": 5814783
}]
}
Отправка через webhook:
const webhookUrl = "https://discord.com/api/webhooks/YOUR_WEBHOOK_URL";
const payload = {
embeds: [{
title: "Заголовок embed",
description: "Описание с поддержкой **Markdown**",
color: 5814783
}]
};
fetch(webhookUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload)
});
Цвета Embed
Цвет embed задаётся как десятичное число. Это цвет вертикальной полоски слева от сообщения.
Популярные цвета
const colors = {
red: 15548997, // #ED4245
green: 5763719, // #57F287
blue: 3447003, // #3498DB
yellow: 16776960, // #FFFF00
purple: 10181046, // #9B59B6
blurple: 5793266, // #5865F2 (фирменный Discord)
orange: 15105570, // #E67E22
white: 16777215, // #FFFFFF
black: 2303786 // #23272A
};
Конвертация HEX в десятичный формат
Если у вас есть HEX-цвет (например, #FF5733), конвертируйте его:
const hexToDecimal = (hex) => parseInt(hex.replace("#", ""), 16);
console.log(hexToDecimal("#FF5733")); // 16734003
Или используйте онлайн-конвертер: просто введите HEX в Google как “0xFF5733 to decimal”.
Поля (Fields)
Fields позволяют создавать структурированные данные в виде таблицы:
{
"embeds": [{
"title": "Информация о сервере",
"color": 5793266,
"fields": [
{
"name": "Онлайн",
"value": "1,234 игрока",
"inline": true
},
{
"name": "Регион",
"value": "EU West",
"inline": true
},
{
"name": "Статус",
"value": "Работает",
"inline": true
},
{
"name": "Описание",
"value": "Это поле занимает всю ширину, потому что inline: false",
"inline": false
}
]
}]
}
Параметры полей
name— заголовок поля (обязательно, макс. 256 символов)value— содержимое поля (обязательно, макс. 1024 символа)inline— еслиtrue, поля выстраиваются в ряд (до 3 в строке)
Совет: Используйте
inline: trueдля компактных данных (статистика, параметры), иinline: falseдля длинных текстов.
Изображения и миниатюры
Embed поддерживают несколько типов изображений:
{
"embeds": [{
"title": "Embed с изображениями",
"description": "Демонстрация всех типов изображений",
"color": 3447003,
"thumbnail": {
"url": "https://example.com/thumbnail.png"
},
"image": {
"url": "https://example.com/main-image.png"
},
"author": {
"name": "Автор сообщения",
"icon_url": "https://example.com/author-icon.png",
"url": "https://example.com/author-profile"
},
"footer": {
"text": "Футер с иконкой",
"icon_url": "https://example.com/footer-icon.png"
}
}]
}
Типы изображений
thumbnail— маленькое изображение в правом верхнем углуimage— большое изображение внизу embedauthor.icon_url— маленькая иконка рядом с именем автораfooter.icon_url— маленькая иконка в футере
Все URL должны быть прямыми ссылками на изображения (.png, .jpg, .gif, .webp). Discord поддерживает HTTPS и attachment URLs.
Автор (Author)
Блок author добавляет имя и иконку в верхней части embed:
{
"embeds": [{
"author": {
"name": "GitHub Actions",
"url": "https://github.com/features/actions",
"icon_url": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png"
},
"title": "Build успешен",
"description": "Все тесты прошли",
"color": 5763719
}]
}
name— имя автора (макс. 256 символов)url— ссылка при клике на имя (опционально)icon_url— иконка рядом с именем (опционально)
Футер (Footer)
Footer отображается внизу embed мелким шрифтом:
{
"embeds": [{
"title": "Уведомление",
"description": "Что-то произошло",
"color": 16776960,
"footer": {
"text": "Monitoring Bot • ID: 12345",
"icon_url": "https://example.com/bot-icon.png"
}
}]
}
text— текст футера (макс. 2048 символов)icon_url— маленькая иконка слева от текста (опционально)
Временная метка (Timestamp)
Timestamp добавляет время в футер в формате ISO 8601:
const embed = {
title: "Событие",
description: "Произошло в определённое время",
color: 3447003,
timestamp: new Date().toISOString() // "2025-03-22T14:30:00.000Z"
};
Discord автоматически конвертирует timestamp в локальное время пользователя и отображает как “сегодня в 14:30” или “вчера в 20:15”.
Ссылки в заголовке
Заголовок embed может быть кликабельным:
{
"embeds": [{
"title": "Новый коммит в репозитории",
"url": "https://github.com/user/repo/commit/abc123",
"description": "Кликните на заголовок, чтобы открыть коммит",
"color": 5793266
}]
}
При клике на заголовок пользователь перейдёт по указанному URL.
Markdown в Embed
Поля description и value в fields поддерживают Markdown:
{
"embeds": [{
"description": "**Жирный текст**\n*Курсив*\n__Подчёркнутый__\n~~Зачёркнутый~~\n`Код`\n```js\nconst code = 'block';\n```\n[Ссылка](https://example.com)\n> Цитата"
}]
}
Поддерживаемый Markdown
**жирный**→ жирный*курсив*→ курсив__подчёркнутый__→ подчёркнутый~~зачёркнутый~~→зачёркнутый`код`→код```язык\nкод\n```→ блок кода[текст](url)→ ссылка> цитата→ цитата
Важно: Заголовки (
#,##) и списки (-,*) не поддерживаются в embed.
Полный пример: Embed с всеми элементами
const fullEmbed = {
embeds: [{
author: {
name: "Система мониторинга",
icon_url: "https://example.com/monitor-icon.png",
url: "https://example.com/dashboard"
},
title: "Отчёт о состоянии сервера",
url: "https://example.com/server/status",
description: "Все системы работают **нормально**.\nПоследняя проверка прошла успешно.",
color: 5763719,
fields: [
{
name: "CPU",
value: "23%",
inline: true
},
{
name: "RAM",
value: "4.2 ГБ / 16 ГБ",
inline: true
},
{
name: "Диск",
value: "120 ГБ / 500 ГБ",
inline: true
},
{
name: "Время работы",
value: "14 дней, 6 часов",
inline: false
},
{
name: "Последний инцидент",
value: "Нет инцидентов за последние 30 дней",
inline: false
}
],
thumbnail: {
url: "https://example.com/server-thumbnail.png"
},
image: {
url: "https://example.com/server-graph.png"
},
footer: {
text: "Monitoring Bot v2.1 • ID: 98765",
icon_url: "https://example.com/bot-icon.png"
},
timestamp: new Date().toISOString()
}]
};
// Отправка
fetch("https://discord.com/api/webhooks/YOUR_WEBHOOK_URL", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(fullEmbed)
});
Лимиты Discord Embed
Discord устанавливает жёсткие лимиты на размер embed:
| Элемент | Лимит |
|---|---|
Заголовок (title) | 256 символов |
Описание (description) | 4096 символов |
Количество полей (fields) | 25 полей |
Имя поля (field.name) | 256 символов |
Значение поля (field.value) | 1024 символа |
Футер (footer.text) | 2048 символов |
Имя автора (author.name) | 256 символов |
| Общий размер embed | 6000 символов |
| Количество embeds в сообщении | 10 embeds |
Важно: Общий размер всех текстовых полей в одном embed не должен превышать 6000 символов. При превышении Discord вернёт ошибку
400 Bad Request.
Несколько Embeds в одном сообщении
Можно отправить до 10 embeds в одном сообщении:
const payload = {
content: "Вот несколько отчётов:",
embeds: [
{
title: "Сервер 1",
description: "Статус: Онлайн",
color: 5763719
},
{
title: "Сервер 2",
description: "Статус: Онлайн",
color: 5763719
},
{
title: "Сервер 3",
description: "Статус: Офлайн",
color: 15548997
}
]
};
Каждый embed отображается отдельным блоком в сообщении.
Частые ошибки
1. Цвет не отображается
// Неправильно
{ color: "#5865F2" }
// Правильно
{ color: 5793266 }
Цвет должен быть десятичным числом, а не HEX-строкой.
2. Изображение не загружается
// Неправильно
{ image: { url: "image.png" } }
// Правильно
{ image: { url: "https://example.com/image.png" } }
URL должен быть полным и начинаться с https://.
3. Превышен лимит символов
Если embed не отправляется, проверьте общий размер:
const calculateEmbedSize = (embed) => {
let total = 0;
if (embed.title) total += embed.title.length;
if (embed.description) total += embed.description.length;
if (embed.footer?.text) total += embed.footer.text.length;
if (embed.author?.name) total += embed.author.name.length;
if (embed.fields) {
embed.fields.forEach(f => {
total += f.name.length + f.value.length;
});
}
return total;
};
console.log(calculateEmbedSize(myEmbed)); // Должно быть <= 6000
Что дальше
Теперь вы знаете всё о структуре Discord embed и можете создавать сложные, красиво оформленные сообщения. Для быстрого прототипирования используйте визуальные инструменты вместо ручного написания JSON.
Попробуйте визуально в нашем бесплатном конструкторе Discord Webhook — создавайте embed с предпросмотром в реальном времени, а затем экспортируйте готовый JSON для вашего кода.
Кроме эмбедов, через вебхуки можно отправлять нативные опросы Discord, а также планировать отправку сообщений на определённое время — всё это доступно в нашем визуальном конструкторе.
Похожие статьи
- Цвета Discord Embed — Полный справочник цветовых кодов — Справочник по цветам embed с hex и десятичными значениями
- Гайд по Discord Components V2: кнопки, меню, формы в вебхуках — Добавление интерактивных элементов в сообщения
- Как отправить Discord Webhook с помощью Python — Отправка embed-сообщений из Python-скриптов
- Лучшая альтернатива Discohook — Сравнение инструментов для создания Discord вебхуков
- Треды и форумы: отправка через webhook — Как отправлять embed-сообщения в треды и форум-каналы
- Интерактивные кнопки и действия — Кнопки с ролями, формами и действиями без кода
Попробуйте в нашем инструменте
Открыть конструктор Discord Webhook