Гайд · Сценарии

Автоматизация Discord без кода: сценарии и Google Таблицы

Настраиваем автоматизацию Дискорда без программирования: новые участники в Google Таблицу, автоответ по ключевым словам и публикации по расписанию.

СценарииНапоминанияПриветствия

На этой странице

Обычно «автоматизация» сервера в Дискорде — это куча узких ботов, у каждого своя панель. Сценарии позволяют сделать автоматизацию Discord без кода в одном визуальном редакторе: выбираете триггер (участник зашёл, пришло сообщение, наступило время по расписанию), добавляете логику (Если, Переключатель, Фильтр, Цикл) и цепочку действий (отправить сообщение, выдать роль, записать в Google Таблицу, обратиться к веб-API). Ниже — из чего состоят сценарии и три рабочих примера, которые можно повторить.

Что понадобится

  • BotGG на сервере (https://discord.com/oauth2/authorize?client_id=1553367772451446804&scope=bot%20applications.commands&permissions=282969912110295) и право Управлять сервером.
  • Веб-консоль https://console.botgg.app → ваш сервер → Сценарии. Слеш-команд у Сценариев нет — всё собирается в консоли.
  • Для примера с Google Таблицами — аккаунт Google и пара минут в Google Cloud. Узлы Google Таблицы и MySQL, а также триггер «Вебхук» доступны в Pro. Discord-триггеры, логика, действия в Discord, расписание и HTTP-запросы работают на бесплатном тарифе (5 сценариев).

Из чего состоит сценарий

В каждом сценарии ровно один триггер и сколько угодно узлов, соединённых линиями на холсте.

ГруппаУзлы
ТриггерыУчастник зашёл, Участник ушёл, Новое сообщение, Добавлена реакция, Изменились роли, Голосовая активность, Нажата кнопка, Расписание, Вебхук, Ручной запуск
ЛогикаЕсли (да/нет), Переключатель (несколько веток + «Иначе»), Фильтр (стоп, если условие ложно), Цикл, Пауза, Стоп
ДанныеЗадать поля, Дата и время, Текст (шаблоны, регулярки), JSON
Действия в DiscordОтправить сообщение (конструктор эмбедов и кнопки), Написать в ЛС, Ответить на сообщение, Поставить реакцию, Выдать/Снять роль, Тайм-аут участнику, Выгнать участника, Забанить, Создать ветку, Изменить канал, Получить участника
ИнтеграцииHTTP-запрос, Google Таблицы, MySQL

Выражения: подстановка данных через {{ }}

В любое текстовое поле можно вставить выражение в двойных фигурных скобках. Обычно их не нужно печатать — их вставляет выбор переменных в панели узла:

  • {{ $trigger.user.username }} — данные триггера (здесь: кто зашёл).
  • {{ $trigger.message.content | lower }} — текст сообщения в нижнем регистре через фильтр.
  • {{ $node["Google Таблицы"].updatedRows }} — результат предыдущего узла по его имени.
  • {{ $now | date('DD.MM.YYYY HH:mm', 'Europe/Moscow') }} — текущее время в нужном часовом поясе (без пояса — UTC).
  • {{ $guild.name }}, {{ $vars.counter }}, {{ $json.field }} — сервер, переменные сценария, текущий элемент.

Фильтры объединяются через |: upper, lower, trim, default('нет'), replace(a,b), split, join, round(2), date(формат) и другие. Кода здесь нет: выражения только читают данные, а сравнения делаются в узлах Если, Фильтр и Переключатель.

Пример 1. Новые участники — в Google Таблицу

Список участников с датами захода, который можно сортировать, фильтровать и показать команде.

1. Сервисный аккаунт в Google Cloud. В консоли Google Cloud создайте (или выберите) проект, включите Google Sheets API, затем IAM и администрирование → Сервисные аккаунты → создайте аккаунт. Откройте его → Ключи → Добавить ключ → JSON. Скачается файл с JSON-ключом.

2. Учётные данные в BotGG. В Сценариях откройте Учётные данные → Добавить, выберите сервисный аккаунт Google и вставьте JSON-ключ целиком. Нажмите Сохранить и проверить. Ключ хранится в зашифрованном виде и больше не показывается в браузере.

3. Доступ к таблице. Создайте Google Таблицу и откройте к ней доступ (Редактор) для e-mail сервисного аккаунта — это значение client_email из JSON, оканчивается на iam.gserviceaccount.com. Именно этот шаг чаще всего забывают.

4. Соберите сценарий. Создайте новый сценарий (или начните с шаблона Сообщения в Google Таблицы и замените триггер):

  1. Триггер: Участник зашёл, «Игнорировать ботов» включено.
  2. Действие: Google Таблицы → операция Добавить строку, ссылка на таблицу, лист Лист1, режим значений По столбцам.
  3. Сопоставьте столбцы (заголовок → значение): - Ник → {{ $trigger.user.username }} - ID → {{ $trigger.user.id }} - Зашёл → {{ $now | date('DD.MM.YYYY HH:mm', 'Europe/Moscow') }} - Аккаунт создан → {{ $trigger.user.createdAt | date('DD.MM.YYYY') }}

Названия столбцов сравниваются с первой строкой без учёта регистра; если лист пустой, первая запись сама создаст строку заголовков. Нажмите Тест, проверьте новую строку, затем включите сценарий и сохраните.

Хотите отмечать и ушедших? Сделайте копию сценария, поставьте триггер Участник ушёл и операцию Обновить строки с поиском по столбцу ID, чтобы заполнять столбец «Ушёл», а не добавлять новую строку.

Пример 2. Автоответ по ключевому слову

Отвечайте на один и тот же вопрос в сотый раз, не набирая его.

  1. Триггер: Новое сообщение, канал #помощь, «Игнорировать ботов» включено, совпадение содержит, шаблон айпи сервера.
  2. Действие: Ответить на сообщение — например, Привет, {{ $trigger.user.displayName }}! IP: play.example.net, правила — в #правила.

Нужно несколько ответов? Оставьте триггер на любое сообщение и добавьте узел Переключатель со значением {{ $trigger.message.content | lower }}. Добавьте ветки содержит айпи, содержит заявка, содержит правила, у каждой свой узел Ответить на сообщение, а ветку Иначе оставьте пустой — остальные сообщения будут проигнорированы. Чтобы не отвечать модераторам, поставьте перед Переключателем Фильтр: {{ $trigger.member.roles }} не содержит ID роли модератора.

Пример 3. Сообщение по расписанию раз в неделю

  1. Триггер: Расписание → тип Cron-выражение: 0 18 * * 5 (по пятницам в 18:00). Расписание работает в часовом поясе сервера из настроек консоли, а редактор показывает ближайшие запуски — удобно проверить.
  2. По желанию: HTTP-запрос (GET) к публичному API — например, к статусу вашего игрового сервера — и {{ $node["HTTP-запрос"].body.players }} в тексте сообщения.
  3. Действие: Отправить сообщение в #объявления через конструктор эмбеда: заголовок Рейд на выходных, описание Запись на рейд {{ $now | date('DD.MM') }} открыта. — и кнопка, если нажатие должно запускать другой сценарий через триггер Нажата кнопка.

Для простых напоминаний и регулярных объявлений без логики быстрее Напоминания; Сценарии нужны, когда публикации требуются данные, условия или дальнейшие действия.

Как делать правильно

СоветЗачем
Давайте узлам понятные имена («Запись захода», «Ответ в помощи»)Выражения ссылаются на узлы по имени
Для первого теста отключайте узлы-действия в DiscordТестовый запуск по-настоящему отправляет сообщения и меняет роли
Включайте «Продолжать при ошибке» или повторы для HTTP и ТаблицМедленный API не сломает весь сценарий
Ставьте Фильтр как можно раньшеСценарий останавливается до лишней работы
Смотрите вкладку Запуски после измененийДля каждого запуска видны вход, выход и ошибки каждого узла

Частые проблемы

  • Сценарий не запускается. Включены должны быть и сам сценарий, и функция Сценарии. Сохранённые изменения доходят до Discord-триггеров примерно за минуту.
  • Ключевые слова не срабатывают. Сравнение текста зависит от доступа бота к содержимому сообщений (Message Content); без него текст приходит пустым.
  • Google Таблицы отвечают 403 или «не найдено». Таблица не открыта для e-mail сервисного аккаунта или в проекте Google Cloud не включён Google Sheets API.
  • Время съезжает на несколько часов. Фильтр date форматирует в UTC, если не указать пояс вторым аргументом: date('HH:mm', 'Europe/Moscow').
  • Не выдаётся роль. Роль BotGG должна быть выше выдаваемой роли, а действия работают только с каналами, ролями и участниками этого сервера.
  • Сценарий реагирует на свои же сообщения? Нет — собственные сообщения и реакции BotGG никогда не запускают сценарии, так что случайного бесконечного цикла не будет.

Когда сценарии заработают, загляните в Приветствия и гайд по верификации — это готовые функции, которые не нужно собирать заново, а всё остальное есть в списке команд.

FAQ

Сценарии — это как Zapier или n8n для Дискорда?

По идее да: визуальный холст с триггерами, логикой и действиями. Но он встроен в бота для Discord, поэтому события и действия в Discord работают без вебхуков и API-ключей.

Нужно ли уметь программировать?

Нет. Узлы настраиваются через формы и выбор из списков, выражения вставляются из списка переменных. Узла для кода нет вовсе.

Можно ли писать в Google Таблицы на бесплатном тарифе?

Узлы Google Таблицы и MySQL и триггер «Вебхук» — функции Pro. Действия в Discord, логика, расписание и HTTP-запросы бесплатны. Подробнее на странице тарифов.

Можно ли отправлять данные с сайта или формы в Discord?

Да, через триггер Вебхук (Pro): у каждого сценария свой секретный URL, а всё, что вы отправите на него POST-запросом, доступно как {{ $trigger.body }}.

Готовы прокачать свой сервер?

Добавьте BotGG бесплатно и включайте нужные функции в веб-консоли.