Discord Embed — гайд по полям, цветам и лимитам
Всё о Discord embed-сообщениях: структура, поля, цвета, изображения, футеры, timestamp. Примеры кода и лимиты API для создания красивых сообщений.
🇬🇧 Доступно также на English
Что такое 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