Make message processing an extension function
This commit is contained in:
parent
d425687fb5
commit
b9f1c6e540
|
@ -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("<Self> $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) }
|
||||
|
|
|
@ -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<String>()
|
||||
Kagebot.processMessage(mockMessage(content, replies = calls))
|
||||
mockMessage(content, replies = calls).process()
|
||||
calls shouldBe mutableListOf(result)
|
||||
}
|
||||
|
||||
|
|
|
@ -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<String>()
|
||||
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<String>()
|
||||
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<String>()
|
||||
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<String>()
|
||||
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"))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<File>()
|
||||
Kagebot.processMessage(mockMessage("!getConfig", files = calls))
|
||||
mockMessage("!getConfig", files = calls).process()
|
||||
calls.size shouldBe 1
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<EmbedBuilder>()) }
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user