Send uncaught errors to bot owner via DM
This commit is contained in:
parent
2ed5d6ab19
commit
ab1d4729f4
|
@ -1,6 +1,7 @@
|
|||
package moe.kageru.kagebot
|
||||
|
||||
import moe.kageru.kagebot.Log.log
|
||||
import moe.kageru.kagebot.Util.checked
|
||||
import moe.kageru.kagebot.config.Config
|
||||
import moe.kageru.kagebot.config.RawConfig
|
||||
import org.javacord.api.DiscordApiBuilder
|
||||
|
@ -46,7 +47,7 @@ class Kagebot {
|
|||
try {
|
||||
Globals.config = Config(RawConfig.read())
|
||||
} catch (e: IllegalArgumentException) {
|
||||
println("Config error:\n$e,\n${e.message},\n${e.stackTrace}")
|
||||
println("Config error:\n$e,\n${e.message},\n${e.stackTrace.joinToString("\n")}")
|
||||
System.exit(1)
|
||||
}
|
||||
Runtime.getRuntime().addShutdownHook(Thread {
|
||||
|
@ -54,10 +55,12 @@ class Kagebot {
|
|||
Globals.api.disconnect()
|
||||
})
|
||||
log.info("kagebot Mk II running")
|
||||
Globals.api.addMessageCreateListener { processMessage(it) }
|
||||
Globals.api.addMessageCreateListener { checked { processMessage(it) } }
|
||||
Globals.config.features.welcome?.let { welcome ->
|
||||
if (welcome.enabled) {
|
||||
Globals.api.addServerMemberJoinListener { welcomeUser(it) }
|
||||
Globals.api.addServerMemberJoinListener {
|
||||
checked { welcomeUser(it) }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,9 +2,12 @@ package moe.kageru.kagebot
|
|||
|
||||
import moe.kageru.kagebot.Globals.api
|
||||
import moe.kageru.kagebot.Globals.server
|
||||
import moe.kageru.kagebot.Log.log
|
||||
import org.javacord.api.entity.channel.TextChannel
|
||||
import org.javacord.api.entity.message.MessageAuthor
|
||||
import org.javacord.api.entity.message.embed.EmbedBuilder
|
||||
import org.javacord.api.entity.permission.Role
|
||||
import java.awt.Color
|
||||
import java.util.*
|
||||
import java.util.concurrent.CompletableFuture
|
||||
import java.util.concurrent.CompletionException
|
||||
|
@ -80,4 +83,23 @@ object Util {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun checked(op: (() -> Unit)) {
|
||||
try {
|
||||
op()
|
||||
} catch (e: Exception) {
|
||||
log.warning("An uncaught exception occurred.\n$e")
|
||||
Globals.api.owner.get().sendMessage(
|
||||
EmbedBuilder()
|
||||
.setTimestampToNow()
|
||||
.setColor(Color.RED)
|
||||
.addField("Error", "kagebot has encountered an error")
|
||||
.addField(
|
||||
"$e", """```
|
||||
${e.stackTrace.joinToString("\n")}
|
||||
```""".trimIndent()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -18,7 +18,7 @@ class Command(cmd: RawCommand) {
|
|||
val regex: Regex?
|
||||
|
||||
init {
|
||||
trigger = cmd.trigger!!
|
||||
trigger = cmd.trigger ?: throw IllegalArgumentException("Every command must have a trigger.")
|
||||
response = cmd.response
|
||||
matchType = cmd.matchType?.let { type ->
|
||||
MatchType.values().find { it.name.equals(type, ignoreCase = true) }
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
package moe.kageru.kagebot
|
||||
|
||||
fun main() {
|
||||
//try {
|
||||
Kagebot()
|
||||
/*} catch (e: Exception) {
|
||||
log.warning("An exception occurred in the main thread, exiting.\n${e.stackTrace.joinToString("\n")}")
|
||||
System.exit(1)
|
||||
}*/
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user