2019-07-11 22:16:02 +02:00
package moe.kageru.kagebot.command
2019-07-13 15:39:50 +02:00
import moe.kageru.kagebot.config.Config
2019-07-11 22:16:02 +02:00
import moe.kageru.kagebot.Log.log
import moe.kageru.kagebot.MessageUtil
import moe.kageru.kagebot.Util
import moe.kageru.kagebot.config.RawRedirect
import org.javacord.api.entity.channel.TextChannel
import org.javacord.api.event.message.MessageCreateEvent
internal class MessageRedirect ( rawRedirect : RawRedirect ) {
private val target : TextChannel = rawRedirect . target ?. let ( Util :: findChannel )
?: throw IllegalArgumentException ( " Every redirect needs to have a target. " )
private val anonymous : Boolean = rawRedirect . anonymous
fun execute ( message : MessageCreateEvent , command : Command ) {
val embed = MessageUtil . getEmbedBuilder ( )
. addField (
2019-07-13 15:39:50 +02:00
Config . localization . redirectedMessage ,
2019-07-11 22:16:02 +02:00
message . readableMessageContent . let { content ->
when ( command . matchType ) {
MatchType . PREFIX -> content . removePrefix ( command . trigger ) . trim ( )
else -> content
}
}
)
// No inlined if/else because the types are different.
// Passing the full message author will also include the avatar in the embed.
embed . apply {
if ( anonymous ) {
setAuthor ( " Anonymous " )
} else {
setAuthor ( message . messageAuthor )
}
}
if ( Util . wasSuccessful ( target . sendMessage ( embed ) ) ) {
log . warning ( " Could not redirect message to channel $target " )
}
}
2019-07-13 14:52:05 +02:00
}