2019-06-08 21:52:30 +02:00
package moe.kageru.kagebot
2019-06-15 12:27:20 +02:00
import moe.kageru.kagebot.Util.checked
2019-07-13 15:39:50 +02:00
import moe.kageru.kagebot.config.Config
2019-07-13 15:32:23 +02:00
import moe.kageru.kagebot.config.ConfigParser
2019-06-12 23:43:36 +02:00
import moe.kageru.kagebot.config.RawConfig
2019-07-23 21:50:55 +02:00
import moe.kageru.kagebot.cron.CronD
2019-07-23 23:31:23 +02:00
import moe.kageru.kagebot.persistence.Dao
2019-06-08 21:52:30 +02:00
import org.javacord.api.DiscordApiBuilder
import org.javacord.api.event.message.MessageCreateEvent
2019-06-12 23:43:36 +02:00
import java.io.File
2019-07-07 10:54:20 +02:00
import kotlin.system.exitProcess
2019-06-08 21:52:30 +02:00
2019-06-15 12:55:47 +02:00
fun main ( ) {
Kagebot . init ( )
}
object Kagebot {
2019-07-17 23:22:18 +02:00
fun MessageCreateEvent . process ( ) {
2019-07-17 23:42:12 +02:00
if ( messageAuthor . isBotUser ) {
2019-07-17 23:22:18 +02:00
if ( messageAuthor . isYourself ) {
2019-07-17 23:17:16 +02:00
val loggedMessage =
2019-07-17 23:22:18 +02:00
if ( readableMessageContent . isBlank ( ) ) " [embed] " else readableMessageContent
2019-07-17 23:17:16 +02:00
Log . info ( " <Self> $loggedMessage " )
2019-06-15 14:35:17 +02:00
}
2019-06-15 12:55:47 +02:00
return
}
2019-07-13 15:39:50 +02:00
for ( command in Config . commands ) {
2019-07-17 23:22:18 +02:00
if ( command . matches ( readableMessageContent ) ) {
2019-08-07 15:13:16 +02:00
if ( command . execute ( this ) ) {
break
}
2019-06-08 21:52:30 +02:00
}
}
2019-06-15 12:55:47 +02:00
}
2019-06-12 23:43:36 +02:00
2019-09-17 22:59:55 +02:00
private val secret by lazy { File ( " secret " ) . readText ( ) . trim ( ) }
2019-06-15 12:55:47 +02:00
fun init ( ) {
2019-09-17 22:59:55 +02:00
val api = DiscordApiBuilder ( ) . setToken ( secret ) . login ( ) . join ( )
2019-09-17 23:01:38 +02:00
Globals . api = api
2019-06-12 23:43:36 +02:00
try {
2019-07-13 15:32:23 +02:00
ConfigParser . initialLoad ( RawConfig . read ( ) )
2019-06-12 23:43:36 +02:00
} catch ( e : IllegalArgumentException ) {
2019-06-15 12:27:20 +02:00
println ( " Config error: \n $e , \n ${e.message} , \n ${e.stackTrace.joinToString("\n")} " )
2019-07-07 10:54:20 +02:00
exitProcess ( 1 )
2019-06-12 23:43:36 +02:00
}
2019-06-08 21:52:30 +02:00
Runtime . getRuntime ( ) . addShutdownHook ( Thread {
2019-07-17 21:16:17 +02:00
Log . info ( " Bot has been interrupted. Shutting down. " )
2019-07-23 23:31:23 +02:00
Dao . close ( )
2019-09-17 22:59:55 +02:00
api . disconnect ( )
2019-06-08 21:52:30 +02:00
} )
2019-07-17 21:16:17 +02:00
Log . info ( " kagebot Mk II running " )
2019-09-17 22:59:55 +02:00
api . addMessageCreateListener { checked { it . process ( ) } }
Config . features . eventFeatures ( ) . forEach { it . register ( api ) }
2019-07-23 21:50:55 +02:00
CronD . startAll ( )
2019-06-08 21:52:30 +02:00
}
2019-06-12 23:43:36 +02:00
}