Wiki / Core Features / Дни рождения

Дни рождения

Обновлено Maxime_48 · 1 час назад · Просмотры: 121

Языки: English Français Deutsch Español Português (Brasil) Italiano Nederlands Polski Türkçe Русский 日本語 한국어 中文

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

Страница настроек Birthdays: слева канал объявлений, роль и параметры сообщения, справа список сохранённых дней рождения


🎂 Как это работает

  1. Включите Дни рождения и откройте страницу Дни рождения.
  2. Выберите канал объявлений, час и часовой пояс. Пока канал не задан, ничего не объявляется.
  3. Составьте сообщение. Скажите участникам выполнить /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)?
  • Не прошёл ли уже час объявления на сегодня? Окно всего два часа шириной.
  • Не был ли участник уже объявлен в этом году? Проверьте значок на странице «Дни рождения».
  • Не вошёл ли он на сервер позже, чем «Минимум дней на сервере»?
  • Зарегистрирован ли день рождения действительно на этом сервере? У участника может быть дата, сохранённая в другом месте, без согласия здесь.