Documentation
DSL (Domain-Specific Language) v3.0 is a text-based format for describing Discord server structure. The DS Motier bot reads a .txt template and builds the server automatically: categories, channels, roles, forums, tickets, temporary voice channels.
Key Features
- Categories, text channels, forums, stages, counters
- Roles with permissions, colors, display settings
- Ticket system and temporary voice channels
- Button and reaction role assignment
- Greetings, auto-messages, embeds
- Variables
$name - File includes via
!INCLUDE - Access selectors
@allow/@deny
Blocks
Category
Groups channels. Can contain CHANNEL, FORUM, VOICE, STAGE, COUNTER, TEMP_VOICE.
CATEGORY "Information" {
CHANNEL #rules
CHANNEL #news
}
CATEGORY "Admin" @admin {
CHANNEL #admin-chat
} Selector @admin after the name restricts category visibility to that role.
Text Channel
CHANNEL #general
CHANNEL #rules { @slowmode 5 }
CHANNEL #admin { @deny @everyone @allow admin } Attributes: @slowmode (seconds), selectors @allow/@deny.
Forum
Forum channel with built-in threads. At least one THREAD is required inside.
FORUM "Support" {
THREAD bug-report
THREAD question
@slowmode 30
} Forum Thread
THREAD bug-report
THREAD "topic with spaces" Single word - no quotes, multiple words - in double quotes.
Stage (Event)
Voice channel for events.
STAGE "Live stream"
STAGE "LIVE" { @topic "Discussing the update" } Member Counter
A voice channel whose name displays the server member count.
COUNTER "👥 Members: {count}"
COUNTER "🎧 In voice: {count}" {count} is replaced with the current member count.
Role
ROLE "Moderator" {
@color #5865F2
@permissions kick_members, ban_members
@display separate
@mentionable true
}
ROLE "Newcomer" { @color #808080 } Attributes:
@color- HEX color@permissions- comma-separated permission list@display-separate/none@mentionable-true/false
Ticket System
Creates a channel with a ticket open button. Clicking creates a private channel for the user.
TICKET "Contact us" {
@category "Support"
@button 📩 Create ticket
@description "We will reply shortly"
} Temporary Voice
User clicks a button - a temporary voice channel is created. Deleted when everyone leaves.
TEMP_VOICE "Create room" {
@category "Voice"
@button 🔈 Create
@channel_prefix "Room"
@user_limit 10
} Embed Message
Sends a styled embed message to the specified channel on build.
EMBED #rules {
@title "Server Rules"
@description "1. Respect each other\n2. No spamming"
@color #5865F2
@footer "DS Motier"
} Button Roles
Assign roles by button click.
BUTTON_ROLE "Roles" {
@channel #roles
@description "Select games"
ROLE "CS:GO" 🎮
ROLE "Valorant" 🔫
} Reaction Roles
Assign roles by reacting to a message.
REACTION_ROLE "Notifications" {
@channel #reactions
@description "Click a reaction"
REACTION "📢" announcements
REACTION "🎮" events
} Auto Message
Automatically sends a message to a channel on build.
AUTO_MESSAGE #general {
@content "Welcome!"
}
AUTO_MESSAGE #rules {
@embed "Rules"
@content "See above"
} Welcome
Greets new members in the specified channel.
WELCOME {
@channel #general
@message "Welcome, {user}!"
} {user} is replaced with the new member's mention.
File Includes
Allows splitting the template into multiple files.
!INCLUDE "base.txt"
!INCLUDE "roles/moderators.txt" Variables
Variables let you reuse values in the template. Declared with $name = value.
$color_primary = #5865F2
$color_danger = #ED4245
$prefix = "!"
$admin_role = "Administrator"
CATEGORY "Main" {
CHANNEL #general { @allow $admin_role }
}
ROLE $admin_role { @color $color_primary } Can be used anywhere in the template except string literals.
Access Selectors
Control visibility of channels and categories.
CHANNEL #admin-chat {
@allow admin
@deny @everyone
}
CATEGORY "VIP" @vip {
CHANNEL #vip-chat
} @allow role- grant access@deny role- deny access@everyone- reference to the @everyone role- Selector after CATEGORY applies to all nested channels
Examples
Minimal Template
CATEGORY "Main" {
CHANNEL #general
CHANNEL #offtopic
}
ROLE "Moderator" { @color #5865F2 } Full Template
@name "My Server"
$color_main = #5865F2
$color_success = #57F287
!INCLUDE "base.txt"
CATEGORY "Information" {
CHANNEL #rules { @slowmode 5 }
CHANNEL #news
CHANNEL #announcements { @allow admin }
}
CATEGORY "Chat" {
CHANNEL #general
CHANNEL #offtopic
FORUM "Support" {
THREAD bug-report
THREAD question
THREAD suggestion
}
}
ROLE "Moderator" color=$color_main {
@permissions kick_members, ban_members
@display separate
}
TICKET "Contact us" {
@category "Support"
@button 📩 Create ticket
}
TEMP_VOICE "Create room" {
@category "Voice"
@button 🔈 Create
}
WELCOME {
@channel #general
@message "Welcome, {user}!"
}