Как собрать Discord-сервер из текстового файла: полный гайд по DSL v3.0
Discord давно перестал быть просто мессенджером для геймеров. Сегодня это платформа для сообществ, рабочих групп, клубов по интересам и даже целых компаний. Но создание сервера с нуля — процесс муторный: сотни кликов, десятки настроек, постоянные переключения между вкладками.
DS Motier решает эту проблему радикально: вы описываете сервер в обычном .txt файле, бот читает его и строит всё автоматически.
Давайте разберёмся, как это работает.
Что такое DSL v3.0
DSL (Domain-Specific Language) — язык описания структуры Discord-сервера. Версия 3.0 поддерживает всё, что может понадобиться:
— Категории, текстовые/голосовые каналы, форумы, стейджи — Роли с цветом, правами и отображением — Тикет-система с кнопками — Временные голосовые комнаты (TEMP_VOICE) — Роли по кнопкам и реакциям — Приветствия и автосообщения — Счётчики участников — Переменные и подключение файлов (INCLUDE) — Селекторы доступа allow/deny
Установка бота
DS Motier работает на Python. Установка занимает 30 секунд.
pip install -r requirements.txt
Скопируйте config.example.py в config.py, вставьте токен бота (получить можно на discord.com/developers/applications).
Запуск: python main.py
На сервере введите /build и загрузите .txt файл с шаблоном.
Основы синтаксиса
Вся структура описывается внутри блока SERVER { }.
SERVER { name = “Мой сервер”
// Роли
ROLE {
name = "Админ"
color = #ED4245
permissions = administrator
}
// Категории с каналами
CATEGORY {
name = "Общение"
TEXT {
name = "общий"
topic = "Общайтесь"
}
VOICE {
name = "Голосовой"
limit = 10
}
}
}
Никаких лишних символов. Просто, читаемо, понятно.
Роли
ROLE { name = “Модератор” color = #5865F2 permissions = kick_members, ban_members hoist = true mentionable = true }
Поддерживаемые параметры: — name — название роли — color — цвет в HEX (#RRGGBB) — permissions — права через запятую — hoist — показывать отдельно в списке (true/false) — mentionable — можно ли упоминать роль (true/false)
Категории и каналы
CATEGORY { name = “Информация”
TEXT { name = "правила" slowmode = 5 }
TEXT { name = "новости" }
TEXT { name = "объявления" readonly = true }
VOICE { name = "Общий" limit = 0 }
STAGE { name = "Эфир" topic = "Мероприятие" }
FORUM {
name = "Поддержка"
tags = "вопрос", "баг", "предложение"
}
}
Поддерживаемые параметры для каналов: — topic — описание канала — slowmode — задержка между сообщениями (секунды) — limit — лимит пользователей (для voice, 0 = без лимита) — nsfw — возрастное ограничение (true/false) — readonly — только чтение (true/false) — allow / deny — права доступа по именам ролей
Форумы
Форумы позволяют создавать темы внутри канала.
FORUM { name = “Техподдержка” tags = “установка”, “ошибка”, “вопрос”, “предложение” }
Участники смогут создавать темы с выбранными тегами.
Тикет-система
TICKETS { category = “Информация” staff_roles = “Модератор” create_channel_name = “тикет” transcript = true auto_close_days = 7 }
При нажатии на кнопку создаётся приватный канал, видимый только пользователю и персоналу.
Временные голосовые комнаты
TEMP_VOICE { name = “➕ Создать комнату” category = “Голосовые” user_limit = 10 }
Пользователь нажимает кнопку — создаётся его личная голосовая комната. Когда все выходят — комната удаляется автоматически.
Роли по кнопкам и реакциям
BUTTON_ROLE { channel = “роли” label = “🎮 Игрок” role = “Игрок” style = primary }
REACTION_ROLE { channel = “уведомления” message = “Выбери реакции” emoji = “📢” role = “Анонсы” }
Счётчики
COUNTER { type = members name = “👥 Участники: {count}” }
COUNTER { type = voice name = “🎧 В голосе: {count}” }
Счётчики создают голосовые каналы, в названии которых отображается текущее количество участников или людей в голосе.
Подключение файлов (INCLUDE)
Можно разбивать шаблон на несколько файлов для удобства:
!INCLUDE “base.txt” !INCLUDE “roles/moderators.txt”
Файлы ищутся относительно расположения основного шаблона.
Готовый пример сервера
SERVER { name = “Моё сообщество”
ROLE {
name = "Админ"
color = #ED4245
permissions = administrator
hoist = true
}
ROLE {
name = "Модератор"
color = #FEE75C
permissions = kick_members, ban_members
hoist = true
}
CATEGORY {
name = "📢 Информация"
TEXT { name = "правила" slowmode = 30 }
TEXT { name = "новости" }
TEXT { name = "объявления" }
}
CATEGORY {
name = "💬 Общение"
TEXT { name = "общий" }
TEXT { name = "оффтоп" }
FORUM {
name = "Поддержка"
tags = "вопрос", "баг", "идея"
}
}
TICKETS {
category = "📢 Информация"
staff_roles = "Модератор", "Админ"
}
WELCOME {
channel = "правила"
message = "Добро пожаловать, {user}! Ознакомься с правилами."
}
COUNTER {
type = members
name = "👥 Участники: {count}"
}
}
Сохраните это в .txt и загрузите через /build. Через секунду сервер будет готов.
Где узнать больше
— Discord: discord.gg/34YmpcVjrR