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
|
||||
|
||||
import moe.kageru.kagebot.Util.failed
|
||||
import moe.kageru.kagebot.config.Config
|
||||
import org.javacord.api.entity.message.Message
|
||||
import org.javacord.api.entity.message.MessageAuthor
|
||||
|
@ -30,7 +31,10 @@ object MessageUtil {
|
|||
setTimestampToNow()
|
||||
op()
|
||||
}
|
||||
sendMessage(embed)
|
||||
val sent = sendMessage(embed)
|
||||
if (sent.failed()) {
|
||||
// for logging
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -73,6 +73,11 @@ object Util {
|
|||
try {
|
||||
join()
|
||||
} 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
|
||||
}
|
||||
return isCompletedExceptionally
|
||||
|
|
|
@ -32,8 +32,10 @@ class WelcomeFeature(rawWelcome: RawWelcomeFeature) : MessageFeature, EventFeatu
|
|||
|
||||
override fun handle(message: MessageCreateEvent) {
|
||||
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
|
||||
|
|
|
@ -40,9 +40,15 @@ object TestUtil {
|
|||
return mockk {
|
||||
every { messageContent } returns content
|
||||
every { readableMessageContent } returns content
|
||||
every { channel.sendMessage(capture(replies)) } returns mockk()
|
||||
every { channel.sendMessage(capture(replyEmbeds)) } returns mockk()
|
||||
every { channel.sendMessage(capture(files)) } returns mockk()
|
||||
every { channel.sendMessage(capture(replies)) } returns mockk(relaxed = true) {
|
||||
every { isCompletedExceptionally } returns false
|
||||
}
|
||||
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 { isPrivateMessage } returns false
|
||||
// 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 {
|
||||
return mockk {
|
||||
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) {
|
||||
every { isPresent } returns true
|
||||
every { get() } returns mockk {
|
||||
every { sendMessage(capture(sentEmbeds)) } returns mockk {
|
||||
every { join() } returns mockk()
|
||||
every { sendMessage(capture(sentEmbeds)) } returns mockk(relaxed = true) {
|
||||
every { join() } returns mockk {
|
||||
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> {
|
||||
|
@ -88,7 +96,9 @@ object TestUtil {
|
|||
every { getMembersByName(any()) } returns listOf(mockk(relaxed = true) {
|
||||
every { id } returns 123
|
||||
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({
|
||||
TestUtil.prepareTestEnvironment()
|
||||
"should remove and store roles" {
|
||||
clearTimeouts()
|
||||
TestUtil.mockMessage("!timeout kageru 99999999").process()
|
||||
Dao.getAllTimeouts().let {
|
||||
it.size shouldBe 1
|
||||
|
|
Loading…
Reference in New Issue
Block a user