Документация DSL v3.0
DSL (Domain-Specific Language) v3.0 - текстовый формат описания структуры Discord-сервера. Бот DS Motier читает .txt шаблон и строит сервер автоматически: категории, каналы, роли, форумы, тикеты, временные голосовые.
Основные возможности
- Категории, текстовые каналы, форумы, стейджи, счётчики
- Роли с правами, цветом, отображением
- Тикет-система и временные голосовые комнаты
- Выдача ролей по кнопкам и реакциям
- Приветствия, автосообщения, embed
- Переменные
$имя - Подключение файлов через
!INCLUDE - Селекторы доступа
@allow/@deny
Блоки
Категория
Группирует каналы. Внутри можно вкладывать CHANNEL, FORUM, VOICE, STAGE, COUNTER, TEMP_VOICE.
CATEGORY "Информация" {
CHANNEL #правила
CHANNEL #новости
}
CATEGORY "Админ" @admin {
CHANNEL #админ-чат
} Селектор @admin после имени ограничивает видимость категории для роли.
Текстовый канал
CHANNEL #общий
CHANNEL #правила { @slowmode 5 }
CHANNEL #админ { @deny @everyone @allow admin } Атрибуты: @slowmode (секунды), селекторы @allow/@deny.
Форум
Канал-форум со встроенными темами. Внутри обязателен хотя бы один THREAD.
FORUM "Поддержка" {
THREAD баг-репорт
THREAD вопрос
@slowmode 30
} Ветка форума
THREAD баг-репорт
THREAD "тема с пробелами" Одно слово - без кавычек, несколько слов - в двойных кавычках.
Стейдж (эфир)
Голосовой канал для мероприятий.
STAGE "Текущий эфир"
STAGE "LIVE" { @topic "Обсуждаем обновление" } Счётчик участников
Голосовой канал, в названии которого отображается число участников сервера.
COUNTER "👥 Участники: {count}"
COUNTER "🎧 В голосе: {count}" {count} заменяется на текущее количество участников.
Роль
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 "Связаться с нами" {
@category "Поддержка"
@button 📩 Создать тикет
@description "Мы ответим в ближайшее время"
} Временные голосовые
Пользователь нажимает кнопку - создаётся временный голосовой канал. Удаляется, когда все выходят.
TEMP_VOICE "Создать комнату" {
@category "Голосовые"
@button 🔈 Создать
@channel_prefix "Комната"
@user_limit 10
} Embed-сообщение
Отправляет красивое embed-сообщение в указанный канал при сборке.
EMBED #правила {
@title "Правила сервера"
@description "1. Уважайте друг друга\n2. Не флудите"
@color #5865F2
@footer "DS Motier"
} Роли по кнопкам
Выдача ролей по нажатию кнопки.
BUTTON_ROLE "Роли" {
@channel #роли
@description "Выберите игры"
ROLE "CS:GO" 🎮
ROLE "Valorant" 🔫
} Роли по реакциям
Выдача ролей по реакции на сообщение.
REACTION_ROLE "Уведомления" {
@channel #реакции
@description "Нажми на реакцию"
REACTION "📢" анонсы
REACTION "🎮" ивенты
} Автосообщение
Автоматическая отправка сообщения в канал при сборке.
AUTO_MESSAGE #общий {
@content "Добро пожаловать!"
}
AUTO_MESSAGE #правила {
@embed "Правила"
@content "Ознакомьтесь выше"
} Приветствие
Приветствие новых участников в указанном канале.
WELCOME {
@channel #общий
@message "Добро пожаловать, {user}!"
} {user} заменяется на упоминание нового участника.
Подключение файлов
Позволяет разбивать шаблон на несколько файлов.
!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}!"
}