Что даёт интеграция

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

Полезные сценарии:

  • начало игрового вечера;
  • технические работы;
  • восстановление после сбоя;
  • смена режима;
  • жалоба;
  • новый рекорд;
  • заполнение сервера;
  • статус обновления.

Не нужно отправлять в Discord каждое убийство и каждое подключение.

Разделите каналы

Создайте отдельные каналы:

  • объявления;
  • технический статус;
  • игровые события;
  • жалобы;
  • администрация;
  • журнал интеграций.

Игроки не должны видеть внутренние ошибки, пароли или административные данные.

Защита webhook

Webhook позволяет отправлять сообщения без полноценного входа в Discord. Ссылка webhook является секретом.

Не размещайте её:

  • в публичной конфигурации;
  • в Git;
  • в сообщении игрокам;
  • в архиве товара;
  • на скриншоте;
  • в открытом логе.

При утечке удалите старый webhook и создайте новый.

Ограничение частоты

Плагин должен объединять повторяющиеся события. Если сервер несколько раз перезапускается, Discord не должен получать сотни одинаковых сообщений.

Используйте:

  • задержку;
  • группировку;
  • минимальный интервал;
  • отдельные уровни важности;
  • отключение второстепенных событий.

Статус сервера

В сообщении можно показывать:

  • название;
  • IP:PORT;
  • текущую карту;
  • онлайн;
  • количество слотов;
  • ссылку на карточку;
  • время последнего обновления.

Для публичной ссылки можно использовать страницу сервера на cs2-monitor.com.

Команды из Discord

Удалённое выполнение административных команд из Discord создаёт повышенный риск.

Если такая функция действительно нужна:

  • ограничьте роли;
  • используйте список разрешённых команд;
  • ведите журнал;
  • запретите произвольный RCON;
  • добавьте подтверждение опасных действий;
  • защищайте токен бота.

Жалобы

Discord-форма может принимать жалобы, но чувствительные данные не должны публиковаться в общем канале.

Лучше создавать приватный тикет с номером, статусом и ответственным администратором.

Отказ Discord

Игровой сервер не должен зависеть от доступности Discord. Если API временно не отвечает, плагин записывает ошибку и продолжает работу.

Не выполняйте синхронный сетевой запрос в критическом событии игрового процесса.

Тестирование

Проверьте:

  • неверный webhook;
  • отсутствие интернета;
  • превышение лимита;
  • рестарт сервера;
  • смену карты;
  • специальные символы в названии;
  • большой онлайн;
  • повторяющиеся события.

Итог

Discord полезен для сообщества и уведомлений, если события разделены по каналам и ограничены по частоте.

Защищайте webhook и токен, не разрешайте произвольные административные команды и не связывайте стабильность игры с доступностью внешнего API.