Перейти к основному содержанию
Чтобы получать вебхуки из игры:
  1. Введите /вебхук управление на нашем Discord-сервере.
  2. В появившемся меню укажите URL вашего кастомного вебхука.
  3. Прежде чем нажимать кнопку «Добавить», обязательно нажмите кнопку «Проверить».
    • Система отправит тестовое сообщение. Если оно пришло — значит, всё настроено верно и вебхук можно смело пускать в работу.
  4. После успешной проверки нажмите кнопку «Добавить», чтобы активировать получение данных.
Мы НЕ поддерживаем прямые вебхуки Discord. Система работает исключительно с кастомными вебхуками (вашими собственными обработчиками).
Ваш эндпоинт обязан проверять Ed25519 подписи на каждом запросе. Игра сохранит только те URL, которые пройдут проверку.

Требования

Ваш эндпоинт должен принимать

  • POST запросы с JSON телом.
  • Эти заголовки на каждом подписанном запросе:
    • X-Signature-Ed25519 (hex-кодированная Ed25519 подпись).
    • X-Signature-Timestamp (строка Unix timestamp).

Ваш Эндпоинт Должен:

  1. Прочитать сырые байты тела запроса точно в том виде, в котором они получены (не сериализуйте JSON заново).
  2. Прочитать X-Signature-Timestamp.
  3. Прочитать X-Signature-Ed25519.
  4. Проверить подпись для: message = timestamp + raw_body Где timestamp — это значение заголовка в виде строки, объединённое напрямую с сырыми байтами тела.
  5. Вернуть:
    • 2xx только если подпись верна.
    • 4xx если заголовки отсутствуют, неверны или проверка подписи не удалась.

Публичный Ключ

Используйте этот Ed25519 публичный ключ (base64, SubjectPublicKeyInfo / SPKI):
MCowBQYDK2VwAyEArbRTkyh3A035YUWWZdyF3vck4QN3I7uU8cp7YaxocFE=

Детали Реализации

Входные Данные

  • timestamp: точная строка из X-Signature-Timestamp.
  • sigHex: точная строка из X-Signature-Ed25519 (hex).
  • rawBody: сырые байты тела запроса.

Шаги

  1. Декодируйте sigHex из hex в байты.
  2. Постройте message как:
    • Байты timestamp в UTF-8
    • Сразу следом rawBody
  3. Проверьте Ed25519 подпись с помощью публичного ключа выше.

Распространённые Ошибки

  • Не используйте распарсенный JSON объект для проверки. Используйте только сырые байты тела.
  • Не добавляйте разделители или пробелы между timestamp и телом.
  • Обрабатывайте подпись как hex, а не base64.
  • Убедитесь, что ваш фреймворк не поглощает тело до того, как вы его захватите.

Какие события отправляются?

В настоящее время игра отправляет вебхуки для:
  • Сообщений, начинающихся с ;
    • Это позволяет создавать собственные внутриигровые команды!
  • Emergency Calls (Экстренные Вызовы)
В будущем могут быть добавлены новые события. Обратите внимание: система вебхуков не предназначена для замены опроса HTTP API или WebSocket.