Что даёт интеграция
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.