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

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

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

@ -18,7 +18,6 @@ import java.util.*
object TestUtil { object TestUtil {
fun mockMessage( fun mockMessage(
content: String, content: String,
author: Long = 1,
replies: MutableList<String> = mutableListOf(), replies: MutableList<String> = mutableListOf(),
replyEmbeds: MutableList<EmbedBuilder> = mutableListOf(), replyEmbeds: MutableList<EmbedBuilder> = mutableListOf(),
isBot: Boolean = false isBot: Boolean = false
@ -26,13 +25,18 @@ object TestUtil {
return mockk { return mockk {
every { messageContent } returns content every { messageContent } returns content
every { readableMessageContent } returns content every { readableMessageContent } returns content
every { messageAuthor.id } returns author
every { channel.sendMessage(capture(replies)) } returns mockk() every { channel.sendMessage(capture(replies)) } returns mockk()
every { channel.sendMessage(capture(replyEmbeds)) } returns mockk() every { channel.sendMessage(capture(replyEmbeds)) } returns mockk()
every { messageAuthor.isBotUser } returns isBot
every { message.canYouDelete() } returns true every { message.canYouDelete() } returns true
every { messageAuthor.isBotOwner } returns false
every { isPrivateMessage } 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())
} }
} }

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