Log command executions

This commit is contained in:
kageru 2019-06-15 14:35:17 +02:00
parent d662784d86
commit 3890b2bba9
Signed by: kageru
GPG Key ID: 8282A2BEA4ADA3D2
4 changed files with 19 additions and 6 deletions

View File

@ -16,6 +16,9 @@ fun main() {
object Kagebot {
fun processMessage(event: MessageCreateEvent) {
if (event.messageAuthor.isBotUser) {
if (event.messageAuthor.isYourself) {
log.info("<Self> ${event.readableMessageContent}")
}
return
}
for (command in Globals.config.commands) {

View File

@ -2,6 +2,7 @@ package moe.kageru.kagebot.command
import moe.kageru.kagebot.Globals
import moe.kageru.kagebot.Globals.config
import moe.kageru.kagebot.Log.log
import moe.kageru.kagebot.MessageUtil
import moe.kageru.kagebot.Util.doIf
import moe.kageru.kagebot.config.RawCommand
@ -35,8 +36,10 @@ class Command(cmd: RawCommand) {
if (config.localization.permissionDenied.isNotBlank()) {
message.channel.sendMessage(config.localization.permissionDenied)
}
log.info("Denying command ${this.trigger} to user ${message.messageAuthor.discriminatedName} (ID: ${message.messageAuthor.id})")
return
}
log.info("Executing command ${this.trigger} triggered by user ${message.messageAuthor.discriminatedName} (ID: ${message.messageAuthor.id})")
Globals.commandCounter.incrementAndGet()
this.actions?.run(message, this)
this.response?.let {
@ -45,6 +48,7 @@ class Command(cmd: RawCommand) {
}
fun matches(msg: String) = this.matchType.matches(msg, this)
private fun respond(author: MessageAuthor, response: String) = response.doIf({ it.contains(AUTHOR_PLACEHOLDER) }) {
it.replace(AUTHOR_PLACEHOLDER, MessageUtil.mention(author))
}

View File

@ -18,7 +18,6 @@ import java.util.*
object TestUtil {
fun mockMessage(
content: String,
author: Long = 1,
replies: MutableList<String> = mutableListOf(),
replyEmbeds: MutableList<EmbedBuilder> = mutableListOf(),
isBot: Boolean = false
@ -26,13 +25,18 @@ object TestUtil {
return mockk {
every { messageContent } returns content
every { readableMessageContent } returns content
every { messageAuthor.id } returns author
every { channel.sendMessage(capture(replies)) } returns mockk()
every { channel.sendMessage(capture(replyEmbeds)) } returns mockk()
every { messageAuthor.isBotUser } returns isBot
every { message.canYouDelete() } returns true
every { messageAuthor.isBotOwner } returns false
every { isPrivateMessage } returns false
// We can’t use a nested mock here because other fields of messageAuthor might
// get overwritten by other tests, which would delete a nested mock.
every { messageAuthor.id } returns 1
every { messageAuthor.discriminatedName } returns "testuser#1234"
every { messageAuthor.isBotUser } returns isBot
every { messageAuthor.isYourself } returns isBot
every { messageAuthor.isBotOwner } returns false
every { messageAuthor.asUser() } returns Optional.of(messageableAuthor())
}
}

View File

@ -1,4 +1,4 @@
package moe.kageru.kagebot
package moe.kageru.kagebot.command
import io.kotlintest.matchers.string.shouldContain
import io.kotlintest.shouldBe
@ -6,7 +6,10 @@ import io.kotlintest.specs.StringSpec
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import moe.kageru.kagebot.Globals
import moe.kageru.kagebot.Globals.config
import moe.kageru.kagebot.Kagebot
import moe.kageru.kagebot.TestUtil
import moe.kageru.kagebot.TestUtil.embedToString
import moe.kageru.kagebot.TestUtil.messageableAuthor
import moe.kageru.kagebot.TestUtil.mockMessage
@ -111,7 +114,6 @@ class CommandTest : StringSpec({
) {
val replies = mutableListOf<String>()
val mockMessage = mockMessage("!restricted", replies = replies)
every { mockMessage.messageAuthor.asUser() } returns Optional.of(messageableAuthor())
Kagebot.processMessage(mockMessage)
replies shouldBe mutableListOf(config.localization.permissionDenied)
withLocalization(