@if (normalizedServer(); as room) {

Roles now define who can moderate, manage channels, upload files, and join voice. Channel overrides are optional and apply on top of the base role permissions.

@if (!canManageRoles()) {

You can inspect this server's access model, but only members with Manage Roles can edit it.

}

Roles

Higher roles appear first.

@if (canManageRoles()) { }
@for (role of roles(); track role.id) { }

Slow Mode

Sets the minimum delay between messages for everyone in the server.

@if (selectedRole(); as role) {

{{ role.name }}

Edit the role metadata here, then tune its global permissions and per-channel overrides below.

@if (role.isSystem) { Protected role }
@if (!role.isSystem) { }
@if (role.isSystem) {

System roles can still have their permissions tuned, but their name, color, and membership in the base hierarchy stay fixed.

}

Base Permissions

These defaults apply everywhere unless a channel override changes them.

@for (permission of permissionDefinitions; track permission.key) {

{{ permission.label }}

{{ permission.description }}

}

Channel Overrides

Override the selected role inside a specific channel without changing the server-wide default.

@if (channels().length === 0) {

This server has no channels yet.

} @else {
@for (permission of permissionDefinitions; track permission.key) {

{{ permission.label }}

{{ permission.description }}

}
}
}
} @else {
Select a server from the sidebar to manage
}