Google Forms в Discord: как настроить упоминание ролей при выборе сервера

    Интеграция Google Forms с Discord через Webhook - мощный инструмент для автоматизации уведомлений. Часто требуется, чтобы при выборе определённого сервера (например, "VP") в форме автоматически упоминалась соответствующая роль в Discord. Разберём, как доработать существующий скрипт Google Apps Script для этой задачи.

    Проблема: условное упоминание ролей

    Исходный код отправляет фиксированный mention (mention = "<@&1316356148944703550>"). Это значит, что всегда упоминается одна и та же роль, независимо от ответа пользователя. Чтобы упоминать разные роли в зависимости от выбора (например, "VP" или "Admin"), нужно динамически формировать mention на основе ответа.

    Решение: динамическая смена роли через условие

    Добавьте в скрипт проверку ответа на вопрос о сервере. Например, если вопрос называется "Выберите сервер", а ответ - "VP", то mention меняется на ID роли VP. Вот пример доработки:

    // После получения ответов
    for (var i = 0; i < response.length; i++) {
      const question = response[i].getItem().getTitle();
      const answer = response[i].getResponse();
      if (question === "Выберите сервер") {
        if (answer === "VP") {
          mention = "<@&РОЛЬ_VP_ID>";
        } else if (answer === "Другой сервер") {
          mention = "<@&РОЛЬ_ДРУГОЙ_ID>";
        }
      }
    }

    Замените РОЛЬ_VP_ID и РОЛЬ_ДРУГОЙ_ID на реальные ID ролей из вашего Discord-сервера. ID можно получить, включив режим разработчика в Discord и кликнув правой кнопкой мыши по роли.

    Полный алгоритм настройки

    1. Подготовка Google Forms

    • Создайте вопрос с типом "Выбор из списка" (например, "Выберите сервер").
    • Добавьте варианты: "VP", "Admin", "Moderator" и т.д.
    • Убедитесь, что форма привязана к Google Таблице (вкладка "Ответы").

    2. Настройка скрипта Google Apps Script

    • Откройте редактор скриптов (Расширения → Apps Script).
    • Вставьте исходный код, затем добавьте условие для динамического mention.
    • Укажите правильные Webhook URL в массиве webhooks.
    • Установите триггер на отправку формы (Редактор скриптов → Триггеры → Добавить триггер: функция plainText или embedText, событие - при отправке формы).

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

    Заполните форму с разными вариантами сервера. Проверьте, что в Discord приходит сообщение с упоминанием соответствующей роли. Если роль не упоминается, проверьте ID роли и права бота (Webhook должен иметь право упоминать роли).

    Частые ошибки и их решение

    Ошибка: роль не упоминается

    Убедитесь, что Webhook имеет разрешение "Упоминать @everyone, @here и все роли" в настройках канала Discord. Также проверьте, что ID роли указан без пробелов.

    Ошибка: скрипт не срабатывает

    Проверьте триггеры в Apps Script. Если триггер не настроен, скрипт не будет запускаться автоматически. Также убедитесь, что Webhook URL валиден.

    Заключение

    Динамическое упоминание ролей в Discord на основе ответов Google Forms - задача на 10 минут. Главное - правильно считать ответ пользователя и подставить нужный ID роли. Используйте предложенный код как шаблон и адаптируйте под свои нужды.

    Часто задаваемые вопросы