Участники один раз регистрируют свой день рождения командой /birthday set, а бот поздравляет их в этот день в выбранном вами канале, при желании выдавая временную роль именинника.

🎂 Как это работает
- Включите Дни рождения и откройте страницу Дни рождения.
- Выберите канал объявлений, час и часовой пояс. Пока канал не задан, ничего не объявляется.
- Составьте сообщение. Скажите участникам выполнить
/birthday set.
В этот день бот публикует ваше объявление, выдаёт роль именинника, если она настроена, и забирает её по истечении срока.
🗓️ Один день рождения, все серверы
Если задан текстовый префикс, те же действия работают из обычного сообщения, например !birthday set 14 July. См. Текстовые команды и префикс.
Дата участника хранится один раз для его аккаунта Discord, а не отдельно для каждого сервера. Тому, кто уже зарегистрировал день рождения на другом сервере с YAWBDB, ничего вводить не нужно: команда /birthday set здесь просто включает его.
Это означает:
- Не нужно заново вводить одну и ту же дату на пяти разных серверах.
/birthday removeотключает объявления только на этом сервере. Дата остаётся сохранённой для остальных./birthday forgetудаляет запись везде, на каждом сервере. Это работает всегда, даже если на сервере функция выключена.
Никто не видит день рождения участника на сервере, на котором тот не давал согласия.
⌨️ Команды участников
| Команда | Что делает |
|---|---|
/birthday set |
Сохраняет дату. День, месяц и необязательный год рождения. |
/birthday get |
Показывает ваш день рождения или день рождения другого участника, если он согласился на этом сервере. |
/birthday next |
Показывает ближайшие дни рождения на этом сервере. |
/birthday remove |
Прекращает объявлять ваш день рождения на этом сервере. |
/birthday forget |
Полностью удаляет ваш день рождения из YAWBDB. |
Каждый ответ приватный: его видит только тот, кто выполнил команду. Объявление в сам день - единственное, что бывает публичным.
Год рождения необязателен и используется только для показа возраста. Участнику, который его не указал, возраст просто никогда не показывается.
💻 Настройка из панели
Участник также может задать или удалить свой день рождения в профиле панели, вообще не обращаясь к Discord, при условии что его аккаунт Discord привязан к аккаунту в панели, поскольку именно по этой привязке панель понимает, какой день рождения его.
Действуют те же правила, что и для /birthday set: день, месяц и необязательный год, а также та же блокировка на 30 дней после изменения. Это общая для аккаунта дата, не привязанная к какому-либо одному серверу: точно так же, как запись, которую создаёт /birthday set, только вместо слэш-команды вы получаете экран.
⚙️ Настройки
| Настройка | Что делает |
|---|---|
| Канал объявлений | Где публикуется сообщение. Обязательно. |
| Объявлять в / Часовой пояс | Местный час, в который выходят дни рождения дня. Окно остаётся открытым в течение двух часов после этого времени. |
| Упоминаемая роль | Упоминается вместе с объявлением. Необязательно. |
| Роль именинника | Выдаётся в этот день и снимается автоматически. Необязательно. |
| Длительность роли | Сколько часов хранится роль именинника: от 1 до 168 (неделя). |
| Минимум дней на сервере | Участник, вошедший на сервер позже этого срока, пропускается на этот год. |
| Группировать от | Если в один день больше такого числа дней рождения, они выходят одним сообщением вместо нескольких. |
| Показывать возраст | Показывает возраст, только для участников, добровольно указавших год рождения. |
| Поздравлять также в личных сообщениях | Отправляет объявленному участнику то же сообщение в личные сообщения, без упоминания роли. Участники, закрывшие личные сообщения, просто видят пост в канале, как и все остальные. |
Зачем нужно двухчасовое окно? Объявления дня выходят только между выбранным вами часом и временем двумя часами позже. Вне этого окна ничего не публикуется, поэтому участник, который вечером указал «сегодня» в качестве даты, дождётся следующего года, а не вызовет мгновенное упоминание.
✍️ Составление объявления
Сообщение составляется в том же редакторе, что и конструктор эмбедов: строка обычного текста сверху, полноценный эмбед ниже, предпросмотр в реальном времени справа.
Эти подстановки работают в тексте и в любом месте эмбеда: заголовке, описании, полях, нижнем колонтитуле:
| Подстановка | Превращается в |
|---|---|
{mention} |
Упоминание участника или всех сразу в сгруппированном сообщении |
{user} |
То же, что {mention} |
{age} |
Возраст, который исполняется. Пусто в сгруппированном сообщении, а также если год рождения не указан или выключено «Показывать возраст» |
{count} |
Сколько участников поздравляют |
Если и сообщение, и эмбед оставить пустыми, бот вместо молчания в чей-то день рождения использует простое «🎂 Happy birthday @member!».
Объявления никогда не упоминают @everyone или @here.
🛡️ Никто не может злоупотреблять вниманием
Объявления о днях рождения - это упоминание в публичном канале, а значит, ими хочется злоупотреблять. Этому мешает несколько вещей:
- Раз в год на сервер. Сколько бы раз участник ни переписывал дату, его объявят не более одного раза за календарный год на данном сервере. Отключение и повторное включение этого не сбрасывает.
- Команда никогда ничего не объявляет. Публикует только плановая проверка, поэтому указание сегодняшней даты не вызывает сообщения.
- Изменения ограничены по частоте. Первое сохранение бесплатно: люди опечатываются. Изменение даты после этого блокирует её на 30 дней.
- Минимальное время на сервере. Задайте его, чтобы совсем новые аккаунты не могли зайти, назвать сегодняшнюю дату и получить упоминание.
- Двухчасовое окно, описанное выше.
Если участник действительно опечатался в дате и теперь заблокирован, персонал может снять блокировку на странице Дни рождения.
🧑💼 Сторона панели
Страница «Дни рождения» перечисляет всех, кто дал согласие, в порядке близости их дней рождения, со значком для участников, которые заблокированы или уже были объявлены в этом году.
- Разблокировать - снимает 30-дневное ограничение на изменение для участника, допустившего настоящую ошибку.
- Удалить - удаляет день рождения этого участника только на этом сервере. Его запись на других серверах не затрагивается.
🏆 Дни рождения и Leveling
Если включён Leveling, в Reward Graph появляется триггер «В день рождения». Он срабатывает раз в год для каждого участника, сразу после выхода его объявления.
Подключите к нему любое действие: бонусный XP, личный множитель XP на день, назначение роли, личное сообщение. Как и любой межфункциональный триггер, этот узел остаётся заблокированным в палитре, пока не включены Дни рождения.
✅ Разрешения
Для Дней рождения нужны базовые разрешения бота (View Channels, Send Messages, Embed Links) в канале объявлений, а также Manage Roles, если вы используете роль именинника. См. Разрешения функций.
Роль бота должна находиться выше роли именинника в Server Settings → Roles, иначе Discord откажется её назначить.
Чтобы упоминать роль, либо сделайте эту роль упоминаемой, либо дайте боту разрешение Mention @everyone, @here, and All Roles.
💡 Рекомендации
- Выберите час, когда ваш сервер действительно бодрствует: объявление в 03:00 пропадает впустую.
- На публичных серверах оставляйте «Минимум дней на сервере» не меньше недели.
- Держите «Показывать возраст» выключенным, если ваше сообщество действительно этого не хочет: многие делятся датой, но не годом.
- Используйте порог группировки: на большом сервере пять отдельных упоминаний подряд выглядят как спам, а одно сообщение с пятью упоминаниями - как праздник.
❓ Ничего не объявилось
- Задан ли канал, и может ли бот публиковать там и вставлять ссылки в эмбеды (Embed Links)?
- Не прошёл ли уже час объявления на сегодня? Окно всего два часа шириной.
- Не был ли участник уже объявлен в этом году? Проверьте значок на странице «Дни рождения».
- Не вошёл ли он на сервер позже, чем «Минимум дней на сервере»?
- Зарегистрирован ли день рождения действительно на этом сервере? У участника может быть дата, сохранённая в другом месте, без согласия здесь.