package moe.kageru.kagebot.features import arrow.core.ListK import arrow.core.extensions.list.monad.map import arrow.core.k import com.fasterxml.jackson.annotation.JsonProperty import moe.kageru.kagebot.Log import moe.kageru.kagebot.MessageUtil.sendEmbed import moe.kageru.kagebot.Util.asOption import moe.kageru.kagebot.Util.findRole import moe.kageru.kagebot.Util.findUser import moe.kageru.kagebot.Util.unwrap import moe.kageru.kagebot.config.Config import moe.kageru.kagebot.config.LocalizationSpec import moe.kageru.kagebot.persistence.Dao import org.javacord.api.entity.permission.Role import org.javacord.api.event.message.MessageCreateEvent import java.time.Duration import java.time.Instant class TimeoutFeature(@JsonProperty("role") role: String) : MessageFeature { private val timeoutRole: Role = findRole(role).unwrap() override fun handle(message: MessageCreateEvent) { val timeout = message.readableMessageContent.split(' ', limit = 4).let { args -> if (args.size < 3) { message.channel.sendMessage("Error: expected “