32 lines
1.1 KiB
Kotlin
32 lines
1.1 KiB
Kotlin
package moe.kageru.kagebot.features
|
|
|
|
import moe.kageru.kagebot.MessageUtil
|
|
import moe.kageru.kagebot.Util
|
|
import moe.kageru.kagebot.config.RawFeatures
|
|
import moe.kageru.kagebot.config.RawWelcomeFeature
|
|
import org.javacord.api.entity.channel.TextChannel
|
|
import org.javacord.api.entity.message.embed.EmbedBuilder
|
|
|
|
class Features(val welcome: WelcomeFeature?) {
|
|
|
|
constructor(rawFeatures: RawFeatures) : this(rawFeatures.welcome?.let(::WelcomeFeature))
|
|
|
|
companion object {
|
|
val NONE = Features(null)
|
|
}
|
|
}
|
|
|
|
class WelcomeFeature(rawWelcome: RawWelcomeFeature) {
|
|
val enabled: Boolean = rawWelcome.enabled
|
|
val embed: EmbedBuilder? by lazy {
|
|
rawWelcome.content?.let(MessageUtil::mapToEmbed)
|
|
}
|
|
val fallbackChannel: TextChannel? = rawWelcome.fallbackChannel?.let {
|
|
if (rawWelcome.fallbackMessage == null) {
|
|
throw IllegalArgumentException("[feature.welcome.fallbackMessage] must not be null if fallbackChannel is defined")
|
|
}
|
|
Util.findChannel(it)
|
|
}
|
|
val fallbackMessage: String? = rawWelcome.fallbackMessage
|
|
}
|