Гайд · Сценарии
Автоматизация 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 Таблицы и замените триггер):
- Триггер: Участник зашёл, «Игнорировать ботов» включено.
- Действие: Google Таблицы → операция Добавить строку, ссылка на таблицу, лист
Лист1, режим значений По столбцам. - Сопоставьте столбцы (заголовок → значение): -
Ник→{{ $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. Автоответ по ключевому слову
Отвечайте на один и тот же вопрос в сотый раз, не набирая его.
- Триггер: Новое сообщение, канал
#помощь, «Игнорировать ботов» включено, совпадение содержит, шаблонайпи сервера. - Действие: Ответить на сообщение — например,
Привет, {{ $trigger.user.displayName }}! IP: play.example.net, правила — в #правила.
Нужно несколько ответов? Оставьте триггер на любое сообщение и добавьте узел Переключатель со значением {{ $trigger.message.content | lower }}. Добавьте ветки содержит айпи, содержит заявка, содержит правила, у каждой свой узел Ответить на сообщение, а ветку Иначе оставьте пустой — остальные сообщения будут проигнорированы. Чтобы не отвечать модераторам, поставьте перед Переключателем Фильтр: {{ $trigger.member.roles }} не содержит ID роли модератора.
Пример 3. Сообщение по расписанию раз в неделю
- Триггер: Расписание → тип Cron-выражение:
0 18 * * 5(по пятницам в 18:00). Расписание работает в часовом поясе сервера из настроек консоли, а редактор показывает ближайшие запуски — удобно проверить. - По желанию: HTTP-запрос (GET) к публичному API — например, к статусу вашего игрового сервера — и
{{ $node["HTTP-запрос"].body.players }}в тексте сообщения. - Действие: Отправить сообщение в
#объявлениячерез конструктор эмбеда: заголовокРейд на выходных, описаниеЗапись на рейд {{ $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 }}.