← На главную

Документация DSL v3.0

DSL (Domain-Specific Language) v3.0 - текстовый формат описания структуры Discord-сервера. Бот DS Motier читает .txt шаблон и строит сервер автоматически: категории, каналы, роли, форумы, тикеты, временные голосовые.

Основные возможности

  • Категории, текстовые каналы, форумы, стейджи, счётчики
  • Роли с правами, цветом, отображением
  • Тикет-система и временные голосовые комнаты
  • Выдача ролей по кнопкам и реакциям
  • Приветствия, автосообщения, embed
  • Переменные $имя
  • Подключение файлов через !INCLUDE
  • Селекторы доступа @allow / @deny

Блоки

CATEGORY

Категория

Группирует каналы. Внутри можно вкладывать CHANNEL, FORUM, VOICE, STAGE, COUNTER, TEMP_VOICE.

CATEGORY "Информация" {
  CHANNEL #правила
  CHANNEL #новости
}

CATEGORY "Админ" @admin {
  CHANNEL #админ-чат
}

Селектор @admin после имени ограничивает видимость категории для роли.

CHANNEL

Текстовый канал

CHANNEL #общий
CHANNEL #правила { @slowmode 5 }
CHANNEL #админ { @deny @everyone @allow admin }

Атрибуты: @slowmode (секунды), селекторы @allow/@deny.

FORUM

Форум

Канал-форум со встроенными темами. Внутри обязателен хотя бы один THREAD.

FORUM "Поддержка" {
  THREAD баг-репорт
  THREAD вопрос
  @slowmode 30
}
THREAD

Ветка форума

THREAD баг-репорт
THREAD "тема с пробелами"

Одно слово - без кавычек, несколько слов - в двойных кавычках.

STAGE

Стейдж (эфир)

Голосовой канал для мероприятий.

STAGE "Текущий эфир"
STAGE "LIVE" { @topic "Обсуждаем обновление" }
COUNTER

Счётчик участников

Голосовой канал, в названии которого отображается число участников сервера.

COUNTER "👥 Участники: {count}"
COUNTER "🎧 В голосе: {count}"

{count} заменяется на текущее количество участников.

ROLE

Роль

ROLE "Модератор" {
  @color #5865F2
  @permissions kick_members, ban_members
  @display separate
  @mentionable true
}

ROLE "Новичок" { @color #808080 }

Атрибуты:

  • @color - HEX-цвет
  • @permissions - список прав через запятую
  • @display - separate / none
  • @mentionable - true / false
TICKET

Тикет-система

Создаёт канал с кнопкой открытия тикета. При нажатии создаётся приватный канал для пользователя.

TICKET "Связаться с нами" {
  @category "Поддержка"
  @button 📩 Создать тикет
  @description "Мы ответим в ближайшее время"
}
TEMP_VOICE

Временные голосовые

Пользователь нажимает кнопку - создаётся временный голосовой канал. Удаляется, когда все выходят.

TEMP_VOICE "Создать комнату" {
  @category "Голосовые"
  @button 🔈 Создать
  @channel_prefix "Комната"
  @user_limit 10
}
EMBED

Embed-сообщение

Отправляет красивое embed-сообщение в указанный канал при сборке.

EMBED #правила {
  @title "Правила сервера"
  @description "1. Уважайте друг друга\n2. Не флудите"
  @color #5865F2
  @footer "DS Motier"
}
BUTTON_ROLE

Роли по кнопкам

Выдача ролей по нажатию кнопки.

BUTTON_ROLE "Роли" {
  @channel #роли
  @description "Выберите игры"
  ROLE "CS:GO" 🎮
  ROLE "Valorant" 🔫
}
REACTION_ROLE

Роли по реакциям

Выдача ролей по реакции на сообщение.

REACTION_ROLE "Уведомления" {
  @channel #реакции
  @description "Нажми на реакцию"
  REACTION "📢" анонсы
  REACTION "🎮" ивенты
}
AUTO_MESSAGE

Автосообщение

Автоматическая отправка сообщения в канал при сборке.

AUTO_MESSAGE #общий {
  @content "Добро пожаловать!"
}

AUTO_MESSAGE #правила {
  @embed "Правила"
  @content "Ознакомьтесь выше"
}
WELCOME

Приветствие

Приветствие новых участников в указанном канале.

WELCOME {
  @channel #общий
  @message "Добро пожаловать, {user}!"
}

{user} заменяется на упоминание нового участника.

!INCLUDE

Подключение файлов

Позволяет разбивать шаблон на несколько файлов.

!INCLUDE "base.txt"
!INCLUDE "roles/moderators.txt"

Переменные

Переменные позволяют переиспользовать значения в шаблоне. Объявляются через $имя = значение.

$color_primary = #5865F2
$color_danger  = #ED4245
$prefix        = "!"
$admin_role    = "Администратор"

CATEGORY "Основное" {
  CHANNEL #общий { @allow $admin_role }
}

ROLE $admin_role { @color $color_primary }

Используются в любом месте шаблона кроме строковых литералов.

Селекторы доступа

Управление видимостью каналов и категорий.

CHANNEL #админ-чат {
  @allow admin
  @deny @everyone
}

CATEGORY "VIP" @vip {
  CHANNEL #vip-чат
}
  • @allow роль - разрешить доступ
  • @deny роль - запретить доступ
  • @everyone - ссылка на роль @everyone
  • Селектор после CATEGORY применяется ко всем вложенным каналам

Примеры

Минимальный шаблон

CATEGORY "Основное" {
  CHANNEL #общий
  CHANNEL #оффтоп
}

ROLE "Модератор" { @color #5865F2 }

Полный шаблон

@name "Мой сервер"

$color_main = #5865F2
$color_success = #57F287

!INCLUDE "base.txt"

CATEGORY "Информация" {
  CHANNEL #правила { @slowmode 5 }
  CHANNEL #новости
  CHANNEL #объявления { @allow admin }
}

CATEGORY "Общение" {
  CHANNEL #общий
  CHANNEL #оффтоп
  FORUM "Поддержка" {
    THREAD баг-репорт
    THREAD вопрос
    THREAD предложение
  }
}

ROLE "Модератор" color=$color_main {
  @permissions kick_members, ban_members
  @display separate
}

TICKET "Связаться с нами" {
  @category "Поддержка"
  @button 📩 Создать тикет
}

TEMP_VOICE "Создать комнату" {
  @category "Голосовые"
  @button 🔈 Создать
}

WELCOME {
  @channel #общий
  @message "Добро пожаловать, {user}!"
}
← На главную