2019-07-11 22:16:02 +02:00
package moe.kageru.kagebot.command
2019-07-17 21:16:17 +02:00
import moe.kageru.kagebot.Log
2019-07-11 22:16:02 +02:00
import moe.kageru.kagebot.MessageUtil
import moe.kageru.kagebot.Util
2019-07-17 22:47:47 +02:00
import moe.kageru.kagebot.Util.applyIf
2019-07-17 23:17:16 +02:00
import moe.kageru.kagebot.Util.failed
2019-11-12 14:02:31 +01:00
import moe.kageru.kagebot.Util.unwrap
2019-07-14 16:35:20 +02:00
import moe.kageru.kagebot.config.Config
2019-10-18 19:34:41 +02:00
import moe.kageru.kagebot.config.LocalizationSpec
2019-07-11 22:16:02 +02:00
import org.javacord.api.entity.channel.TextChannel
import org.javacord.api.event.message.MessageCreateEvent
2019-10-18 20:48:43 +02:00
class MessageRedirect ( target : String , private val anonymous : Boolean = false ) {
2019-11-12 14:02:31 +01:00
private val targetChannel : TextChannel = Util . findChannel ( target ) . unwrap ( )
2019-07-11 22:16:02 +02:00
fun execute ( message : MessageCreateEvent , command : Command ) {
2019-07-17 22:40:44 +02:00
val embed = MessageUtil . withEmbed {
2019-07-17 22:47:47 +02:00
val redirectedText = message . readableMessageContent
. applyIf ( command . matchType == MatchType . PREFIX ) { content ->
content . removePrefix ( command . trigger ) . trim ( )
2019-07-11 22:16:02 +02:00
}
2019-10-18 19:34:41 +02:00
addField ( Config . localization [ LocalizationSpec . redirectedMessage ] , redirectedText )
2019-07-23 23:27:04 +02:00
Log . info ( " Redirected message: $redirectedText " )
2019-07-17 22:40:44 +02:00
}
2019-07-11 22:16:02 +02:00
// 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 )
}
}
2019-10-18 20:48:43 +02:00
if ( MessageUtil . sendEmbed ( targetChannel , embed ) . failed ( ) ) {
targetChannel . sendMessage ( " Error: could not redirect message. " )
Log . warn ( " Could not redirect message to channel $targetChannel " )
2019-07-11 22:16:02 +02:00
}
}
2019-07-13 14:52:05 +02:00
}