diff --git a/src/main/kotlin/moe/kageru/kagebot/Kagebot.kt b/src/main/kotlin/moe/kageru/kagebot/Kagebot.kt index 81e9e5e..648a257 100644 --- a/src/main/kotlin/moe/kageru/kagebot/Kagebot.kt +++ b/src/main/kotlin/moe/kageru/kagebot/Kagebot.kt @@ -16,6 +16,9 @@ fun main() { object Kagebot { fun processMessage(event: MessageCreateEvent) { if (event.messageAuthor.isBotUser) { + if (event.messageAuthor.isYourself) { + log.info(" ${event.readableMessageContent}") + } return } for (command in Globals.config.commands) { diff --git a/src/main/kotlin/moe/kageru/kagebot/command/Command.kt b/src/main/kotlin/moe/kageru/kagebot/command/Command.kt index 06fdec4..de47e52 100644 --- a/src/main/kotlin/moe/kageru/kagebot/command/Command.kt +++ b/src/main/kotlin/moe/kageru/kagebot/command/Command.kt @@ -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)) } diff --git a/src/test/kotlin/moe/kageru/kagebot/TestUtil.kt b/src/test/kotlin/moe/kageru/kagebot/TestUtil.kt index 84b2d83..ccd97a2 100644 --- a/src/test/kotlin/moe/kageru/kagebot/TestUtil.kt +++ b/src/test/kotlin/moe/kageru/kagebot/TestUtil.kt @@ -18,7 +18,6 @@ import java.util.* object TestUtil { fun mockMessage( content: String, - author: Long = 1, replies: MutableList = mutableListOf(), replyEmbeds: MutableList = 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()) } } diff --git a/src/test/kotlin/moe/kageru/kagebot/CommandTest.kt b/src/test/kotlin/moe/kageru/kagebot/command/CommandTest.kt similarity index 98% rename from src/test/kotlin/moe/kageru/kagebot/CommandTest.kt rename to src/test/kotlin/moe/kageru/kagebot/command/CommandTest.kt index 08c538f..7c879c1 100644 --- a/src/test/kotlin/moe/kageru/kagebot/CommandTest.kt +++ b/src/test/kotlin/moe/kageru/kagebot/command/CommandTest.kt @@ -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() val mockMessage = mockMessage("!restricted", replies = replies) - every { mockMessage.messageAuthor.asUser() } returns Optional.of(messageableAuthor()) Kagebot.processMessage(mockMessage) replies shouldBe mutableListOf(config.localization.permissionDenied) withLocalization(