package moe.kageru.kagebot.features import arrow.core.* import arrow.core.extensions.list.monad.map import arrow.core.extensions.listk.functorFilter.filter import arrow.syntax.collections.destructured import com.fasterxml.jackson.annotation.JsonProperty import moe.kageru.kagebot.Log import moe.kageru.kagebot.MessageUtil.sendEmbed 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.extensions.memberById import moe.kageru.kagebot.extensions.on import moe.kageru.kagebot.extensions.roles import moe.kageru.kagebot.persistence.Dao import org.javacord.api.entity.permission.Role import org.javacord.api.entity.user.User 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) { message.readableMessageContent.split(' ', limit = 4).let { args -> Either.cond( args.size >= 3, { Tuple3(args[1], args[2], args.getOrNull(3)) }, { "Error: expected “