Шаблон правил сервера Discord: 5 готовых embed в JSON
Пять готовых шаблонов правил сервера Discord в JSON: нумерованный список, секции из нескольких embed, компактные поля, Components V2 и версия с верификацией.
На этой странице
- Каким должен быть embed с правилами
- Шаблон 1: нумерованные правила в одном embed
- Шаблон 2: секции из нескольких embed
- Шаблон 3: компактные правила на полях
- Шаблон 4: версия на Components V2
- Шаблон 5: правила плюс блок верификации
- Отправка, закрепление и обновление через PATCH
- Частые ошибки
- FAQ
- Может ли вебхук выдать роль за реакцию на правила?
- Как обновить правила, не публикуя их заново?
- Можно ли пингануть @everyone сообщением с правилами?
- Какая максимальная длина embed с правилами?
- Что дальше
Правила сервера должны прочитать все, а редактировать — только вы. Публикация через вебхук решает обе задачи: вместо простыни текста от аккаунта модератора в канале появляется аккуратный embed, а переписать его потом можно одним PATCH-запросом, не теряя закреп и ссылку, которую участники уже сохранили.
Ниже — пять шаблонов правил сервера Discord в виде готового JSON для вебхука: подставьте ID каналов и ролей, отправьте POST на URL вебхука — и всё. После шаблонов — короткие рекомендации по формулировкам, команды для отправки, закрепления и обновления, а также ошибки, которые обычно вылезают с первой попытки.
Каким должен быть embed с правилами
Шаблон отвечает только за внешний вид. За то, будут ли правила читать и соблюдать, отвечают три свойства:
- Коротко. Одна строка на правило, около десяти слов. Если правилу нужны три абзаца — это уже политика: дайте на неё ссылку из embed, а здесь оставьте одну строку.
- В позитивной формулировке, где это возможно. «В
#generalпишем по-русски» читается лучше, чем «Запрещено писать не по-русски». Прямые запреты оставьте для того, что действительно запрещено: травля, NSFW, доксинг. - Проверяемо. Модератор должен иметь возможность ткнуть в правило и применить его. «Будьте добрее» проверить нельзя, «Никаких оскорблений, травли и дискриминации» — можно. Нумеруйте правила, чтобы в предупреждении можно было написать «правило 3».
Ещё две детали работают лучше, чем кажется: строка о последствиях (предупреждение, мут, бан) и футер с timestamp, чтобы участники видели, когда правила менялись в последний раз. Все пять шаблонов включают и то и другое.
Шаблон 1: нумерованные правила в одном embed
Вариант по умолчанию: один embed, нумерованные правила в description, последствия в конце. Лимит описания — 4096 символов, этого хватает на восемь-десять правил.
{
"username": "Правила сервера",
"embeds": [
{
"title": "📜 Правила сервера",
"description": "Прочитайте один раз, соблюдайте всегда.\n\n**1. Уважайте участников.** Никаких оскорблений, травли, дискриминации и переходов на личности.\n**2. Только SFW-контент.** Никакого NSFW и шок-контента, включая аватары и ники.\n**3. Без спама и саморекламы.** Реклама, инвайты и реферальные ссылки — только в <#PROMO_CHANNEL_ID>.\n**4. Пишите в подходящий канал.** Прочитайте описание канала перед отправкой.\n**5. Без доксинга.** Личные данные — свои и чужие — не публикуем.\n**6. Действуют [Условия использования](https://discord.com/terms) и [Правила сообщества](https://discord.com/guidelines) Discord.**\n\nПредупреждение → мут → бан. Вопросы — в <#SUPPORT_CHANNEL_ID>.",
"color": 5793266,
"footer": { "text": "Обновлено" },
"timestamp": "2026-09-17T12:00:00.000Z"
}
],
"allowed_mentions": { "parse": [] }
}
Упоминания каналов вида <#PROMO_CHANNEL_ID> внутри embed превращаются в кликабельные ссылки. Упоминания внутри embed никого не уведомляют; allowed_mentions: { "parse": [] } гарантирует то же самое для всего, что вы потом положите в content или в текстовый блок Components V2. Хотите цвет не blurple (5793266)? Загляните в справочник цветов.
Шаблон 2: секции из нескольких embed
На больших серверах правила делят по зонам: чат, голос, маркет, модерация. По одному embed на секцию — каждый блок читается отдельно, и его можно покрасить в свой цвет. В одном сообщении может быть до 10 embed и не больше 6000 символов суммарно по всем.
{
"embeds": [
{
"title": "📜 Правила сервера",
"description": "Шесть правил в трёх секциях. Действуют во всех каналах, голосовых комнатах и в личных сообщениях между участниками.",
"color": 5793266
},
{
"title": "💬 Текстовые каналы",
"description": "**1. Уважайте участников.** Никаких оскорблений, травли и переходов на личности.\n**2. Пишите по теме.** Оффтоп — в <#OFFTOPIC_CHANNEL_ID>.\n**3. Без спама и рекламы.** Продвижение только в <#PROMO_CHANNEL_ID>.",
"color": 5763719
},
{
"title": "🎙️ Голос и медиа",
"description": "**4. Никакого earrape, саундбордов и музыкальных ботов** вне <#MUSIC_CHANNEL_ID>.\n**5. Стримы и картинки — только SFW.** Аватары и баннеры тоже.",
"color": 16705372
},
{
"title": "🛡️ Модерация",
"description": "**6. Решения модераторов в чате не обсуждаются.** Не согласны — откройте тикет в <#SUPPORT_CHANNEL_ID>.\n\nПредупреждение → мут на 24 ч → бан. За серьёзные нарушения — сразу бан.",
"color": 15548997,
"footer": { "text": "Обновлено" },
"timestamp": "2026-09-17T12:00:00.000Z"
}
],
"allowed_mentions": { "parse": [] }
}
Нумерация намеренно сквозная: «правило 4» должно означать одно и то же на всём сервере.
Шаблон 3: компактные правила на полях
Поля дают каждому правилу жирный заголовок и пояснение под ним — на телефоне это читается лучше всего. Одно поле на правило, inline: false, чтобы они шли столбиком. Лимиты: 25 полей, имя до 256 символов, значение до 1024.
{
"embeds": [
{
"title": "Правила",
"description": "Краткая версия. Полные политики — в <#POLICIES_CHANNEL_ID>.",
"color": 5793266,
"fields": [
{
"name": "1. Уважение ко всем",
"value": "Никаких оскорблений, травли, дискриминации и переходов на личности.",
"inline": false
},
{
"name": "2. Только SFW",
"value": "Никакого NSFW и шок-контента в сообщениях, аватарах и никах.",
"inline": false
},
{
"name": "3. Без спама и саморекламы",
"value": "Инвайты, реферальные ссылки и реклама — в <#PROMO_CHANNEL_ID>.",
"inline": false
},
{
"name": "4. Нужный канал, нужная тема",
"value": "Прочитайте описание канала перед отправкой.",
"inline": false
},
{
"name": "5. Действуют правила Discord",
"value": "Что нарушает [Условия Discord](https://discord.com/terms), нарушает и наши.",
"inline": false
},
{
"name": "Последствия",
"value": "Предупреждение → мут → бан. За серьёзные нарушения шаги пропускаются.",
"inline": false
}
],
"footer": { "text": "Обновлено" },
"timestamp": "2026-09-17T12:00:00.000Z"
}
],
"allowed_mentions": { "parse": [] }
}
Шаблон 4: версия на Components V2
Components V2 заменяет embed контейнером из текстовых блоков, разделителей и кнопок-ссылок: настоящие линии между секциями и кнопка на страницу с полными правилами. В запросе меняются две вещи: flags: 32768 без content и embeds, плюс ?with_components=true в URL вебхука. Обычный вебхук отправит такой payload без проблем, потому что в нём только кнопки-ссылки (style: 5).
{
"flags": 32768,
"components": [
{
"type": 17,
"accent_color": 5793266,
"components": [
{ "type": 10, "content": "## 📜 Правила сервера\nПрочитайте один раз, соблюдайте всегда." },
{ "type": 14, "divider": true, "spacing": 2 },
{
"type": 10,
"content": "**1. Уважайте участников.** Никаких оскорблений, травли и переходов на личности.\n**2. Только SFW-контент.** Аватары и ники тоже.\n**3. Без спама и саморекламы** вне <#PROMO_CHANNEL_ID>."
},
{ "type": 14, "divider": true, "spacing": 1 },
{
"type": 10,
"content": "**4. Пишите в подходящий канал.** Сначала прочитайте описание.\n**5. Без доксинга.** Личные данные не публикуем.\n**6. Правила Discord действуют везде.**"
},
{ "type": 14, "divider": true, "spacing": 2 },
{ "type": 10, "content": "*Предупреждение → мут → бан. Обновлено <t:1789646400:D>.*" },
{
"type": 1,
"components": [
{
"type": 2,
"style": 5,
"label": "Полные правила",
"url": "https://example.com/policies"
},
{
"type": 2,
"style": 5,
"label": "Правила Discord",
"url": "https://discord.com/guidelines"
}
]
}
]
}
],
"allowed_mentions": { "parse": [] }
}
Текстовые блоки понимают ту же разметку, что и обычные сообщения, поэтому ## рендерится как настоящий заголовок, а <t:1789646400:D> показывает дату в часовом поясе читателя (подставьте свой Unix-timestamp). Остальные типы компонентов разобраны в гайде по Components V2.
Шаблон 5: правила плюс блок верификации
Многие серверы закрывают остальные каналы до тех пор, пока участник не прочитает правила и не поставит реакцию или не нажмёт кнопку. Вебхук может опубликовать такое сообщение, но выдать роль не может: вебхуки только отправляют. За сообщением должен следить кто-то ещё — бот реакций-ролей, который у вас уже стоит, или интерактивная кнопка через бот-интеграцию discord-webhook.com. Payload в обоих случаях одинаковый:
{
"embeds": [
{
"title": "📜 Правила сервера",
"description": "**1. Уважайте участников.** Никаких оскорблений, травли и переходов на личности.\n**2. Только SFW-контент.** Аватары и ники тоже.\n**3. Без спама и саморекламы** вне <#PROMO_CHANNEL_ID>.\n**4. Правила Discord действуют везде.**\n\nПредупреждение → мут → бан.",
"color": 5793266
},
{
"title": "✅ Пройдите верификацию",
"description": "Поставьте реакцию ✅ на это сообщение, чтобы подтвердить, что прочитали правила. После верификации вы получите роль <@&MEMBER_ROLE_ID>, откроются <#GENERAL_CHANNEL_ID> и остальные каналы.\n\nЧерез минуту ничего не произошло? Напишите в <#SUPPORT_CHANNEL_ID>.",
"color": 5763719,
"footer": { "text": "Обновлено" },
"timestamp": "2026-09-17T12:00:00.000Z"
}
],
"allowed_mentions": { "parse": [] }
}
<@&MEMBER_ROLE_ID> отобразится как упоминание роли; внутри embed оно никого не пингует, а пустой allowed_mentions сохранит это, если перенести его в content. Этот шаблон отправляйте с ?wait=true (следующий раздел): боту реакций-ролей нужен ID сообщения, за которым следить. Если вместо реакции хочется кнопку, смотрите статью про интерактивные кнопки с действиями.
Отправка, закрепление и обновление через PATCH
Любой шаблон — это обычный POST. Добавьте ?wait=true, чтобы Discord вернул созданное сообщение вместо пустого 204: его id понадобится для редактирования и для бота реакций-ролей из шаблона 5:
WEBHOOK="https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN"
curl -s -H "Content-Type: application/json" \
-d @rules.json \
"$WEBHOOK?wait=true" | jq -r '.id'
Для шаблона на Components V2 URL превращается в "$WEBHOOK?wait=true&with_components=true".
Закрепление. Эндпоинты вебхука не умеют закреплять. Закрепите сообщение один раз вручную (меню сообщения → «Закрепить») или ботом с правом «Управлять сообщениями». PATCH сохраняет ID сообщения, так что закреп переживёт любые правки.
Обновление. Отредактируйте JSON, обновите timestamp и отправьте ту же структуру методом PATCH на URL сообщения:
MESSAGE_ID="123456789012345678"
curl -s -X PATCH -H "Content-Type: application/json" \
-d @rules.json \
"$WEBHOOK/messages/$MESSAGE_ID"
PATCH заменяет переданные поля целиком: embeds заменяет все embed сразу, поэтому всегда отправляйте полный payload, а не только изменённый блок. Для сообщения на Components V2 добавьте ?with_components=true и к PATCH-запросу. ID сообщения сохраните где-нибудь под рукой; GET и DELETE на том же URL описаны в гайде по редактированию и удалению.
Частые ошибки
400 с embeds.0.description в теле ответа. Описание превысило 4096 символов. Вынесите секцию во второй embed (шаблон 2) или в поля (шаблон 3). На всё сообщение действует общий лимит 6000 символов по всем embed; длинный свод правил лучше положить в документ по ссылке.
400 на шаблоне Components V2. Либо нет flags: 32768, либо в URL нет ?with_components=true, либо в теле остались content/embeds. Должны выполняться все три условия.
Упоминание роли пингует всех её участников. Пингует ли <@&ROLE_ID>, решает allowed_mentions. Упоминания внутри embed никого не уведомляют, а то же упоминание в content или в текстовом блоке Components V2 — уведомляет. В шаблонах стоит "parse": []; оставьте его и в JSON для PATCH: Discord заново разбирает упоминания при каждом редактировании.
В закрепе всё ещё старый текст. Вы отправили новое сообщение POST-ом вместо PATCH старого. Удалите дубль (DELETE на его URL) и обновите оригинал.
{"message":"Unknown Webhook","code":10015}. Вебхук удалён или URL неверный. Создайте его заново в «Настройки сервера → Интеграции → Вебхуки» и опубликуйте правила ещё раз: новый вебхук не может редактировать старое сообщение.
FAQ
Может ли вебхук выдать роль за реакцию на правила?
Нет. Вебхук умеет только отправлять, редактировать и удалять сообщения. Выдача роли по реакции или кнопке требует бота: либо бота реакций-ролей, которому указан ID сообщения, либо интерактивной кнопки через бот-интеграцию, например на discord-webhook.com.
Как обновить правила, не публикуя их заново?
Отправьте полный JSON ещё раз запросом PATCH https://discord.com/api/webhooks/{id}/{token}/messages/{message_id}. Сообщение сохранит ID, закреп и ссылку. ID получите, отправив первый POST с ?wait=true.
Можно ли пингануть @everyone сообщением с правилами?
Да, если это разрешает allowed_mentions, например { "parse": ["everyone"] } и @everyone в content. Для сообщения, которое вы будете редактировать, оставьте "parse": [] и в JSON для PATCH, чтобы правила никогда не пинганули весь сервер случайно.
Какая максимальная длина embed с правилами?
4096 символов на описание, 1024 на значение поля, 25 полей, 10 embed и 6000 символов суммарно по всем embed одного сообщения. Всё, что длиннее, — в документ по ссылке.
Что дальше
Выберите шаблон под размер сервера, подставьте ID вместо заглушек и отправьте с ?wait=true, чтобы потом обновлять через PATCH. Подправить формулировки и цвета с живым предпросмотром можно в конструкторе Discord Webhook: вставьте любой payload и экспортируйте обратно в JSON или код.
- Шаблоны приветственных сообщений Discord — шесть приветственных embed в пару к правилам
- Цвета embed в Discord — десятичные значения всех цветов из статьи
- Гайд по конструктору embed — все поля embed с пояснениями