diff --git a/src/main/kotlin/moe/kageru/kagebot/Kagebot.kt b/src/main/kotlin/moe/kageru/kagebot/Kagebot.kt index cd2ddf2..c652c36 100644 --- a/src/main/kotlin/moe/kageru/kagebot/Kagebot.kt +++ b/src/main/kotlin/moe/kageru/kagebot/Kagebot.kt @@ -16,18 +16,18 @@ fun main() { } object Kagebot { - fun processMessage(event: MessageCreateEvent) { - if (event.messageAuthor.isBotUser) { - if (event.messageAuthor.isYourself) { + fun MessageCreateEvent.process() { + if (messageAuthor.isBotUser) { + if (messageAuthor.isYourself) { val loggedMessage = - if (event.readableMessageContent.isBlank()) "[embed]" else event.readableMessageContent + if (readableMessageContent.isBlank()) "[embed]" else readableMessageContent Log.info(" $loggedMessage") } return } for (command in Config.commands) { - if (command.matches(event.readableMessageContent)) { - command.execute(event) + if (command.matches(readableMessageContent)) { + command.execute(this) break } } @@ -60,7 +60,7 @@ object Kagebot { Globals.api.disconnect() }) Log.info("kagebot Mk II running") - Globals.api.addMessageCreateListener { checked { processMessage(it) } } + Globals.api.addMessageCreateListener { checked { it.process() } } Config.features.welcome?.let { Globals.api.addServerMemberJoinListener { checked { welcomeUser(it) } diff --git a/src/test/kotlin/moe/kageru/kagebot/TestUtil.kt b/src/test/kotlin/moe/kageru/kagebot/TestUtil.kt index 5f108cb..c69fb6d 100644 --- a/src/test/kotlin/moe/kageru/kagebot/TestUtil.kt +++ b/src/test/kotlin/moe/kageru/kagebot/TestUtil.kt @@ -7,6 +7,7 @@ import io.mockk.Runs import io.mockk.every import io.mockk.just import io.mockk.mockk +import moe.kageru.kagebot.Kagebot.process import moe.kageru.kagebot.config.Config import moe.kageru.kagebot.config.ConfigParser import moe.kageru.kagebot.config.RawConfig @@ -83,7 +84,7 @@ object TestUtil { fun testMessageSuccess(content: String, result: String) { val calls = mutableListOf() - Kagebot.processMessage(mockMessage(content, replies = calls)) + mockMessage(content, replies = calls).process() calls shouldBe mutableListOf(result) } diff --git a/src/test/kotlin/moe/kageru/kagebot/command/CommandTest.kt b/src/test/kotlin/moe/kageru/kagebot/command/CommandTest.kt index c5ad97c..1ab3b06 100644 --- a/src/test/kotlin/moe/kageru/kagebot/command/CommandTest.kt +++ b/src/test/kotlin/moe/kageru/kagebot/command/CommandTest.kt @@ -6,7 +6,7 @@ import io.kotlintest.specs.StringSpec import io.mockk.every import io.mockk.mockk import moe.kageru.kagebot.config.Config -import moe.kageru.kagebot.Kagebot +import moe.kageru.kagebot.Kagebot.process import moe.kageru.kagebot.TestUtil import moe.kageru.kagebot.TestUtil.embedToString import moe.kageru.kagebot.TestUtil.messageableAuthor @@ -47,7 +47,7 @@ class CommandTest : StringSpec({ """.trimIndent() ) { TestUtil.withReplyContents(expected = listOf(heading, content)) { - Kagebot.processMessage(mockMessage("!embed", replyEmbeds = it)) + mockMessage("!embed", replyEmbeds = it).process() } } } @@ -95,7 +95,7 @@ class CommandTest : StringSpec({ """.trimIndent() ) { val calls = mutableListOf() - Kagebot.processMessage(mockMessage("!ping", replies = calls, isBot = true)) + mockMessage("!ping", replies = calls, isBot = true).process() calls shouldBe mutableListOf() } } @@ -113,7 +113,7 @@ class CommandTest : StringSpec({ val mockMessage = mockMessage(messageContent) every { mockMessage.deleteMessage() } returns mockk() every { mockMessage.messageAuthor.asUser() } returns Optional.of(messageableAuthor(it)) - Kagebot.processMessage(mockMessage) + mockMessage.process() } } } @@ -131,7 +131,7 @@ class CommandTest : StringSpec({ ) { val replies = mutableListOf() val mockMessage = mockMessage("!restricted", replies = replies) - Kagebot.processMessage(mockMessage) + mockMessage.process() replies shouldBe mutableListOf(Config.localization.permissionDenied) withLocalization( """ @@ -141,7 +141,7 @@ class CommandTest : StringSpec({ redirectedMessage = "asdja" """.trimIndent() ) { - Kagebot.processMessage(mockMessage) + mockMessage.process() // still one string in there from earlier, nothing new was added replies.size shouldBe 1 } @@ -162,7 +162,7 @@ class CommandTest : StringSpec({ val calls = mutableListOf() val mockMessage = mockMessage("!restricted", replies = calls) every { mockMessage.messageAuthor.isBotOwner } returns true - Kagebot.processMessage(mockMessage) + mockMessage.process() calls shouldBe mutableListOf("access granted") } } @@ -185,7 +185,7 @@ class CommandTest : StringSpec({ Config.server.getRolesByNameIgnoreCase("testrole")[0] ) }) - Kagebot.processMessage(mockMessage) + mockMessage.process() calls shouldBe mutableListOf("access granted") } } @@ -208,14 +208,14 @@ class CommandTest : StringSpec({ Config.server.getRolesByNameIgnoreCase("testrole")[0] ) } - Kagebot.processMessage(mockMessage) + mockMessage.process() // without the role every { mockMessage.messageAuthor.asUser() } returns mockk { every { isPresent } returns true every { get().getRoles(any()) } returns emptyList() } - Kagebot.processMessage(mockMessage) + mockMessage.process() calls shouldBe mutableListOf(Config.localization.permissionDenied, "access granted") } } @@ -230,7 +230,7 @@ class CommandTest : StringSpec({ """.trimIndent() ) { val calls = mutableListOf() - Kagebot.processMessage(mockMessage("!dm", replies = calls)) + mockMessage("!dm", replies = calls).process() calls shouldBe listOf(Config.localization.permissionDenied) } } @@ -252,7 +252,7 @@ class CommandTest : StringSpec({ """.trimIndent() ) { val message = "this is a message" - Kagebot.processMessage(mockMessage("!redirect $message")) + mockMessage("!redirect $message").process() calls.size shouldBe 1 embedToString(calls[0]) shouldContain "\"$message\"" } @@ -271,7 +271,7 @@ class CommandTest : StringSpec({ every { addRole(capture(roles), "Requested via command.") } returns mockk() } every { Config.server.getMemberById(1) } returns Optional.of(user) - Kagebot.processMessage(mockMessage("!assign")) + mockMessage("!assign").process() roles shouldBe mutableListOf(Util.findRole("testrole")) } } diff --git a/src/test/kotlin/moe/kageru/kagebot/features/ConfigFeatureTest.kt b/src/test/kotlin/moe/kageru/kagebot/features/ConfigFeatureTest.kt index b880afd..af1ee2c 100644 --- a/src/test/kotlin/moe/kageru/kagebot/features/ConfigFeatureTest.kt +++ b/src/test/kotlin/moe/kageru/kagebot/features/ConfigFeatureTest.kt @@ -2,7 +2,7 @@ package moe.kageru.kagebot.features import io.kotlintest.shouldBe import io.kotlintest.specs.ShouldSpec -import moe.kageru.kagebot.Kagebot +import moe.kageru.kagebot.Kagebot.process import moe.kageru.kagebot.TestUtil import moe.kageru.kagebot.TestUtil.mockMessage import moe.kageru.kagebot.TestUtil.withCommands @@ -17,7 +17,7 @@ class ConfigFeatureTest : ShouldSpec({ feature = "getConfig" """.trimIndent()) { val calls = mutableListOf() - Kagebot.processMessage(mockMessage("!getConfig", files = calls)) + mockMessage("!getConfig", files = calls).process() calls.size shouldBe 1 } } diff --git a/src/test/kotlin/moe/kageru/kagebot/features/DebugFeatureTest.kt b/src/test/kotlin/moe/kageru/kagebot/features/DebugFeatureTest.kt index 0b434a0..8c47326 100644 --- a/src/test/kotlin/moe/kageru/kagebot/features/DebugFeatureTest.kt +++ b/src/test/kotlin/moe/kageru/kagebot/features/DebugFeatureTest.kt @@ -4,7 +4,7 @@ import io.kotlintest.specs.StringSpec import io.mockk.every import io.mockk.mockk import io.mockk.verify -import moe.kageru.kagebot.Kagebot +import moe.kageru.kagebot.Kagebot.process import moe.kageru.kagebot.TestUtil import org.javacord.api.entity.message.embed.EmbedBuilder import org.javacord.api.event.message.MessageCreateEvent @@ -16,7 +16,7 @@ class DebugFeatureTest : StringSpec({ "should ignore regular users" { val message = TestUtil.mockMessage("!debug") every { message.messageAuthor.isBotOwner } returns false - Kagebot.processMessage(message) + message.process() DebugFeature().handle(message) verify(exactly = 0) { message.channel.sendMessage(any()) } } diff --git a/src/test/kotlin/moe/kageru/kagebot/features/HelpFeatureTest.kt b/src/test/kotlin/moe/kageru/kagebot/features/HelpFeatureTest.kt index 45b620f..bc831c0 100644 --- a/src/test/kotlin/moe/kageru/kagebot/features/HelpFeatureTest.kt +++ b/src/test/kotlin/moe/kageru/kagebot/features/HelpFeatureTest.kt @@ -4,7 +4,7 @@ import io.kotlintest.specs.StringSpec import io.mockk.every import io.mockk.mockk import moe.kageru.kagebot.config.Config -import moe.kageru.kagebot.Kagebot +import moe.kageru.kagebot.Kagebot.process import moe.kageru.kagebot.TestUtil import moe.kageru.kagebot.TestUtil.mockMessage import moe.kageru.kagebot.TestUtil.withCommands @@ -36,7 +36,7 @@ class HelpFeatureTest : StringSpec({ val expected = listOf("!ping", "!something") val unexpected = listOf("not a prefix", "!prison") withReplyContents(expected = expected, unexpected = unexpected) { replies -> - Kagebot.processMessage(mockMessage("!help", replyEmbeds = replies)) + mockMessage("!help", replyEmbeds = replies).process() } } } @@ -51,7 +51,7 @@ class HelpFeatureTest : StringSpec({ Config.server.getRolesByNameIgnoreCase("testrole")[0] ) }) - Kagebot.processMessage(message) + message.process() } } }