Add logging for errors while sending embeds
Not that it’s worth much because the discord API is a useless piece of trash when it comes to error messages. Like, seriously. Might as well throw no error at all. Received a 400 response from Discord with body {"embed": ["fields"]}! Thanks for nothing. Fix in next commit.
This commit is contained in:
parent
60797c21d0
commit
0ae5e83641
|
@ -1,5 +1,6 @@
|
||||||
package moe.kageru.kagebot
|
package moe.kageru.kagebot
|
||||||
|
|
||||||
|
import moe.kageru.kagebot.Util.failed
|
||||||
import moe.kageru.kagebot.config.Config
|
import moe.kageru.kagebot.config.Config
|
||||||
import org.javacord.api.entity.message.Message
|
import org.javacord.api.entity.message.Message
|
||||||
import org.javacord.api.entity.message.MessageAuthor
|
import org.javacord.api.entity.message.MessageAuthor
|
||||||
|
@ -30,7 +31,10 @@ object MessageUtil {
|
||||||
setTimestampToNow()
|
setTimestampToNow()
|
||||||
op()
|
op()
|
||||||
}
|
}
|
||||||
sendMessage(embed)
|
val sent = sendMessage(embed)
|
||||||
|
if (sent.failed()) {
|
||||||
|
// for logging
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -73,6 +73,11 @@ object Util {
|
||||||
try {
|
try {
|
||||||
join()
|
join()
|
||||||
} catch (e: CompletionException) {
|
} catch (e: CompletionException) {
|
||||||
|
Log.warn("""Error during CompletableFuture:
|
||||||
|
|$e
|
||||||
|
|${e.localizedMessage}
|
||||||
|
|${e.stackTrace.joinToString("\n\t")}
|
||||||
|
""".trimMargin())
|
||||||
// we don’t care about this error, but I don’t want to spam stdout
|
// we don’t care about this error, but I don’t want to spam stdout
|
||||||
}
|
}
|
||||||
return isCompletedExceptionally
|
return isCompletedExceptionally
|
||||||
|
|
|
@ -32,8 +32,10 @@ class WelcomeFeature(rawWelcome: RawWelcomeFeature) : MessageFeature, EventFeatu
|
||||||
|
|
||||||
override fun handle(message: MessageCreateEvent) {
|
override fun handle(message: MessageCreateEvent) {
|
||||||
embed?.let {
|
embed?.let {
|
||||||
MessageUtil.sendEmbed(message.channel, it)
|
val sent = MessageUtil.sendEmbed(message.channel, it)
|
||||||
}
|
// invoke this for logging
|
||||||
|
sent.failed()
|
||||||
|
} ?: Log.info("Welcome command was triggered, but no welcome embed defined.")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun hasFallback(): Boolean = fallbackChannel != null && fallbackMessage != null
|
private fun hasFallback(): Boolean = fallbackChannel != null && fallbackMessage != null
|
||||||
|
|
|
@ -40,9 +40,15 @@ object TestUtil {
|
||||||
return mockk {
|
return mockk {
|
||||||
every { messageContent } returns content
|
every { messageContent } returns content
|
||||||
every { readableMessageContent } returns content
|
every { readableMessageContent } returns content
|
||||||
every { channel.sendMessage(capture(replies)) } returns mockk()
|
every { channel.sendMessage(capture(replies)) } returns mockk(relaxed = true) {
|
||||||
every { channel.sendMessage(capture(replyEmbeds)) } returns mockk()
|
every { isCompletedExceptionally } returns false
|
||||||
every { channel.sendMessage(capture(files)) } returns mockk()
|
}
|
||||||
|
every { channel.sendMessage(capture(replyEmbeds)) } returns mockk(relaxed = true) {
|
||||||
|
every { isCompletedExceptionally } returns false
|
||||||
|
}
|
||||||
|
every { channel.sendMessage(capture(files)) } returns mockk(relaxed = true) {
|
||||||
|
every { isCompletedExceptionally } returns false
|
||||||
|
}
|
||||||
every { message.canYouDelete() } returns true
|
every { message.canYouDelete() } returns true
|
||||||
every { isPrivateMessage } returns false
|
every { isPrivateMessage } returns false
|
||||||
// We can’t use a nested mock here because other fields of messageAuthor might
|
// We can’t use a nested mock here because other fields of messageAuthor might
|
||||||
|
@ -59,7 +65,7 @@ object TestUtil {
|
||||||
fun messageableAuthor(messages: MutableList<EmbedBuilder> = mutableListOf()): User {
|
fun messageableAuthor(messages: MutableList<EmbedBuilder> = mutableListOf()): User {
|
||||||
return mockk {
|
return mockk {
|
||||||
every { getRoles(any()) } returns emptyList()
|
every { getRoles(any()) } returns emptyList()
|
||||||
every { sendMessage(capture(messages)) } returns mockk()
|
every { sendMessage(capture(messages)) } returns mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,11 +77,13 @@ object TestUtil {
|
||||||
val channel = mockk<Optional<ServerTextChannel>>(relaxed = true) {
|
val channel = mockk<Optional<ServerTextChannel>>(relaxed = true) {
|
||||||
every { isPresent } returns true
|
every { isPresent } returns true
|
||||||
every { get() } returns mockk {
|
every { get() } returns mockk {
|
||||||
every { sendMessage(capture(sentEmbeds)) } returns mockk {
|
every { sendMessage(capture(sentEmbeds)) } returns mockk(relaxed = true) {
|
||||||
every { join() } returns mockk()
|
every { join() } returns mockk {
|
||||||
|
every { isCompletedExceptionally } returns false
|
||||||
|
}
|
||||||
every { isCompletedExceptionally } returns false
|
every { isCompletedExceptionally } returns false
|
||||||
}
|
}
|
||||||
every { sendMessage(capture(sentMessages)) } returns mockk()
|
every { sendMessage(capture(sentMessages)) } returns mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val api = mockk<DiscordApi> {
|
val api = mockk<DiscordApi> {
|
||||||
|
@ -88,7 +96,9 @@ object TestUtil {
|
||||||
every { getMembersByName(any()) } returns listOf(mockk(relaxed = true) {
|
every { getMembersByName(any()) } returns listOf(mockk(relaxed = true) {
|
||||||
every { id } returns 123
|
every { id } returns 123
|
||||||
every { getRoles(any()) } returns listOf(TEST_ROLE)
|
every { getRoles(any()) } returns listOf(TEST_ROLE)
|
||||||
every { sendMessage(capture(dmEmbeds)) } returns mockk()
|
every { sendMessage(capture(dmEmbeds)) } returns mockk(relaxed = true) {
|
||||||
|
every { isCompletedExceptionally } returns false
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import org.javacord.api.entity.message.embed.EmbedBuilder
|
||||||
class TimeoutFeatureTest : StringSpec({
|
class TimeoutFeatureTest : StringSpec({
|
||||||
TestUtil.prepareTestEnvironment()
|
TestUtil.prepareTestEnvironment()
|
||||||
"should remove and store roles" {
|
"should remove and store roles" {
|
||||||
|
clearTimeouts()
|
||||||
TestUtil.mockMessage("!timeout kageru 99999999").process()
|
TestUtil.mockMessage("!timeout kageru 99999999").process()
|
||||||
Dao.getAllTimeouts().let {
|
Dao.getAllTimeouts().let {
|
||||||
it.size shouldBe 1
|
it.size shouldBe 1
|
||||||
|
|
Loading…
Reference in New Issue
Block a user