Make message processing an extension function
This commit is contained in:
parent
d425687fb5
commit
b9f1c6e540
|
@ -16,18 +16,18 @@ fun main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
object Kagebot {
|
object Kagebot {
|
||||||
fun processMessage(event: MessageCreateEvent) {
|
fun MessageCreateEvent.process() {
|
||||||
if (event.messageAuthor.isBotUser) {
|
if (messageAuthor.isBotUser) {
|
||||||
if (event.messageAuthor.isYourself) {
|
if (messageAuthor.isYourself) {
|
||||||
val loggedMessage =
|
val loggedMessage =
|
||||||
if (event.readableMessageContent.isBlank()) "[embed]" else event.readableMessageContent
|
if (readableMessageContent.isBlank()) "[embed]" else readableMessageContent
|
||||||
Log.info("<Self> $loggedMessage")
|
Log.info("<Self> $loggedMessage")
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for (command in Config.commands) {
|
for (command in Config.commands) {
|
||||||
if (command.matches(event.readableMessageContent)) {
|
if (command.matches(readableMessageContent)) {
|
||||||
command.execute(event)
|
command.execute(this)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ object Kagebot {
|
||||||
Globals.api.disconnect()
|
Globals.api.disconnect()
|
||||||
})
|
})
|
||||||
Log.info("kagebot Mk II running")
|
Log.info("kagebot Mk II running")
|
||||||
Globals.api.addMessageCreateListener { checked { processMessage(it) } }
|
Globals.api.addMessageCreateListener { checked { it.process() } }
|
||||||
Config.features.welcome?.let {
|
Config.features.welcome?.let {
|
||||||
Globals.api.addServerMemberJoinListener {
|
Globals.api.addServerMemberJoinListener {
|
||||||
checked { welcomeUser(it) }
|
checked { welcomeUser(it) }
|
||||||
|
|
|
@ -7,6 +7,7 @@ import io.mockk.Runs
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.just
|
import io.mockk.just
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
|
import moe.kageru.kagebot.Kagebot.process
|
||||||
import moe.kageru.kagebot.config.Config
|
import moe.kageru.kagebot.config.Config
|
||||||
import moe.kageru.kagebot.config.ConfigParser
|
import moe.kageru.kagebot.config.ConfigParser
|
||||||
import moe.kageru.kagebot.config.RawConfig
|
import moe.kageru.kagebot.config.RawConfig
|
||||||
|
@ -83,7 +84,7 @@ object TestUtil {
|
||||||
|
|
||||||
fun testMessageSuccess(content: String, result: String) {
|
fun testMessageSuccess(content: String, result: String) {
|
||||||
val calls = mutableListOf<String>()
|
val calls = mutableListOf<String>()
|
||||||
Kagebot.processMessage(mockMessage(content, replies = calls))
|
mockMessage(content, replies = calls).process()
|
||||||
calls shouldBe mutableListOf(result)
|
calls shouldBe mutableListOf(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import io.kotlintest.specs.StringSpec
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import moe.kageru.kagebot.config.Config
|
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
|
||||||
import moe.kageru.kagebot.TestUtil.embedToString
|
import moe.kageru.kagebot.TestUtil.embedToString
|
||||||
import moe.kageru.kagebot.TestUtil.messageableAuthor
|
import moe.kageru.kagebot.TestUtil.messageableAuthor
|
||||||
|
@ -47,7 +47,7 @@ class CommandTest : StringSpec({
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
) {
|
) {
|
||||||
TestUtil.withReplyContents(expected = listOf(heading, content)) {
|
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()
|
""".trimIndent()
|
||||||
) {
|
) {
|
||||||
val calls = mutableListOf<String>()
|
val calls = mutableListOf<String>()
|
||||||
Kagebot.processMessage(mockMessage("!ping", replies = calls, isBot = true))
|
mockMessage("!ping", replies = calls, isBot = true).process()
|
||||||
calls shouldBe mutableListOf()
|
calls shouldBe mutableListOf()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,7 @@ class CommandTest : StringSpec({
|
||||||
val mockMessage = mockMessage(messageContent)
|
val mockMessage = mockMessage(messageContent)
|
||||||
every { mockMessage.deleteMessage() } returns mockk()
|
every { mockMessage.deleteMessage() } returns mockk()
|
||||||
every { mockMessage.messageAuthor.asUser() } returns Optional.of(messageableAuthor(it))
|
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 replies = mutableListOf<String>()
|
||||||
val mockMessage = mockMessage("!restricted", replies = replies)
|
val mockMessage = mockMessage("!restricted", replies = replies)
|
||||||
Kagebot.processMessage(mockMessage)
|
mockMessage.process()
|
||||||
replies shouldBe mutableListOf(Config.localization.permissionDenied)
|
replies shouldBe mutableListOf(Config.localization.permissionDenied)
|
||||||
withLocalization(
|
withLocalization(
|
||||||
"""
|
"""
|
||||||
|
@ -141,7 +141,7 @@ class CommandTest : StringSpec({
|
||||||
redirectedMessage = "asdja"
|
redirectedMessage = "asdja"
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
) {
|
) {
|
||||||
Kagebot.processMessage(mockMessage)
|
mockMessage.process()
|
||||||
// still one string in there from earlier, nothing new was added
|
// still one string in there from earlier, nothing new was added
|
||||||
replies.size shouldBe 1
|
replies.size shouldBe 1
|
||||||
}
|
}
|
||||||
|
@ -162,7 +162,7 @@ class CommandTest : StringSpec({
|
||||||
val calls = mutableListOf<String>()
|
val calls = mutableListOf<String>()
|
||||||
val mockMessage = mockMessage("!restricted", replies = calls)
|
val mockMessage = mockMessage("!restricted", replies = calls)
|
||||||
every { mockMessage.messageAuthor.isBotOwner } returns true
|
every { mockMessage.messageAuthor.isBotOwner } returns true
|
||||||
Kagebot.processMessage(mockMessage)
|
mockMessage.process()
|
||||||
calls shouldBe mutableListOf("access granted")
|
calls shouldBe mutableListOf("access granted")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,7 +185,7 @@ class CommandTest : StringSpec({
|
||||||
Config.server.getRolesByNameIgnoreCase("testrole")[0]
|
Config.server.getRolesByNameIgnoreCase("testrole")[0]
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
Kagebot.processMessage(mockMessage)
|
mockMessage.process()
|
||||||
calls shouldBe mutableListOf("access granted")
|
calls shouldBe mutableListOf("access granted")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -208,14 +208,14 @@ class CommandTest : StringSpec({
|
||||||
Config.server.getRolesByNameIgnoreCase("testrole")[0]
|
Config.server.getRolesByNameIgnoreCase("testrole")[0]
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Kagebot.processMessage(mockMessage)
|
mockMessage.process()
|
||||||
|
|
||||||
// without the role
|
// without the role
|
||||||
every { mockMessage.messageAuthor.asUser() } returns mockk {
|
every { mockMessage.messageAuthor.asUser() } returns mockk {
|
||||||
every { isPresent } returns true
|
every { isPresent } returns true
|
||||||
every { get().getRoles(any()) } returns emptyList()
|
every { get().getRoles(any()) } returns emptyList()
|
||||||
}
|
}
|
||||||
Kagebot.processMessage(mockMessage)
|
mockMessage.process()
|
||||||
calls shouldBe mutableListOf(Config.localization.permissionDenied, "access granted")
|
calls shouldBe mutableListOf(Config.localization.permissionDenied, "access granted")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -230,7 +230,7 @@ class CommandTest : StringSpec({
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
) {
|
) {
|
||||||
val calls = mutableListOf<String>()
|
val calls = mutableListOf<String>()
|
||||||
Kagebot.processMessage(mockMessage("!dm", replies = calls))
|
mockMessage("!dm", replies = calls).process()
|
||||||
calls shouldBe listOf(Config.localization.permissionDenied)
|
calls shouldBe listOf(Config.localization.permissionDenied)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -252,7 +252,7 @@ class CommandTest : StringSpec({
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
) {
|
) {
|
||||||
val message = "this is a message"
|
val message = "this is a message"
|
||||||
Kagebot.processMessage(mockMessage("!redirect $message"))
|
mockMessage("!redirect $message").process()
|
||||||
calls.size shouldBe 1
|
calls.size shouldBe 1
|
||||||
embedToString(calls[0]) shouldContain "\"$message\""
|
embedToString(calls[0]) shouldContain "\"$message\""
|
||||||
}
|
}
|
||||||
|
@ -271,7 +271,7 @@ class CommandTest : StringSpec({
|
||||||
every { addRole(capture(roles), "Requested via command.") } returns mockk()
|
every { addRole(capture(roles), "Requested via command.") } returns mockk()
|
||||||
}
|
}
|
||||||
every { Config.server.getMemberById(1) } returns Optional.of(user)
|
every { Config.server.getMemberById(1) } returns Optional.of(user)
|
||||||
Kagebot.processMessage(mockMessage("!assign"))
|
mockMessage("!assign").process()
|
||||||
roles shouldBe mutableListOf(Util.findRole("testrole"))
|
roles shouldBe mutableListOf(Util.findRole("testrole"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ package moe.kageru.kagebot.features
|
||||||
|
|
||||||
import io.kotlintest.shouldBe
|
import io.kotlintest.shouldBe
|
||||||
import io.kotlintest.specs.ShouldSpec
|
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
|
||||||
import moe.kageru.kagebot.TestUtil.mockMessage
|
import moe.kageru.kagebot.TestUtil.mockMessage
|
||||||
import moe.kageru.kagebot.TestUtil.withCommands
|
import moe.kageru.kagebot.TestUtil.withCommands
|
||||||
|
@ -17,7 +17,7 @@ class ConfigFeatureTest : ShouldSpec({
|
||||||
feature = "getConfig"
|
feature = "getConfig"
|
||||||
""".trimIndent()) {
|
""".trimIndent()) {
|
||||||
val calls = mutableListOf<File>()
|
val calls = mutableListOf<File>()
|
||||||
Kagebot.processMessage(mockMessage("!getConfig", files = calls))
|
mockMessage("!getConfig", files = calls).process()
|
||||||
calls.size shouldBe 1
|
calls.size shouldBe 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import io.kotlintest.specs.StringSpec
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
import moe.kageru.kagebot.Kagebot
|
import moe.kageru.kagebot.Kagebot.process
|
||||||
import moe.kageru.kagebot.TestUtil
|
import moe.kageru.kagebot.TestUtil
|
||||||
import org.javacord.api.entity.message.embed.EmbedBuilder
|
import org.javacord.api.entity.message.embed.EmbedBuilder
|
||||||
import org.javacord.api.event.message.MessageCreateEvent
|
import org.javacord.api.event.message.MessageCreateEvent
|
||||||
|
@ -16,7 +16,7 @@ class DebugFeatureTest : StringSpec({
|
||||||
"should ignore regular users" {
|
"should ignore regular users" {
|
||||||
val message = TestUtil.mockMessage("!debug")
|
val message = TestUtil.mockMessage("!debug")
|
||||||
every { message.messageAuthor.isBotOwner } returns false
|
every { message.messageAuthor.isBotOwner } returns false
|
||||||
Kagebot.processMessage(message)
|
message.process()
|
||||||
DebugFeature().handle(message)
|
DebugFeature().handle(message)
|
||||||
verify(exactly = 0) { message.channel.sendMessage(any<EmbedBuilder>()) }
|
verify(exactly = 0) { message.channel.sendMessage(any<EmbedBuilder>()) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import io.kotlintest.specs.StringSpec
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import moe.kageru.kagebot.config.Config
|
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
|
||||||
import moe.kageru.kagebot.TestUtil.mockMessage
|
import moe.kageru.kagebot.TestUtil.mockMessage
|
||||||
import moe.kageru.kagebot.TestUtil.withCommands
|
import moe.kageru.kagebot.TestUtil.withCommands
|
||||||
|
@ -36,7 +36,7 @@ class HelpFeatureTest : StringSpec({
|
||||||
val expected = listOf("!ping", "!something")
|
val expected = listOf("!ping", "!something")
|
||||||
val unexpected = listOf("not a prefix", "!prison")
|
val unexpected = listOf("not a prefix", "!prison")
|
||||||
withReplyContents(expected = expected, unexpected = unexpected) { replies ->
|
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]
|
Config.server.getRolesByNameIgnoreCase("testrole")[0]
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
Kagebot.processMessage(message)
|
message.process()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user