![JAR search and dependency download from the Maven repository](/logo.png)
commonMain.builder.channel.PermissionOverwritesBuilder.kt Maven / Gradle / Ivy
package dev.kord.rest.builder.channel
import dev.kord.common.annotation.KordDsl
import dev.kord.common.entity.Overwrite
import dev.kord.common.entity.OverwriteType
import dev.kord.common.entity.Snowflake
import kotlin.contracts.InvocationKind
import kotlin.contracts.contract
/**
* Builder that can modify [permission overwrites][Overwrite].
*/
@KordDsl
public sealed interface PermissionOverwritesBuilder {
/**
* Adds [overwrite] to this builder.
*/
public fun addOverwrite(overwrite: Overwrite)
}
/**
* [PermissionOverwritesBuilder] which creates an entity with overwrites.
*/
@KordDsl
public interface PermissionOverwritesCreateBuilder : PermissionOverwritesBuilder {
public var permissionOverwrites: MutableSet
override fun addOverwrite(overwrite: Overwrite) {
permissionOverwrites.add(overwrite)
}
}
/**
* [PermissionOverwritesBuilder] which modifies an existing entity with overwrites.
*/
@KordDsl
public interface PermissionOverwritesModifyBuilder : PermissionOverwritesBuilder {
public var permissionOverwrites: MutableSet?
override fun addOverwrite(overwrite: Overwrite) {
val overwrites = permissionOverwrites ?: mutableSetOf()
overwrites.add(overwrite)
permissionOverwrites = overwrites
}
}
/**
* Adds an [Overwrite] for the [memberId].
*/
public inline fun PermissionOverwritesBuilder.addMemberOverwrite(
memberId: Snowflake,
builder: PermissionOverwriteBuilder.() -> Unit
) {
contract {
callsInPlace(builder, InvocationKind.EXACTLY_ONCE)
}
val overwrite = PermissionOverwriteBuilder(OverwriteType.Member, memberId).apply(builder).toOverwrite()
return addOverwrite(overwrite)
}
/**
* Adds an [Overwrite] for the [roleId].
*/
public inline fun PermissionOverwritesBuilder.addRoleOverwrite(
roleId: Snowflake,
builder: PermissionOverwriteBuilder.() -> Unit
) {
contract {
callsInPlace(builder, InvocationKind.EXACTLY_ONCE)
}
val overwrite = PermissionOverwriteBuilder(OverwriteType.Role, roleId).apply(builder).toOverwrite()
return addOverwrite(overwrite)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy