Шаблоны приветственных сообщений Discord: 6 готовых JSON
Шесть шаблонов приветственного сообщения Discord — готовый JSON для вебхука: классический embed, минимализм, игровой, бизнес, чеклист правил и Components V2.
На этой странице
- Как отправить любой шаблон
- Шаблон 1: классический приветственный embed
- Шаблон 2: минималистичный
- Шаблон 3: игровое сообщество
- Шаблон 4: бизнес или сервер поддержки
- Шаблон 5: приветствие с чеклистом правил
- Шаблон 6: контейнер Components V2 с кнопкой-ссылкой
- Как настроить шаблон под себя
- Цвет
- Thumbnail и баннер
- Временная метка
- Плейсхолдеры и упоминания
- Имя и аватар
- Как загрузить шаблон в конструктор
- Частые ошибки
- FAQ
- Может ли вебхук сам отправлять приветствие при входе участника?
- Можно ли упомянуть нового участника в приветственном embed?
- Что выбрать для приветствия — классический embed или Components V2?
- Считается ли приветственный embed в лимит 2000 символов content?
- Что дальше
Приветственное сообщение — первое, что читает новый участник. Отправляют его двумя способами: один раз через вебхук в #welcome и закрепляют, либо бот или автоматизация шлёт его при каждом входе. Тело запроса в обоих случаях одно и то же — JSON, и именно его вы получите ниже: шесть шаблонов приветственных сообщений Discord, которые можно отправить на URL вебхука как есть, плюс несколько настроек, которые стоит поменять под себя.
Каждый шаблон — полное тело запроса, а не фрагмент. Замените плейсхолдеры (название сервера, ссылки на картинки, ID каналов), отправьте через curl или импортируйте в конструктор — и приветственный embed готов за минуту.
Как отправить любой шаблон
Сохраните JSON в welcome.json и отправьте:
curl -H "Content-Type: application/json" \
-d @welcome.json \
"https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN"
Ответ 204 No Content означает, что сообщение доставлено. Три момента, которые стоит знать до того, как вставлять:
- Упоминания каналов вида
<#111111111111111111>рендерятся кликабельными ссылками без дополнительных настроек. ID копируется из контекстного меню канала при включённом режиме разработчика. Будут ли пользователи, роли или@everyoneреально получать пинг, определяетallowed_mentions— см. гайд по упоминаниям. - Плейсхолдеры вроде
{member}Discord не подставляет. Вебхук — обычный HTTP-эндпоинт; реальные значения подставляет ваш бот или скрипт перед отправкой. - Картинки — только публичные HTTPS-ссылки или
attachment://file.pngс файлом, загруженным в том же запросе. Приватная ссылка с Google Drive не отобразится.
Шаблон 1: классический приветственный embed
Как выглядит: полоса цвета blurple слева, иконка сервера маленькой картинкой в правом верхнем углу, жирный заголовок, описание в одну строку, три inline-поля со ссылками на правила, роли и знакомства, футер с номером участника и временная метка рядом с ним.
{
"embeds": [
{
"title": "Добро пожаловать в Nightshift Studio 👋",
"description": "Рады видеть! Возьмите роль, поздоровайтесь и чувствуйте себя как дома.",
"color": 5793266,
"thumbnail": { "url": "https://example.com/server-icon.png" },
"fields": [
{ "name": "📜 Правила", "value": "<#111111111111111111>", "inline": true },
{ "name": "🎭 Роли", "value": "<#222222222222222222>", "inline": true },
{ "name": "💬 Знакомства", "value": "<#333333333333333333>", "inline": true }
],
"footer": { "text": "Участник №1248" },
"timestamp": "2026-09-17T12:00:00.000Z"
}
]
}
footer.text — естественное место для того, что скрипт знает в момент отправки: счётчик участников, использованный инвайт или вообще ничего.
Шаблон 2: минималистичный
Как выглядит: одна строка обычного текста с упоминанием новичка, под ней тонкая зелёная карточка с одним предложением. Читается как системное уведомление и не хоронит переписку под большим embed.
{
"username": "Welcome",
"content": "👋 Добро пожаловать, {member}!",
"allowed_mentions": { "parse": ["users"] },
"embeds": [
{
"description": "Поздоровайтесь в <#333333333333333333> и возьмите роль в <#222222222222222222>.",
"color": 3066993
}
]
}
Замените {member} на <@userId> из обработчика входа. Упоминание стоит в content не случайно: внутри embed оно отрисуется ссылкой, но никого не уведомит, а allowed_mentions.parse: ["users"] разрешает упоминанию из content пингануть новичка.
Шаблон 3: игровое сообщество
Как выглядит: фиолетовая полоса, своё имя и аватар у сообщения, баннер внизу, два inline-поля (роли платформ и поиск команды) и поле «Ближайший ивент» на всю ширину с живой временной меткой Discord, которая показывается в локальном времени каждого участника.
{
"username": "Raid Lobby",
"avatar_url": "https://example.com/raid-lobby.png",
"embeds": [
{
"title": "GG, добро пожаловать в Raid Lobby 🎮",
"description": "У нас кооп-вечера, рейтинговые скримы и иногда спидран-гонки.\n\nСначала возьмите роль платформы, иначе не увидите каналы поиска команды.",
"color": 10181046,
"fields": [
{ "name": "🕹️ Выбрать платформу", "value": "<#444444444444444444>", "inline": true },
{ "name": "🔍 Найти отряд", "value": "<#555555555555555555>", "inline": true },
{
"name": "📅 Ближайший ивент",
"value": "<t:1789844400:F> (<t:1789844400:R>)",
"inline": false
}
],
"image": { "url": "https://example.com/welcome-banner.png" },
"footer": { "text": "Будьте дружелюбны. Злитесь в войсе, а не в тексте." }
}
]
}
<t:1789844400:F> рендерится полной датой, <t:1789844400:R> — «через 2 дня». Генерируйте Unix-время из календаря ивентов, и поле никогда не устареет.
Шаблон 4: бизнес или сервер поддержки
Как выглядит: приглушённый синий, логотип компании в thumbnail, заголовок без эмодзи, два inline-поля (канал тикетов и замаскированная ссылка на статус-страницу), поле с часами работы на всю ширину и футер с целевым временем ответа.
{
"embeds": [
{
"title": "Добро пожаловать в поддержку Acme Cloud",
"description": "Этот сервер — самый быстрый способ связаться с нашими инженерами. Перед вопросом загляните в закреплённый FAQ. По вопросам оплаты откройте тикет и не публикуйте данные аккаунта в общих каналах.",
"color": 3447003,
"thumbnail": { "url": "https://example.com/acme-logo.png" },
"fields": [
{ "name": "Открыть тикет", "value": "<#666666666666666666>", "inline": true },
{
"name": "Статус-страница",
"value": "[status.acme.example](https://status.acme.example)",
"inline": true
},
{ "name": "Часы поддержки", "value": "Пн–Пт, 09:00–18:00 МСК\nСбои: 24/7", "inline": false }
],
"footer": { "text": "Acme Cloud · Целевое время ответа: 1 рабочий день" },
"timestamp": "2026-09-17T09:00:00.000Z"
}
]
}
Замаскированные ссылки [текст](https://…) работают внутри полей embed, поэтому статус-страница выглядит одним аккуратным словом, а не голым URL.
Шаблон 5: приветствие с чеклистом правил
Как выглядит: золотая полоса, чекбокс-список в начале описания, дальше краткая версия правил в четыре строки, поле «Нужна помощь?» и футер с формулировкой согласия. Полные правила лучше вынести в отдельное сообщение — см. шаблон embed с правилами сервера.
{
"allowed_mentions": { "parse": [] },
"embeds": [
{
"title": "Добро пожаловать! Три шага перед стартом ✅",
"description": "☑️ **Прочитайте правила** в <#111111111111111111>\n☑️ **Выберите роли** в <#222222222222222222>\n☑️ **Представьтесь** в <#333333333333333333>\n\nКраткая версия правил:\n1. Уважайте друг друга. Никакой травли и оскорблений.\n2. Без спама, нежелательных ЛС и самопиара вне <#777777777777777777>.\n3. Пишите в подходящий канал и прячьте спойлеры под тег.\n4. Последнее слово за модераторами. Обжалуйте в тикете, не публично.",
"color": 15844367,
"fields": [
{
"name": "Нужна помощь?",
"value": "Упомяните <@&888888888888888888> в любом канале.",
"inline": false
}
],
"footer": { "text": "Оставаясь на сервере, вы соглашаетесь с правилами выше." }
}
]
}
allowed_mentions.parse: [] гарантирует, что это сообщение никого не пинганёт, что бы ни оказалось в тексте, — именно это нужно сообщению, которое уходит сотни раз.
Шаблон 6: контейнер Components V2 с кнопкой-ссылкой
Как выглядит: одна скруглённая карточка с цветной полосой, заголовок и вводный текст, тонкий разделитель, нумерованный чеклист и кнопка внизу, открывающая ссылку. Сетки «заголовок/поля» нет — раскладку задают компоненты. Это формат Components V2, поэтому flags должен быть 32768, а content и embeds — пустыми.
{
"flags": 32768,
"components": [
{
"type": 17,
"accent_color": 5793266,
"components": [
{
"type": 10,
"content": "## Добро пожаловать в Nightshift Studio 👋\nВы участник **№1248**. Две минуты на настройку — и вы в деле."
},
{ "type": 14 },
{
"type": 10,
"content": "**1.** Прочитайте правила\n**2.** Выберите роли в <#222222222222222222>\n**3.** Поздоровайтесь в <#333333333333333333>"
},
{
"type": 1,
"components": [
{
"type": 2,
"style": 5,
"label": "Прочитать правила",
"url": "https://example.com/rules"
}
]
}
]
}
]
}
Отправляйте с ?with_components=true в URL, иначе Discord проигнорирует поле components:
curl -H "Content-Type: application/json" \
-d @welcome-v2.json \
"https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN?with_components=true"
Кнопки-ссылки (style: 5) — единственные кнопки, которые может отправить обычный вебхук; в тот же action row можно добавить ещё несколько, например «Гид по сообществу» рядом с «Прочитать правила». Кнопка «Получить роли», которая реально выдаёт роль, — интерактивная, ей нужен бот; как это работает через бота сайта, описано в гайде по интерактивным кнопкам.
Как настроить шаблон под себя
Цвет
color — десятичное целое, а не hex-строка. 5793266 — это blurple Discord #5865F2; любой hex переводится через parseInt("5865F2", 16) в JavaScript или int("5865F2", 16) в Python. В шаблоне Components V2 то же значение идёт в accent_color контейнера. Готовая палитра — в гайде по цветам embed.
Thumbnail и баннер
thumbnail.url — маленькая картинка справа вверху, image.url — большая под полями. Обеим нужны публичные HTTPS-ссылки. Если баннер лежит на диске, загрузите его как files[0] в multipart-запросе и сошлитесь через attachment://banner.png — см. отправку файлов. В thumbnail хорошо смотрится аватар нового участника: передавайте его URL из события входа.
Временная метка
timestamp — ISO 8601 (2026-09-17T12:00:00.000Z), Discord показывает её рядом с футером в часовом поясе читателя. Генерируйте в момент отправки: new Date().toISOString() в JavaScript, datetime.now(timezone.utc).isoformat() в Python. Для дат внутри текста используйте <t:UNIX:R> — она остаётся относительной («3 минуты назад») без повторной отправки.
Плейсхолдеры и упоминания
Подставьте плейсхолдеры в коде и только потом отправляйте. Минимальный обработчик на discord.js, который шлёт шаблон 2 при каждом входе (включите боту intent Server Members в Developer Portal):
import { readFileSync } from 'node:fs';
import { Client, GatewayIntentBits } from 'discord.js';
const template = readFileSync('./welcome.json', 'utf8');
const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers],
});
client.on('guildMemberAdd', async (member) => {
const body = JSON.parse(template.replaceAll('{member}', `<@${member.id}>`));
body.embeds[0].thumbnail = { url: member.displayAvatarURL({ size: 256 }) };
await fetch(process.env.WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
});
});
client.login(process.env.DISCORD_TOKEN);
Если бота нет, тот же JSON можно отправлять из платформы автоматизации по любому доступному там триггеру — см. Zapier, Make и n8n.
Имя и аватар
username и avatar_url переопределяют настройки вебхука для конкретного сообщения (до 80 символов, без «discord» и «clyde» в имени). Так приветствие приходит от лица «Welcome», а не «Deploy Bot». Подробнее — в статье про имя и аватар вебхука.
Как загрузить шаблон в конструктор
Если хочется увидеть результат до отправки:
- Откройте конструктор Discord Webhook и выберите импорт JSON.
- Вставьте один из шаблонов выше. Предпросмотр отрисует embed так, как его покажет Discord, включая цвет, thumbnail и временную метку.
- Поправьте текст, замените ссылки на картинки, поменяйте цвет пикером. Для шаблона Components V2 конструктор показывает контейнер, разделитель и кнопку как редактируемые блоки.
- Вставьте URL вебхука и отправьте — или экспортируйте результат как JSON, код discord.js или discord.py для обработчика входа.
В конструкторе есть и собственные шаблоны, так что можно ничего не вставлять, а начать с готового и подправить.
Частые ошибки
- 400 с
embeds.0.color— вы отправили"#5865F2"или"5865F2".colorдолжен быть десятичным целым. - 400 с
embeds.0.descriptionexceeds limit — описание ограничено 4096 символами, все embed одного сообщения вместе — 6000. Длинные правила вынесите во второе сообщение. - Шаблон Components V2 возвращает 400 или приходит без кнопки — проверьте все три условия:
flags: 32768,?with_components=trueв URL и отсутствиеcontent/embedsв теле. - Thumbnail или баннер пустой — ссылка не ведёт напрямую на публичную картинку. Откройте её в приватном окне браузера: если там не «голое» изображение, Discord его тоже не загрузит.
- Упоминание видно, но никто не получил пинг — упоминание стоит внутри embed или
allowed_mentionsего не разрешает (например,parse: []). Поместите<@userId>вcontentи разрешите его черезallowed_mentions. - 404
{"message":"Unknown Webhook","code":10015}— URL неверный или вебхук удалён. Создайте новый: Настройки сервера → Интеграции → Вебхуки. - 429 Too Many Requests при волне новых участников — прочитайте
retry_afterиз тела ответа и подождите; см. лимиты запросов.
FAQ
Может ли вебхук сам отправлять приветствие при входе участника?
Сам по себе — нет. У вебхука нет событий, он только принимает POST-запросы. Вход должен кто-то заметить — бот, слушающий событие входа участника, или платформа автоматизации — и отправить шаблон через вебхук. Для статичного приветствия, которое отправляют один раз и закрепляют, вебхука достаточно.
Можно ли упомянуть нового участника в приветственном embed?
<@userId> внутри embed отрисуется кликабельным упоминанием, но упоминания в embed никого не уведомляют. Чтобы пингануть новичка, поставьте упоминание в content и разрешите его через "allowed_mentions": { "parse": ["users"] } или { "users": ["userId"] }. Роли и каналы упоминаются через <@&roleId> и <#channelId>.
Что выбрать для приветствия — классический embed или Components V2?
Embed — когда нужна привычная раскладка «заголовок/поля/thumbnail» и максимальная совместимость с существующими инструментами. Components V2 — когда в той же карточке нужны кнопки-ссылки, разделители или медиагалерея. Оба формата отправляет любой вебхук без бота.
Считается ли приветственный embed в лимит 2000 символов content?
Нет. У content свой лимит в 2000 символов; embed ограничены отдельно (4096 на описание и 6000 суммарно на все embed одного сообщения).
Что дальше
Возьмите шаблон, ближайший к вашему серверу, поменяйте цвет и ID каналов и отправьте. Чтобы увидеть результат до отправки и экспортировать его в код, откройте бесплатный конструктор Discord Webhook. Разбор каждого поля — в гайде по конструктору embed, формат контейнеров — в гайде по Components V2, а когда дойдёте до кнопок, выдающих роли, — в гайде по интерактивным кнопкам.