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
|
package moe.kageru.kagebot
|
||||||
|
|
||||||
import moe.kageru.kagebot.Log.log
|
import moe.kageru.kagebot.Log.log
|
||||||
|
import moe.kageru.kagebot.Util.checked
|
||||||
import moe.kageru.kagebot.config.Config
|
import moe.kageru.kagebot.config.Config
|
||||||
import moe.kageru.kagebot.config.RawConfig
|
import moe.kageru.kagebot.config.RawConfig
|
||||||
import org.javacord.api.DiscordApiBuilder
|
import org.javacord.api.DiscordApiBuilder
|
||||||
|
@ -46,7 +47,7 @@ class Kagebot {
|
||||||
try {
|
try {
|
||||||
Globals.config = Config(RawConfig.read())
|
Globals.config = Config(RawConfig.read())
|
||||||
} catch (e: IllegalArgumentException) {
|
} 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)
|
System.exit(1)
|
||||||
}
|
}
|
||||||
Runtime.getRuntime().addShutdownHook(Thread {
|
Runtime.getRuntime().addShutdownHook(Thread {
|
||||||
|
@ -54,10 +55,12 @@ class Kagebot {
|
||||||
Globals.api.disconnect()
|
Globals.api.disconnect()
|
||||||
})
|
})
|
||||||
log.info("kagebot Mk II running")
|
log.info("kagebot Mk II running")
|
||||||
Globals.api.addMessageCreateListener { processMessage(it) }
|
Globals.api.addMessageCreateListener { checked { processMessage(it) } }
|
||||||
Globals.config.features.welcome?.let { welcome ->
|
Globals.config.features.welcome?.let { welcome ->
|
||||||
if (welcome.enabled) {
|
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.api
|
||||||
import moe.kageru.kagebot.Globals.server
|
import moe.kageru.kagebot.Globals.server
|
||||||
|
import moe.kageru.kagebot.Log.log
|
||||||
import org.javacord.api.entity.channel.TextChannel
|
import org.javacord.api.entity.channel.TextChannel
|
||||||
import org.javacord.api.entity.message.MessageAuthor
|
import org.javacord.api.entity.message.MessageAuthor
|
||||||
|
import org.javacord.api.entity.message.embed.EmbedBuilder
|
||||||
import org.javacord.api.entity.permission.Role
|
import org.javacord.api.entity.permission.Role
|
||||||
|
import java.awt.Color
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.CompletableFuture
|
import java.util.concurrent.CompletableFuture
|
||||||
import java.util.concurrent.CompletionException
|
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?
|
val regex: Regex?
|
||||||
|
|
||||||
init {
|
init {
|
||||||
trigger = cmd.trigger!!
|
trigger = cmd.trigger ?: throw IllegalArgumentException("Every command must have a trigger.")
|
||||||
response = cmd.response
|
response = cmd.response
|
||||||
matchType = cmd.matchType?.let { type ->
|
matchType = cmd.matchType?.let { type ->
|
||||||
MatchType.values().find { it.name.equals(type, ignoreCase = true) }
|
MatchType.values().find { it.name.equals(type, ignoreCase = true) }
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
package moe.kageru.kagebot
|
package moe.kageru.kagebot
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
//try {
|
|
||||||
Kagebot()
|
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