2019-07-14 17:27:43 +02:00
package moe.kageru.kagebot.features
import moe.kageru.kagebot.Log
2019-07-17 22:04:06 +02:00
import moe.kageru.kagebot.MessageUtil.sendEmbed
2019-07-14 17:27:43 +02:00
import moe.kageru.kagebot.config.ConfigParser
import moe.kageru.kagebot.config.RawConfig
import org.javacord.api.event.message.MessageCreateEvent
class SetConfigFeature : MessageFeature ( ) {
@ExperimentalStdlibApi
override fun handleInternal ( message : MessageCreateEvent ) {
if ( message . messageAttachments . size != 1 ) {
message . channel . sendMessage ( " Error: please attach the new config to your message. " )
return
}
val newConfig = message . messageAttachments [ 0 ] . url . openStream ( ) . readAllBytes ( ) . decodeToString ( )
val rawConfig = try {
RawConfig . readFromString ( newConfig )
} catch ( e : IllegalStateException ) {
2019-07-17 22:04:06 +02:00
message . channel . sendEmbed {
addField (
" An unexpected error occured. This is probably caused by a malformed config file. Perhaps this can help: " ,
" ``` $e : ${e.message} "
)
}
2019-07-17 21:16:17 +02:00
Log . info ( " Could not parse new config: $e : ${e.message} " )
2019-07-14 17:27:43 +02:00
return
}
try {
ConfigParser . reloadLocalization ( rawConfig )
ConfigParser . reloadFeatures ( rawConfig )
ConfigParser . reloadCommands ( rawConfig )
2019-07-14 21:07:19 +02:00
ConfigParser . configFile . writeText ( newConfig )
message . channel . sendMessage ( " Config reloaded. " )
2019-07-14 17:27:43 +02:00
} catch ( e : IllegalArgumentException ) {
2019-07-17 22:04:06 +02:00
message . channel . sendEmbed {
addField ( " Error " , " ``` ${e.message} ``` " )
}
2019-07-14 17:27:43 +02:00
}
}
}