НОВОЕ 📢 Ограниченное стартовое предложение: скидка до 70% на первый месяц для любой игры!Посмотреть тарифы

Как получать уведомления в Discord от сервера через вебхуки

Игровые серверы и панельUpdated Oct 27, 20265 min read

Вебхук отправляет короткое сообщение в канал Discord, когда на сервере что-то происходит: он запускается, останавливается или падает, игрок заходит или выходит, завершается бэкап. Все участники канала видят это, не открывая панель. Вебхук также может отправлять данные на любой другой https-адрес, для ваших собственных инструментов.

Настроить вебхуки сервера может только его владелец. Люди, которых вы пригласили на сервер, эту страницу не видят.

1. Создайте вебхук в Discord

Вам нужно право управлять вебхуками на сервере Discord. Обычно оно есть у владельца и администраторов.

  1. В Discord откройте Настройки сервера и перейдите в раздел Интеграции.
  2. Нажмите Создать вебхук, задайте ему имя и выберите текстовый канал, в который он будет писать, например канал #server-alerts.
  3. Нажмите Копировать URL вебхука.

Discord объясняет эти шаги с картинками в своём руководстве Intro to Webhooks. Относитесь к URL вебхука как к паролю: любой, у кого он есть, может писать в этот канал.

2. Добавьте его на сервер

  1. Откройте свой сервер в панели и нажмите Вебхуки в меню слева.
  2. Нажмите Добавить или Новый вебхук, если на сервере уже есть вебхук.
  3. Укажите Название, если хотите. Оно нужно только вам и подписывает вебхук в списке.
  4. Вставьте адрес в поле URL. Он должен начинаться с https://. Если это вебхук Discord, панель покажет Вебхук Discord распознан.
  5. В разделе Отправлять, когда отметьте нужные события (см. ниже). Событие Сервер упал отмечено сразу, и должно быть отмечено хотя бы одно событие.
  6. Нажмите Создать вебхук.

События

СобытиеКогда оно отправляется
Сервер запущенКогда сервер работает и готов принимать игроков, в том числе после перезапуска.
Сервер остановленОстановка, которую кто-то запросил: вы, участник команды или расписание.
Сервер упалСервер остановился без команды. Сообщение приходит через минуту-две, когда мы уверены, и в нём сказано, поднялся ли сервер сам.
Игрок зашёлС ником игрока, в играх, которые сообщают, кто в сети. Игры, которые сообщают только число, указывают, сколько игроков.
Игрок вышелТо же самое, когда кто-то выходит. Игроки проверяются раз в минуту, пока сервер работает.
Бэкап завершёнУдался ли бэкап и какого он размера.
Установка завершенаПосле первой установки или переустановки.
Перенос завершёнКогда перенос вашего сервера завершён.

У серверов Project Zomboid есть дополнительные события, которые берутся из журнала игры: Игрок погиб, Убийство в PvP, Действие админа, Мод обновлён, Начат отсчёт до перезапуска и Пересылать игровой чат. Чат отправляется только если вы его отметите, и только общий чат: личные сообщения, чат фракции и чат убежища не отправляются никогда.

Что приходит

  • В Discord сообщения приходят от PlayNHost короткими карточками с названием сервера, тем, что произошло, и временем. Discord показывает время в часовом поясе каждого читателя.
  • В сообщениях указано название вашего сервера, но никогда нет его адреса или ID, поэтому их можно отправлять в публичный канал. Чтобы изменить показываемое название, переименуйте сервер. См. Как переименовать сервер и изменить число слотов для игроков.
  • Игрок не может отправить пинг в ваш канал через свой ник. Ник вроде @everyone приходит простым текстом.
  • Любой другой адрес получает события в формате JSON. См. раздел Для ваших собственных инструментов ниже.

Выключите вебхук, измените его или удалите

  • Переключатель в строке вебхука выключает его и снова включает. Пока вебхук выключен, его настройки сохраняются.
  • Откройте меню строки и выберите Изменить, чтобы поменять название, адрес или события, или Удалить, чтобы убрать вебхук. Больше ничего не затрагивается: сервер продолжает работать, а канал просто перестаёт получать сообщения.

Полезно знать

  • На сервере может быть до 10 вебхуков, например по одному на канал.
  • Чтобы канал оставался читаемым, каждый вебхук отправляет не больше 4 сообщений в минуту и 40 в час. Лишние сообщения пропускаются, а не отправляются с опозданием, и в следующем сообщении указано, сколько предыдущих обновлений пропущено.
  • Если вебхук удалён в Discord, панель сама отключает его при следующей попытке отправки, и в строке появляется Выкл. Создайте новый вебхук в Discord, выберите Изменить, вставьте новый адрес и снова включите вебхук.
  • Кнопки проверки нет. Чтобы проверить новый вебхук, отметьте Сервер запущен и перезапустите сервер. Сообщение придёт вскоре после того, как сервер будет готов.
  • Вебхуки нужны для канала, общего для вашей группы. Об уведомлениях только для вас, в панели или по почте, см. Как управлять уведомлениями и настройками.

Для ваших собственных инструментов

Адрес, который не является вебхуком Discord, получает запрос POST с телом в формате JSON:

  • source равен PlayNHost.
  • events содержит список. У каждого события есть type (например, server.crash или player.join), server (название сервера), at (когда это произошло), читаемые title и text, а также объект data с подробностями.
  • skipped показывает, сколько предыдущих сообщений пропущено из-за лимита, описанного выше.

Адрес должен использовать https и указывать на публичный адрес в интернете. Перенаправления не выполняются. Сообщения не подписываются, поэтому держите сам адрес в секрете.

Связанные статьи

ПОСЛЕДНИЕ БЛОГИ